如何在Spring MVC中浏览htm文件

时间:2012-01-14 18:12:35

标签: java spring-mvc glassfish

我正在使用Spring MVC 2的默认配置。所以,我的调度程序看起来像,

 <prop key="index.htm">indexController</prop>

我在root上有一个简单的htm文件。当我浏览这个文件时,我得到404:Not Found Error。如何在Spring MVC中浏览(物理存在于磁盘上)htm文件。

4 个答案:

答案 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,其余的将由容器本身处理。