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

时间:2011-01-25 07:35:09

标签: java jsp servlets

阐述这个:

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

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

/test

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

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

/index.jsp

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

如何做到这一点?

1 个答案:

答案 0 :(得分:3)

将您的控制器servlet映射到更具体的url-pattern /controller/* Filter,并创建一个映射到/*的{​​{1}},并在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.
}