如何结合java配置和xml来集成Spring 3.1中的Spring安全性?

时间:2013-02-14 14:43:16

标签: spring-mvc spring-security

我正在尝试将Spring安全性集成到使用java config的应用程序中。

按照Spring Security 3.1一书中的示例,我设法使用自动生成的登录页面。但是当我尝试用自定义页面替换它时,我得到了

No mapping found for HTTP request with URI [/myapp/login/form]

我也注意到,虽然本书的示例项目的jsps可以包含像

这样的网址
"/resources/css/main.css"

它们在我的应用程序中不起作用,而是我必须在它们前面添加“../"

不同之处在于我的应用程序也使用java配置进行servlet映射(“/”),而本书的示例使用web.xml(也是“/”)

我的应用程序无法找到/资源但是../resources并且找不到登录页面的原因是什么?

我的web.xml

<display-name>My Web Application</display-name>

<context-param>
    <param-name>contextConfigClass</param-name>
    <param-value>com.myapp.config.AppInitializer</param-value>
</context-param>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/spring/security.xml
    </param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<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>

AppInitializer类:

public class AppInitializer implements WebApplicationInitializer {

@Override
public void onStartup(ServletContext context) throws ServletException {
    AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext();
    root.register(ApplicationContext.class);
    ServletRegistration.Dynamic dispatcher = context.addServlet("dispatcher", new DispatcherServlet(root));
    dispatcher.setLoadOnStartup(1);
    dispatcher.addMapping("/");
    }
}

请求映射处理程序等在AppInitializer引用的ApplicationContext.class中定义。它们与书中的例子相同。

此外,login.jsp目前与示例项目相同。

0 个答案:

没有答案