【问题标题】:RequestMapping URL pattern ending with jsp以 jsp 结尾的 RequestMapping URL 模式
【发布时间】: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 保持旧应用程序的确切功能

我的应用应该是这样工作的:

  1. 用户拨打http://myapp/vues/page.jsp

  2. 我的应用收到调用并在我的控制器中找到处理程序,因为 URL 与 RequestMapping url 模式匹配

  3. 我的处理程序返回vues/pages.jsp

  4. Spring 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


    【解决方案1】:

    您需要在一类配置中启用默认 servlet。你可以这样做:

    @配置 @EnableWebMvc

    public class MvcConfiguration extends WebMvcConfigurerAdapter{
    @Bean
    public ViewResolver getViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/");
        resolver.setSuffix(".html");
        return resolver;
    }
    
    @Override
    public void configureDefaultServletHandling(
            DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }    
    

    }

    在此之后,您可以使用 @RequestMapping("/some-mapping") 而不指定 .jsp 终止。

    【讨论】:

    • 抱歉,我需要完全相反的内容。我的客户会调用以 .jsp 结尾的 URL。所以我需要@RequestMapping(".../.jsp") 才能工作;或者至少我需要我的应用程序在客户端调用 URL 以 .jsp 结尾时做出反应
    猜你喜欢
    • 2011-11-09
    • 2010-10-02
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2016-08-29
    • 2015-05-02
    • 2016-08-05
    • 1970-01-01
    相关资源
    最近更新 更多