进一步解释:
我将一个servlet或过滤器映射到“/*”
现在,如果我访问类似于以下的url:
/test
那么这个请求将会被发送到servlet(这是可以的)
但如果我访问像下面这样的url:
/index.jsp
这也会被传递给servlet,我不想要这种行为,我希望index.jsp被处理为jsp。
怎么做呢?
将控制器servlet映射到更具体的url-pattern
,例如/controller/*
,并创建一个过滤器Filter
,该过滤器映射到/*
,并在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.
}
<dispatcher>FORWARD</dispatcher>
调用过滤器。 - BalusC/static
或/resources
开头,然后在if
语句中添加额外的检查。 - BalusC