是否可以将servlet映射到/*而不覆盖JSP处理

Bas*_*usa 5 java jsp servlets

阐述这个:

我将servlet或过滤器映射到"/*"

现在,如果我访问的网址如下:

/test
Run Code Online (Sandbox Code Playgroud)

然后这将被定向到servlet(没关系)

但是如果我访问的网址如下:

/index.jsp
Run Code Online (Sandbox Code Playgroud)

这也将指向servlet,我不想要这种行为,我想要的是将index.jsp作为jsp处理.

如何才能做到这一点?

Bal*_*usC 3

将您的控制器 servlet 映射到更具体的url-pattern类似方法上/controller/*,并创建一个Filter映射到的控制器 servlet /*,其大致类似于以下doFilter()方法。

String uri = ((HttpServletRequest) request).getRequestURI();
if (uri.endsWith(".jsp")) {
    chain.doFilter(request, response); // Just let it go. The container's builtin JspServlet will pickup this.
} else {
    request.getRequestDispatcher("/controller" + uri).forward(request, response); // Goes to controller servlet.
}
Run Code Online (Sandbox Code Playgroud)