关于web.xml文件里的内容都没什么问题,对于Spring MVC的 映射配置文件——springmvc-servlet.xml里的内容有歧义。
按照how 2j教程里的
springmvc-servlet.xml:
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<bean id="simpleUrlHandlerMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/index">Hello</prop>
</props>
</property>
</bean>
<bean id="Hello" class="com.yyp.MyController"></bean>
id对应class 再对应< prop >里的Hello 设置跳转url
对应的Controller:
package com.yyp;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
//ModelAndView 模型和视图
ModelAndView mv = new ModelAndView("index.jsp");
//封装对象,放在ModelAndView中。Model
mv.addObject("message","HelloSpringMVC!");
//封装要跳转的视图,放在ModelAndView中
return mv;
}
}
其次就是在web项目下的index.jsp文件
一开始用IDEA完全照着配置的时候 出现了错误 死活都是404 之后改用maven建立父工程 在Artifacts里的WEB-INF里的建立lib 导入所有包即可解决 猜想之前照着那样没成功是因为
没有做如上操作
细节之处就在于——评论处提议把index.jsp 改为index 但是利用如上的配置方式 是不可行的 依然是404 得把名称写全
第二处在于使用视图解析器:
<!--视图解析器:DispatcherServlet给他的ModelAndView-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
<bean id="/Hello" class="com.yyp.MyController"></bean>
这样的方便之处在于 不用写那一长段——
<bean id="simpleUrlHandlerMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
但是: <bean id="/Hello" class="com.yyp.MyController"></bean>
此处的id得加上斜杠 此处需要url后缀跳转,至于视图解析器里的是帮助定位你所建JSP文件的位置。
在此种方式的Controller与上方唯一不同在于——不用加上.jsp因为已经帮忙加上了
相比加上视图解析器的方式个人觉得利用< property > < prop>更为简便 ,唯一不同的是建立在WEB-INF目录下的JSP文件需要在controller里写明路径——
ModelAndView mv=new ModelAndView("/WEB-INF/jsp/hello.jsp");
因此写了一个jsp在web目录下 一个在WEB-INF目录下来测试
这是springmvc-servlet.xml——
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<bean id="simpleUrlHandlerMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/index">Hello</prop>
<prop key="/Hello">Hello1</prop>
</props>
</property>
</bean>
<bean id="Hello" class="com.yyp.MyController"></bean>
<bean id="Hello1" class="com.yyp.AnotherController"></bean>