第一个春季项目的问题

时间:2011-06-11 22:17:24

标签: spring-mvc web.xml

我刚从Striped切换到Spring但我的第一个项目遇到问题, 基本上我从服务器获得404。 奇怪的是,我已经一一跟随着我书中的所有步骤。 我使用Eclipse,Tomcat 6和Spring 2.5 我的项目结构如下:  SRC>   控制器(包)> SpringTestController(实现控制器).....然后   ......网页内容> jsp(文件夹)> hello.jsp ..... then .... web-content> web-inf> SpringTest-servlet.xml和web.xml 在lib里面我有9个必要的罐子。

我的控制员:

public class SpringTestController implements Controller{

public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {




    return new ModelAndView("jsp/hello.jsp");
}

}

我的SpringTest-servet.xml

  <?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean name="/hello.htm" class="controllers.SpringTestController"/>

</beans>

我的web.xml(没有标题来节省空间)

<servlet>

        <servlet-name>SpringTest</servlet-name>

        <servlet-class>

          org.springframework.web.servlet.DispatcherServlet

        </servlet-class>

        <load-on-startup>1</load-on-startup>

  </servlet>

  <servlet-mapping>

        <servlet-name>SpringTest</servlet-name>

        <url-pattern>*.htm</url-pattern>

  </servlet-mapping>

您认为问题可能在哪里? 我一直在试图查看文件,但除了web.xml“我没有看到任何异常”我对这个流程结构非常新,所以我真的无法解决问题所在。

你的时间

1 个答案:

答案 0 :(得分:0)

我怀疑使用 bean name 属性来指定URL路径的做法 - 虽然我确定它可能是可能的,但我的回答会告诉你如何使用更传统的手段来做到这一点。

首先,这是新的SpringTest-servlet.xml:

<bean id="helloController" class="controllers.SpringTestController" />

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <props>
            <prop key="/hello.htm">helloController</prop>
        </props>
    </property>
</bean> 

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>   
</bean>

你可能会注意到一些事情。我正在使用bean的 id 属性来定义你的控制器,以便它可以在其他地方引用(在你将要看到的 urlMapping bean中)。

我定义了一个 urlMapping bean,它完全符合您的想法 - 将请求(例如/hello.htm)映射到控制器bean。

我还使用viewResolver将视图名称映射到视图文件,但这是个人喜好的事情。由于我现在使用的是视图解析器,因此您的控制器如下所示:

public class SpringTestController implements Controller {
    @Override
    public ModelAndView handleRequest(final HttpServletRequest request, final HttpServletResponse response) throws Exception {
        return new ModelAndView("hello");
    }
}

我不需要将路径放到视图中,因为viewResolver以“/ WEB-INF / jsp /”为前缀,并在末尾添加“.jsp”。您可以将前缀更改为存储视图文件的位置,或者根本不能使用它。这是个人喜好的事情,虽然我喜欢用它:)

很抱歉,如果这个答案不符合你的风格 - 我试着按照自己的方式运行而不能,所以这就是我通常设置Spring项目的方式(如果我没有使用注释)。 / p>

希望这有帮助。