spring配置文件和web.xml的确切位置在哪里?

Yut*_*uta 5 java spring annotations spring-mvc

在呈现WEB-CONTENT/WEB-INF/jsp/index.jsp中的index.jsp时获取DispatcherServlet的类未找到异常

以下是项目的结构.

  1. web.xml位于WEB-CONTENT下.
  2. abc是我的Dispatcher servlet的名称.因此配置文件将是abc-servlet.xml,它将包含定义了所有命名空间和模式的bean标记.
  3. 我应该在哪里放置abc-servlet.xml文件?它应该在classes文件夹中还是在web.xml中?
  4. 是否因为spring配置文件的位置而产生异常?
  5. 另外,如果我将配置文件放在其他位置,如何让项目知道它在项目中的特定路径?

我在smaple项目中使用注释驱动的控制器.

Kev*_*sox 8

从文档:

在初始化DispatcherServlet时,Spring MVC在Web应用程序的WEB-INF目录中查找名为[servlet-name] -servlet.xml的文件,并创建在那里定义的bean,覆盖使用相同名称定义的任何bean的定义在全球范围内.

因此放置abc-servlet.xml内部WEB-INF应该允许调度程序servlet获取您的配置.

如果您不希望调度程序servlet使用默认名称或希望它驻留在另一个目录中,WEB-INF那么您将在web.xml中指定此配置.可以通过在其中设置contextConfigLocationinit-param 来更改调度程序servlet配置的位置和名称DispatcherServlet

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>WEB-INF/spring/servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

可以在Spring文档中找到此信息


Dha*_*ath 3

web.xml放置WEB-INF在然后你可以像这样引用你的 spring xml:

<servlet>
    <servlet-name>myservlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/abc-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
</servlet>
Run Code Online (Sandbox Code Playgroud)