我有一个servlet作为前端控制器.
@WebServlet("/*")
Run Code Online (Sandbox Code Playgroud)
但是,这也处理CSS和图像文件.我怎么能阻止这个?
Bal*_*usC 19
你有2个选择:
使用更具体的URL模式(如/app/*或)*.do,然后让所有页面请求与此URL模式匹配.另请参见设计模式基于Web的应用程序
与1相同,但您希望隐藏请求URL中的servlet映射; 然后,您应该将所有静态资源放在一个公共文件夹(例如/static或)中,/resources并创建一个过滤器,用于检查请求URL是否与其不匹配,然后转发到servlet.这是一个假设您的控制器servlet是a @WebServlet("/app/*")并且过滤器是a @WebFilter("/*")并且所有静态资源都在/resources文件夹中的示例.
HttpServletRequest req = (HttpServletRequest) request;
String path = req.getRequestURI().substring(req.getContextPath().length());
if (path.startsWith("/resources/")) {
chain.doFilter(request, response); // Goes to default servlet.
} else {
request.getRequestDispatcher("/app" + path).forward(request, response); // Goes to your controller.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10091 次 |
| 最近记录: |