【发布时间】:2018-02-22 15:13:37
【问题描述】:
我在 Spring Boot 应用程序中有一个控制器
@Controller
public class MyController {
@RequestMapping("/vues/*.jsp")
public String views(HttpServletRequest request) {
return ((String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE)).substring(1);
}
}
在application.properties
server.context-path=/myapp
spring.mvc.view.prefix=/WEB-INF/myapp/
目标是将我的所有 jsp 发送到 WEB-INF/myapp/vues/ 目录并使用 .jsp URL 保持旧应用程序的确切功能
我的应用应该是这样工作的:
用户拨打
http://myapp/vues/page.jsp我的应用收到调用并在我的控制器中找到处理程序,因为 URL 与 RequestMapping url 模式匹配
我的处理程序返回
vues/pages.jspSpring Boot 添加
/WEB-INF/myapp/找到好的JSP文件
我已经开发了几个完美运行的 Spring Boot 应用程序,使用 JSP 等。但在这种情况下,以 JSP 结尾的 url 模式似乎不起作用。
我在 application.properties 中使用@RequestMapping("/vues/*")、spring.mvc.view.suffix=.jsp 尝试在同一个应用程序中调用相同的 url,但最后没有 .jsp,它可以工作。
是否有解决方案配置 Spring Boot 以通过 RequestMapping 接受 *.jsp?
注意:我看到很多帖子都在谈论这个主题,但没有一个回答这个问题
更新:我继续开发没有结束 jsp,但在我介绍的代码中,有对 response.sendRedirect("../vues/view1"); 或 request.getRequestDispatcher("../vues/view1.jsp") 和 request.getRequestURI().endsWith("/vues/view1.jsp"); 的调用。一切似乎都有些混乱。我知道(因为它在过去已经完成了!)是否可以管理以.jsp 结尾的 URL。为什么这不是更受欢迎?为什么在springboot中会出现这样的问题?我必须编辑 web.xml 文件来管理它吗?
【问题讨论】:
标签: java spring jsp spring-boot