Spring MVC:如何解析Web应用程序中根"JSP"文件夹的子目录的路径

chr*_*leu 10 spring-mvc

使用SpringMVCs viewResolvers解析不在Web应用程序的根JSP目录中的JSP文件的路径的简单方法是什么?例如,假设我们有以下Web应用程序结构:

web-app
  |-WEB-INF
    |-jsp
      |-secure
        |-admin.jsp
        |-admin2.jsp
      index.jsp
      login.jsp
Run Code Online (Sandbox Code Playgroud)

我想使用一些开箱即用的组件来解析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>
Run Code Online (Sandbox Code Playgroud)

处理程序映射:

<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>
Run Code Online (Sandbox Code Playgroud)

一个开箱即用的UrlFilenameViewController控制器:

<bean id="urlFilenameViewController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController">
</bean>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是无法解析对安全目录中的JSP的请求,因为jspViewResolver只有前缀定义为/jsp/和不定义/jsp/secure/.

有办法处理像这样的子目录吗?我宁愿保留这种结构,因为我也试图利用Spring Security并在子目录中拥有所有安全页面是一种很好的方法.

可能有一种简单的方法来实现这一点,但我是Spring和Spring MVC框架的新手,所以任何指针都会受到赞赏.

Dav*_*itz 0

您需要按如下方式设置该属性:

<property name="prefix" value="/WEB-INF/jsp/"/>
Run Code Online (Sandbox Code Playgroud)

然后就可以访问URI了secure/admin1.jsp