1

一度に 2 つのことを実行しようとしていますが、両方を実行できる答えが見つからないようです。

私はこれを試しています:

/user/{parameter}で終わる URLを、パラメーターにアクセスできる JSP ページ user.jsp にマップしたいと考えています。

このメソッドを使用して、web.xml ファイルから JSP にパラメーターを渡す方法を見つけました。

<init-param>
<param-name>someParam</param-name>
<param-value>itsValue</param-value>
</init-param>

そして、URL フィルターを作成して Java サーブレットにマップする方法を見つけました。

必要なのは組み合わせです。また、サーブレットに URL パラメーターを渡す際に見つけたものもあまり詳細ではありませんでした。そのため、それに関する良いリファレンスも大歓迎です。

4

2 に答える 2

4

/user/{parameter} で終わる URL を、パラメーターにアクセスできる JSP ページ user.jsp にマップしたいと考えています。

サーブレットをマップし、パス情報を抽出するために/user/*使用します。HttpServletRequest#getPathInfo()

例えば

@WebServlet("/user/*")
public class UserServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String pathInfo = request.getPathInfo(); // "/{parameter}"
        // ...
        request.getRequestDispatcher("/WEB-INF/user.jsp").forward(request, response);
    }

}

基本的にはそれだけです。and/orのような通常のString方法を使用して、パス情報を使用可能な部分に分割します。substring()split()

于 2013-02-04T01:42:14.167 に答える
1

base-url サーブレットを使用して URL を解析し、適切な JSP への条件付きサーブレット転送を実行します。

request.getRequestDispatcher().forward(JSPurl)

URL ブランチがあるとします/sales/。この URL ブランチの下で、次の URL が によって処理されることを許可します/implemented/usersales.jsp

  • /sales/liquour/users/{地域}
  • /sales/liquour/soft/users/{地域}
  • /sales/toiletries/users/{タイプ}

および次の URL によってサービスが提供されます/implemented/products.jsp - /sales/groceries/products/{section} - /sales/groceries/meat/products/{region} - /sales/groceries/vegetables/beans/products/{region}

サーブレット クラス org.myorg.SalesHandler の web.xml サーブレット マッピングを /sales/ にマップします。

org.myorg.SalesHandler サーブレット クラスのサービス メソッド オーバーライドで、URL パターンを分析し (regexp などを使用)、次を使用して条件付きでリクエストを転送します。

request.getRequestDispatcher().forward(JSPurl)

JAX-RS

しかし、jax-rs があるのに、なぜそんなことをするのでしょうか?

JAX-RS サービスから JSP に転送する方法は? .

JAX-RS は最初は難しそうに見えるかもしれませんが、実際には非常に単純で直感的に実装できます。

于 2013-02-04T01:22:44.310 に答える