有时候想直接访问一个静态页面,如account.html, 验证样式,但必须要在Controller中添加一个方法,如下所示:
@RequestMapping(value = "/account", method = RequestMethod.GET)
public ModelAndView viewAccount() {
return new ModelAndView("account");
}
无可否认非常麻烦,并且还需要重启web服务器。
尝试在interceptor中处理此逻辑,即如果url中包含static参数且值为true,直接访问url中提供的path,如下所示:
if ("true".equals(request.getParameter("static"))) { // 静态页面
String path = request.getParameter("path");
request.getRequestDispatcher(path).include(request, response);
return false;
}
但是不行,报404错误,且有如下的Warn日志输出
WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/test.html] in DispatcherServlet with name
该如何跳过DispatcherServlet呢? 或者可以在Interceptor中动态添加一个RequestMapping?
@RequestMapping(value = "/static/{html}")
...
return "/static"+html;
springmvc的路由支持占位符啊,这样通配下就好啊
很方便啊
谢谢! 其实我想知道如何得到HandleMapping,并能动态往里添加RequestMapping。
现在是按照你的建议来做的,写了一个专门的Controller, 方法如下:
@RequestMapping(value = {"{path1:\\w+}/{path2:\\w+}"}, method = RequestMethod.GET)
public ModelAndView index(@PathVariable("path1") String path1, @PathVariable("path2") String path2) {
ModelAndView mv = new ModelAndView(path1 + "/" + path2);
return mv;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。