刚接触spring,照着书上敲了个简单的web mvc项目。大致意思是在浏览器输入地址localhost:8080/Ch3_1/hello.mvc后,后台根据请求名称hello调用相应的控制器,然后跳转到视图localhost:8080/Ch3_1/WEB-INF/pages/helloReader.jsp
在使用了spring框架的setViewName方法指定视图名称并返回后,奇怪但是并没有跳转到指定页面,而是跳转到了localhost:8080/Ch3_1/WEB-INF/pages/hello.jsp,由于实际没有这个页面,所以报了404错误。

代码如下:
控制器类:
@Controller
public class HelloWorldController {
@RequestMapping(value = "/hello")
public ModelAndView sayHello(){
ModelAndView mv = new ModelAndView();
mv.setViewName("helloReader"); //按理应该跳转到helloReader.jsp
mv.addObject("message","Hello Readder!");
return mv;
//return "helloReader";
}
}
springmvc-servlet.XML:
web.xml
springmvc
org.springframework.web.servlet.DispatcherServlet
1
springmvc
*.mvc
不知道是哪里出了问题?
相关环境如下:

找了半天原因原来是ModelAndVeiw 类的包引错了。
应该引入的是: org.springframework.web.servlet.ModelAndView;
而之前引入的是 org.springframework.web.portlet.ModelAndView
不过这个portlet是什么东东呢。。
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你设置的springmvc拦截的路径是*.mvc,但是你spring设置的控制器路径只是/hello啊,根本不会交给springmvc处理。应该设置为/hello.mv,这样试试
可能是定义了一个默认的<welcome-file-list>hello页面,你的路径应该不需要ch3_1
<property name="prefix" value="/WEB-INF/pages/"/>不用加/WEB-INF
<property name="suffix" value=".jsp"/>
改为
<property name="suffix" value=".mvc"/>