记录菜鸟的我, 在使用 springMVC 开发过程中所遇到的问题
1 ModelAndView 对象 setViewName()无法得到渲染页面
描述: 代码执能够执行, 而且也不报错, 但是访问就是渲染不出来 setViewName()所指定的 jsp 页面页面报 HTTP Status 404 - 错误
- @RequestMapping(value="/index.jsp")
- public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
- System.out.println("handlerequest 被调用");
- ModelAndView mv=new ModelAndView();
- mv.addObject("message", "hello world!");
- mv.setViewName("/web-INF/pages/index.jsp");
- return mv;
- }
原因: 使用日志记录 log4j, 将运行状态从控制台输出 (做开发, 日志输出是一件利器, 让程序运行过程变得可见) 可以看到如下信息
- 17:34:40,786 WARN PageNotFound:1172
- - No mapping found for HTTP request with URI [/Suhe/WEB-INF/pages/index.jsp]
- - in DispatcherServlet with name 'springmvc'
大体意思是
/Suhe/WEB-INF/pages/index.jsp
这个 url 请求,
DispatcherServlet(前端请求控制分发器)
找不到相应的 mapping, 其实就是说, 服务器将这个
mv.setViewName("/WEB-INF/pages/index.jsp")
操作当成了成为了一个 http 请求, 给了 DispatcherServlet 进行处理而 web.xml 中对 servlet-mapping 进行了匹配规则的设置, 如下, 对. jsp 结尾了 HTTP 请求会匹配成功, 进行拦截后交给 DispatcherServlet 分发处理
- <servlet-mapping>
- <servlet-name>springmvc</servlet-name>
- <url-pattern>*.jsp</url-pattern>
- </servlet-mapping>
解决办法: 更改 url-pattern 配备拦截设置为其他形式, 如
*.do 或则. html 等等
, 对应的 @RequestMapping()也做相应修改即可
2 解决 eclipse 中自动生成参数为 arg0,arg1 问题
见 解决 eclipse 自动生成参数为 arg0,arg1
来源: http://blog.csdn.net/summerxiachen/article/details/79572658