Jetty升级后,Spring MVC在WEB-INF文件夹中找不到jspx文件

时间:2017-01-25 17:18:11

标签: java jsp spring-mvc jetty

我正在使用Jetty对我的应用程序进行开发测试,通过在IntelliJ IDEA中运行的嵌入式jetty-starter。我想从8.0.4.v20111024升级到9.4.0.v20161208,但我的jspx文件有问题。我还更新了jspjstl个依赖项。

根据标准的Spring MVC方式,我的jspx文件保存在src\main\webapp\WEB-INF文件夹中。

升级后,无法找到此文件夹中的文件,尝试访问它们会导致404。

我的src\main\webapp文件夹中有一个index.jspx,访问得很好。当尝试访问WEB-INF文件夹中的jspx时,它会提供404,然后找不到我的404.jspx,它也位于WEB-INF文件夹中,并定义为error-page in web.xml。当我将404.jspx移至webapp文件夹,并将error-page映射更改为

<error-page>
  <error-code>404</error-code>
  <location>/jspx/404.jspx</location>
</error-page>

它有效。同样,如果我的controller设置为在WEB-INF - 文件夹中返回jspx,则会失败,但如果我将设置更改为

  <bean id="jspViewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/jspx/" />
    <property name="suffix" value=".jspx" />
  </bean>

WEB-INF/移除prefix并移动我的jspx,它可以正常工作。

我不确定从哪里开始查看,问题是JettySpring MVC还是jsp / jstl。有什么建议?

1 个答案:

答案 0 :(得分:1)

只有符号链接文件才会出现。

更改了允许符号链接/别名的方式
context.getInitParams().put("org.eclipse.jetty.servlet.Default.aliases", "true");

context.addAliasCheck(new AllowSymLinkAliasChecker());

contextWebAppContext