0

我正在使用基于注释的配置,到目前为止没有 web.xml。

现在,根据文档,我需要创建一个 web.xml 文件并将这些字段添加到其中:

<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>

我也可以用注释来配置它吗?

因为如果我制作一个 web.xml 并放这个,我会在运行时遇到一些其他错误(比如缺少 ContextLoaderListener 等)。

4

2 回答 2

2

web.xml 是标准 Web 应用程序打包结构的一部分。这种结构允许您将打包好的 war 文件部署在不同的服务器上,例如 Tomcat 和 Jetty。

您可以在此处阅读有关 web.xml 的更多信息:http ://en.wikipedia.org/wiki/Deployment_descriptor

您可以在此处阅读有关标准目录结构的信息(这是针对 Tomcat 的,但大多数 Web 服务器遵循相同/相似的结构):http: //tomcat.apache.org/tomcat-6.0-doc/appdev/deployment.html#标准_目录_布局

如果您的应用程序是 Web 应用程序,您应该已经有一个 web.xml。如果没有,那么您不应该创建web.xml,而是在 Spring Security 中找到另一种挂钩方式。请让我们知道您的应用程序当前是如何部署的。

这是带有 Spring Security 的 Spring 的 web.xml 示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

    <!-- Spring Security Filter -->
<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>

    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

    <!-- The front controller of the Spring MVC Web application, responsible 
    for handling all application requests -->
<servlet>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/web-application-config.xml
        </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<!-- Map requests to the DispatcherServlet for handling -->
<servlet-mapping>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <url-pattern>/app/*</url-pattern>
</servlet-mapping>

    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

</web-app>
于 2012-08-03T02:02:39.013 回答
1

对于 Web 应用程序,您需要一个 web.xml。

关于您缺少 ContextLoaderListener 的错误,只需将其添加到 web.xml

<listener>
<listener-class>
    org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
于 2012-08-03T02:25:18.043 回答