【问题标题】:Server looks for jsp in the wrong directory Spring MVC + Tomcat服务器在错误的目录中寻找jsp Spring MVC + Tomcat
【发布时间】:2018-06-26 20:42:13
【问题描述】:

在我的 Spring MVC 应用程序中,我有下一个 ViewResolver:

 @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("WEB-INF/view/");
        resolver.setSuffix(".jsp");
        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;
    }

我有两种方法的控制器:

@Controller
@RequestMapping("/test")
public class CheckPageController {

    @RequestMapping(method = RequestMethod.GET)
    public String test() {
        return "myview";
    }

    @RequestMapping(method = RequestMethod.GET, value = "/testagain")
        public String anotherTest() {
        return "myview";
    }
}

我的 .jsp 文件位于 WEB-INF/view 目录中
当我去/test时,服务器完美打开myview.jsp
当我转到/test/testagain 时,服务器显示下一个:

Message /test/WEB-INF/view/myview.jsp
Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

为什么在这条路径中寻找myview.jsp? 为什么路径以/test开头?

【问题讨论】:

    标签: java spring-mvc jsp tomcat


    【解决方案1】:

    只需将resolver.setPrefix("WEB-INF/view/"); 更改为resolver.setPrefix("/WEB-INF/view/");

    因为如果您之前没有添加斜杠,那么它将在应用程序的同一目录中搜索,并且显然不会找到资源。所以它不会工作。

    【讨论】:

      【解决方案2】:

      应该是

      resolver.setPrefix("/WEB-INF/view/");
      

      为什么?

      UrlBasedViewResolverInternalResourceViewResolver 的父级,将视图的 url 设置为:

      AbstractUrlBasedView view = (AbstractUrlBasedView) BeanUtils.instantiateClass(getViewClass());    
      view.setUrl(getPrefix() + viewName + getSuffix());
      

      这是DispatcherServlet 将转发到的url

      由于您没有前导 /,因此您的转发 url 是相对于当前 url 的,它是不存在的 /test/WEB-INF/view/myview.jsp

      推荐阅读:What is the purpose of leading slash in HTML URLs

      【讨论】:

      • 感谢详细解释,我明白了
      猜你喜欢
      • 2015-11-21
      • 1970-01-01
      • 2012-07-30
      • 1970-01-01
      • 2016-04-28
      • 2020-03-31
      • 2018-01-09
      • 2014-12-05
      • 2018-01-14
      相关资源
      最近更新 更多