我正在使用Spring MVC 2的默认配置。所以,我的调度程序看起来像,
<prop key="index.htm">indexController</prop>
我在root上有一个简单的htm文件。当我浏览这个文件时,我得到404:Not Found Error。如何在Spring MVC中浏览(物理存在于磁盘上)htm文件。
答案 0 :(得分:2)
在基于注释的Spring 3.x中,您可以在控制器中将其写为
@RequestMaping(value="/index.htm")
public void doSomeJob(){
//some code here
}
如果你发出请求为“/pathToIt/index.htm”,那么它将被doSomeJob()方法捕获..
P.S Spring MVC 3.x中的配置文件中不需要请求映射
注意:如果spring无法找到您的物理文件,也可能导致404 ..
答案 1 :(得分:1)
尝试在springmvc-servlet.xml文件中添加bean id:
<bean id="indexController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>
然后:
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
...
<prop key="/index.htm">indexController</prop>
</props>
</property>
</bean>
答案 2 :(得分:1)
您需要将URL index.htm
映射到您的控制器。在具有正确的spring mvc配置之前,您无法查看页面。
<bean name="/index.htm" class="com.indexController">
....
</bean>
在控制器中,您将view
中的jsp页面名称作为modelAndView
传递。
检查您的视图解析器是否具有正确的设置
<!-- View Resolver -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix">
<value>/WEB-INF/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
答案 3 :(得分:1)
好的,这听起来很熟悉,如果你使用的是MVC 2,那么实现这一目标的最佳方法是为调度程序servlet提供一个特定的映射,而不是/
<servlet>
<servlet-name>myDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myDispatcherServlet</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
这将确保对* .jsp的唯一请求将转发给dispatcher servet,其余的将由容器本身处理。