0

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 は、現時点ではサンプル プロジェクトと同じです。

4

0 に答える 0