1

私はサーブレットが初めてです。ワイルドカード (*)を使用して URL をマップしようとしていますが、期待どおりに機能しません。

これが私のサーブレットクラスです。

@WebServlet(urlPatterns = {"/A/*"})
public class TestServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().write("Working...");
    }
}

上記のサーブレットは、example.com/Aexample.com/A/carの両方で機能しています。example.com/A/whatEverである 2 番目のオプションに対してのみサーブレットを動作させたいと考えています。どうやってやるの ?

簡単に言えば、 example.com/Aの後に何かがある場合は、サーブレットを操作したいだけです。

どんな助けでも大歓迎です。

4

1 に答える 1

2

が null またはまたはに等しい場合はHttpServletResponse#sendError()SC_NOT_FOUND(404)で呼び出すだけです。HttpServletRequest#getPathInfo()/

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String pathInfo = request.getPathInfo();

    if (pathInfo == null || pathInfo.isEmpty() || pathInfo.equals("/")) {
        response.sendError(HttpServletResponse.SC_NOT_FOUND);
        return;
    }

    // ... (continue)
}
于 2015-08-15T06:38:17.470 に答える