1

我有一个 springmvc 应用程序,主要用于提供 JSON 数据。所有页面都将通过 Angular 决定。我有一个 index.jsp,我需要能够查看它位于 WEB-INF 目录的根目录中。

因为我通过调度程序发送所有内容,所以正在接收并发送对 root 的请求。由于没有映射到 root 的控制器,因此它被拒绝并抛出 404。

我的问题是如何在不中断应用程序其余部分的情况下允许通过 index.jsp?

<servlet>
    <servlet-name>cr</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/conf/spring-controllers.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>cr</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
4

2 回答 2

2

index.jsp文件放在 webcontext 的根目录中。然后使用以下过滤器映射:

<servlet-mapping>
    <servlet-name>cr</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

/映射将拾取所有无法解决的请求。当找不到其他映射时,它基本上充当了一个包罗万象的角色。

于 2013-02-21T09:53:31.637 回答
1

我也有同样的问题。web.xml 配置:

<servlet>
    <servlet-name>SpringMVC-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springMVC.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>SpringMVC-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:log4j.properties</param-value>
</context-param>

springMVC.xml 配置:

<mvc:view-controller path="/" view-name="/pages/index"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/"/>
    <property name="suffix" value=".jsp"/>
</bean>

如果正确,路径/将获取视图文件/WEB-INF/pages/index.jsp,但出现 404 错误。最后,我找到了原因。因为index.htmlROOT文件夹中有一个文件。当我删除文件时,它工作正常。

于 2017-04-12T01:40:58.167 回答