春季3中的静态HTML文件问题

时间:2012-03-20 04:13:21

标签: spring spring-mvc spring-security

我都是,

我有一个使用基于角色的安全性的spring应用程序。应用程序工作正常,我只需要介绍一些静态HTML页面,这些页面也将在同一场战争中托管。因此,如果www.myapp.com/abc/work.jsp是我的安全页面,那么www.myapp.com/home.htm应该显示静态html页面。我已经合并了HTML文件,但问题是我在www.myapp.com/home.htm上获得404,www.myapp.com / abc / work.jsp工作正常。

web.xml -

<display-name>guru</display-name>
      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/app-security-config.xml</param-value>
    </context-param>

    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>
            org.springframework.web.filter.DelegatingFilterProxy
        </filter-class>
    </filter>

    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <servlet>
       <servlet-name>dispatcher</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

  <welcome-file-list>
    <welcome-file>/home.htm</welcome-file>
  </welcome-file-list>

我的app-security-config.xml

<http auto-config="false" disable-url-rewriting="false" access-decision-manager-ref="accessDecisionManager" 
    entry-point-ref="authenticationProcessingFilterEntryPoint">
    <custom-filter position="FORM_LOGIN_FILTER" ref="authenticationProcessingFilter" />
    <custom-filter position="LOGOUT_FILTER" ref="customLogoutFilter"/>
    <access-denied-handler error-page="/login.jsp?login_error=true"/> 
     <intercept-url pattern="/login.htm" filters="none" />
    <intercept-url pattern="/abc/def/**" access="ROLE_USER"/>
    <intercept-url pattern="/**" access="ROLE_ANONYMOUS" />
    <anonymous enabled='true'/> 
    <session-management session-authentication-strategy-ref="sas"/>  
    <custom-filter position="CONCURRENT_SESSION_FILTER" ref="concurrencyFilter" />
    </http>

1 个答案:

答案 0 :(得分:1)

您好应该为调度程序servlet配置中的静态内容提供映射,例如:

<mvc:resources mapping="/resources/**" location="/WEB-INF/" />

这样,如果您的静态home.htm内容位于/ WEB-INF /文件夹内,您可以从url /resources/home.htm访问它。 这将避免弹簧拦截并重定向到控制器所有路径以/ resources保留该路径到静态资源(如图像,css文件,脚本和html静态页面)