我有一个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>
答案 0 :(得分:1)
将index.jsp
文件放在webcontext的根目录中。然后使用以下过滤器映射:
<servlet-mapping>
<servlet-name>cr</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
/
映射将获取所有无法解析的请求。当没有其他映射可以找到它时,它基本上可以作为一个捕获。
答案 1 :(得分:0)
我有同样的问题。 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 config:
<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错误。
最后,我找到了原因。因为ROOT文件夹中有一个index.html
文件。当我删除文件时,它的工作正常。