使用 SpringMVCs viewResolvers 解析不在 Web 应用程序根 JSP 目录中的 JSP 文件的路径的简单方法是什么?例如,假设我们有以下 Web 应用程序结构:
web-app
|-WEB-INF
|-jsp
|-secure
|-admin.jsp
|-admin2.jsp
index.jsp
login.jsp
我想使用一些开箱即用的组件来解析 jsp 根文件夹和安全子目录中的 JSP 文件。我有一个
*-servlet.xml
文件定义:开箱即用,
InternalResourceViewResolver
: <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
处理程序映射:
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/index.htm">urlFilenameViewController</prop>
<prop key="/login.htm">urlFilenameViewController</prop>
<prop key="/secure/**">urlFilenameViewController</prop>
</props>
</property>
</bean>
开箱即用
UrlFilenameViewController
Controller :<bean id="urlFilenameViewController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController">
</bean>
我遇到的问题是无法解决对安全目录中 JSP 的请求,因为
jspViewResolver
只有一个前缀定义为 /jsp/
而不是 /jsp/secure/
.有没有办法处理这样的子目录?我更愿意保留这种结构,因为我也在尝试使用 Spring Security,并且将所有安全页面放在一个子目录中是一个很好的方法。
可能有一种简单的方法可以实现这一点,但我是 Spring 和 Spring MVC 框架的新手,因此任何指针都将不胜感激。
最佳答案
我无法找到我所问问题的确切解决方案,但我确实有适合我特定要求的解决方法。问题似乎在于hander映射。如果按照帖子中的示例进行指定,则对安全文件夹中页面的任何请求都会导致在 /WEB-INF/JSP/
中定位实际 JSP 文件的尝试失败。文件夹,当然实际文件位于 /WEB-INF/jsp/secure/
.
但是,如果像这样指定:
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/login.htm">loginFormController</prop>
<prop key="**/*.htm">urlFilenameViewController</prop>
</props>
</property>
</bean>
然后所有页面都正确解析。对
/login.html
的请求将转到特定的表单 Controller ,但会找到对所有其他页面的请求,无论它们是在根 JSP 目录中还是在子目录中都会被找到。对我来说,这很好,因为我真正想要的是一种避免为应用程序中的每个页面指定 Controller 的方法(嗯……也许我应该在第一篇文章中说明这一点——也许有更好的方法来无论如何都要这样做(?))。 **/*.htm
作为一个包罗万象的案例,我想要由不同 Controller 处理的任何页面都可以在此属性上方显式指定,如 /login.htm
所示。 .
关于spring-mvc - Spring MVC : How to resolve the path to subdirectories of the root 'JSP' folder in a web application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1785988/