我正在使用Jetty对我的应用程序进行开发测试,通过在IntelliJ IDEA中运行的嵌入式jetty-starter。我想从8.0.4.v20111024
升级到9.4.0.v20161208
,但我的jspx文件有问题。我还更新了jsp
和jstl
个依赖项。
根据标准的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,它可以正常工作。
我不确定从哪里开始查看,问题是Jetty
,Spring MVC
还是jsp
/ jstl
。有什么建议?
答案 0 :(得分:1)
只有符号链接文件才会出现。
从
更改了允许符号链接/别名的方式context.getInitParams().put("org.eclipse.jetty.servlet.Default.aliases", "true");
到
context.addAliasCheck(new AllowSymLinkAliasChecker());
context
是WebAppContext
。