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

时间:2013-07-03 09:30:40

标签: java spring spring-mvc annotations

在呈现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. 是否因为弹簧配置文件的位置而引起异常?
  5. 另外,如果我将配置文件放在其他位置怎么样我怎么让项目知道它在项目的特定路径?
  6. 我在smaple项目中使用注释驱动的控制器。

2 个答案:

答案 0 :(得分:7)

来自文档:

  

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

因此将abc-servlet.xml放在WEB-INF中应该允许调度程序servlet接收您的配置。

如果您不希望调度程序servlet使用默认名称或希望它驻留在除WEB-INF之外的其他目录中,则应在web.xml中指定此配置。可以通过在contextConfigLocation

中设置DispatcherServlet init-param来更改调度程序servlet配置的位置和名称
<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>

此信息可在Spring Documentation

中找到

答案 1 :(得分: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>