我刚从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“我没有看到任何异常”我对这个流程结构非常新,所以我真的无法解决问题所在。
你的时间
答案 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>
希望这有帮助。