spring security thymeleaf tiles没有找到带URI的HTTP请求的映射

时间:2014-06-24 08:16:16

标签: java spring spring-mvc tiles thymeleaf

我已将spring安全性与 thymeleaf tiles 集成在一起,但运行时遇到以下错误:

WARN [btpool0-0] (DispatcherServlet.java:1114) - No mapping found for HTTP request with URI [/BMS/] in DispatcherServlet with name 'spring'

但是当我在地址栏localhost:8080/BMS/login.html中写字时,页面显示了 但是当我尝试按照localhost:8080/BMS/loginView之类的视图名称调用它时,因为我在 tiles-def.xml 中配置了它,但我找不到 404

我的 web.xml 是:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>BMS</display-name>
 <context-param>
<param-name>contextConfigLocation</param-name><param-value>
/WEB-INF/spring-security.xml
</param-value>
</context-param>
   <filter>
        <filter-name>encoding-filter</filter-name>
        <filter-class>
            org.springframework.web.filter.CharacterEncodingFilter
        </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encoding-filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>
    <servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.mortbay.jetty.servlet.DefaultServlet</servlet-class>
    <init-param>
      <param-name>useFileMappedBuffer</param-name>
      <param-value>false</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
   <servlet>
   <servlet-name>spring</servlet-name>
   <servlet-class>
    org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
     <servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/BMS/*</url-pattern>
    </servlet-mapping>
     <servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>BMS/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.png</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/BMS/*</url-pattern>
</servlet-mapping>
 <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>

  <welcome-file-list>
    <welcome-file>login.html</welcome-file>
       <welcome-file></welcome-file>
  </welcome-file-list>


</web-app>

tiles-def.xml

<tiles-definitions>
    <definition name="layout" template="templates/layout">
        <put-attribute name="header"   value="templates/header" />
        <put-attribute name="menu"   value="templates/menu" />
        <put-attribute name="footer" value="templates/footer" />
        <put-attribute name="body" />

    </definition>
    <definition name="loginView" extends="layout">
        <put-attribute name="body"   value="login.html" />
    </definition>
    <definition name="pages/usersView" extends="layout">
        <put-attribute name="body"   value="pages/users" />
    </definition>
     <definition name="pages/sendView" extends="layout">
        <put-attribute name="body"   value="pages/sendMessage" />
    </definition>
</tiles-definitions>

我的 security-servlet.xml 是:

<?xml version="1.0" encoding="UTF-8"?>

<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd">
      <debug />
<global-method-security pre-post-annotations="enabled" />
<http pattern="/loginView" security="none"/>
    <http use-expressions="true">
        <intercept-url pattern="/resources/**" access="permitAll" />
        <intercept-url pattern="/templates/**" access="permitAll" />
        <intercept-url pattern="/pages/**" access="hasAuthority('User')" />
        <intercept-url pattern="/pages/admin/**" access="hasRole('Admin')"/>

          <form-login login-page="/loginView" authentication-failure-url="/loginView?error" default-target-url="/pages/usersView"/>

        <remember-me />

            <concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
        </session-management> -->

    </http>

    <authentication-manager>
        <authentication-provider>
             <user-service>
              <user name="admin" password="123" authorities="Admin,User" />
              <user name="user" password="111" authorities="User" />
             </user-service>
        </authentication-provider>
    </authentication-manager>

</beans:beans>

我的LoginController是

 @RequestMapping("/loginView")
    public String login() {
        return "loginView";
    }

   // Login form with error
    @RequestMapping("/loginView")
    public String loginError(Model model) {
        model.addAttribute("loginError", true);
        return "loginView";
    }

注意:我在web xml的springDispatcher中尝试了<url-pattern>/*</url-pattern><url-pattern>BMS/*</url-pattern>以及<url-pattern>/</url-pattern><url-pattern>/BMS/*</url-pattern>,但没有任何效果

我也尝试了here中的解决方案。但它没有任何帮助。我做错了什么?

0 个答案:

没有答案