6

在呈现 WEB-CONTENT/WEB-INF/jsp/index.jsp 中的 index.jsp 时获取 DispatcherServlet 的 Class Not Found 异常

以下是项目的结构。

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

我在小项目中使用注释驱动控制器。

4

2 回答 2

8

从文档中:

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

因此,放置abc-servlet.xmlWEB-INF其中应该允许调度程序 servlet 获取您的配置。

如果您不希望您的调度程序 servlet 使用默认名称或希望它驻留在另一个目录中,WEB-INF您可以在 web.xml 中指定此配置。调度程序 servlet 配置的位置和名称可以通过contextConfigLocationDispatcherServlet

<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 文档中找到

于 2013-07-03T09:40:52.197 回答
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>
于 2013-07-03T09:39:19.287 回答