Java config を使用するアプリに Spring セキュリティを統合しようとしています。
本 Spring Security 3.1 の例に従って、自動生成されたログインページをうまく機能させることができました。しかし、それをカスタムページに置き換えようとすると、
No mapping found for HTTP request with URI [/myapp/login/form]
また、本のサンプルプロジェクトのjspsには次のようなURLを含めることができることに気付きました
"/resources/css/main.css"
私のアプリでは機能しません。代わりに、「../」を前に付ける必要があります
違いは、私のアプリではサーブレット マッピング ("/") にも Java 構成を使用しているのに対し、本の例では web.xml (これも "/") を使用していることです。
アプリが /resources を見つけられず、../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 は、現時点ではサンプル プロジェクトと同じです。