我正在尝试将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目前与示例项目相同。