【问题标题】:Resolve a URL request containing .jsp in Spring在 Spring 中解析包含 .jsp 的 URL 请求
【发布时间】:2015-02-18 19:19:20
【问题描述】:

我创建了一个 Spring Web MVC 项目。我想在 url 中处理带有 .jsp 的请求,这样所有在 URL 中带有 .jsp 的请求都由同一个控制器处理。

以下是我在 web.xml 中使用的 url 模式

<servlet-mapping>
        <servlet-name>project</servlet-name>
        <url-pattern>/</url-pattern>
</servlet-mapping>

Controller中的注解是这样的

@RequestMapping("/welcome")

有了这个我可以解析http://localhost:8080/project/welcome形式的URL

但不是这个:http://localhost:8080/project/welcome.jsp

【问题讨论】:

    标签: java spring jsp spring-mvc


    【解决方案1】:

    这对于 Spring MVC 控制器来说是一个非常少见的要求,但 Spring 是一个非常通用的工具。

    你可以试试这个(未经测试...):

    @RequestMapping("/{name}.jsp")
    public ModelAndView jspHandler(@PathVariable("name") String name) {
    ...
    

    控制器将获取所有*.jsp 请求,您将在name 变量中找到调用它的真实名称

    【讨论】:

      【解决方案2】:

      你可以用这个:

      @RequestMapping(value={"/welcome","/welcome.jsp"})
      

      【讨论】:

      • 这可行,但我想做的是为所有类型的 .jsp 请求运行该特定控制器。即localhost:8080/project/abc.jsp也应该被处理。
      • 你也可以使用正则表达式来实现。
      【解决方案3】:

      使用下面的技巧很容易做到

      在控制器中添加以下代码

      @RequestMapping("/{jspName}.jsp")
           public String allRequestProcess(@PathVariable("jspName") String jspName) {
              System.out.println("JSP Page Name : " + jspName);
           }
      

      但是很难在一个控制器中处理每个这样的请求。 尽量避免这种情况。最好使用 .jsp 以外的其他文件

      【讨论】:

        猜你喜欢
        • 2011-10-21
        • 1970-01-01
        • 2019-05-01
        • 2017-08-27
        • 1970-01-01
        • 1970-01-01
        • 2015-07-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多