一、SpringMVC执行流程之源码分析,这里理解了很久,但还是有点半懂不懂的样子,决定还是跟着实操一遍才知道什么跟什么。
在源码的时候涉及了一下debugger,所以又粗略的看了一篇debugger的文章,受益匪浅
Eclipse断点调试: https://blog.csdn.net/lixingshi/article/details/72900591
二、了解了springmvc的处理完整流程,可以发现,我们一般都是做view层或者Controller层,而springmvc帮助我们完成HandlerMapping, HandlerAdapter,ViewResolver的配置,但是我们还是可以使用Spring容器配置,变得更方便。
例如: modelAndView.setViewName("/WEB-INF/jsp/item_list.jsp");
这里涉及到的是视图解析器的部分,通过传递路径名,可以渲染页面。那么,如果工程大的话会有许多页面,很不同的路径。
在Spring-webmvc-5.0.8.jar中的org.springframework.web.servlet中可以找到一份dispatcherServlet.propertoes配置文件,里面有springmvc为我们配置的8个bean对象,我们在其中找到关于ViewResolver的类名org.springframework.web.servlet.view.InternalResourceViewResolver,并为其在spring容器配置属性。
如下:
在Controller中使用:modelAndView.setViewName("item_list");
三、SpringMVC Controller简要说明
1、RequestMapping注解使用
2、Controller方法返回值
//void
@RequestMapping("")
public void voidTest(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
//获取参数
request.getParameter("");
//转发
request.getRequestDispatcher("").forward(request, response);
//重定向
response.sendRedirect(request.getContextPath()+"/xxx.jsp");
}
//String 转发
@RequestMapping("forward.do")
public String forwardStringTest() {
return "forward:mylist.do";
}
//String 重定向 不能重定向到webContent,因为该目录下的文件是受保护的。
@RequestMapping("redirect.do")
public String redirectStringTest() {
return "redirect:/form.jsp";
}
//String 返回视图名
@RequestMapping("testList.do")
public String testList(Model model) {
//向前端页面传递数据
ItemInfo info1 = new ItemInfo("1", "王者荣耀", "mmora", "0");
ItemInfo info2 = new ItemInfo("2", "吃鸡", "射击", "123");
ItemInfo info3 = new ItemInfo("3", "萌宠连连看", "休闲", "98");
ItemInfo info4 = new ItemInfo("4", "植物大战僵尸", "休闲", "0");
ItemInfo info5 = new ItemInfo("5", "愤怒的小鸟", "射击", "11");
List itemList = new ArrayList();
itemList.add(info1);
itemList.add(info2);
itemList.add(info3);
itemList.add(info4);
itemList.add(info5);
//先前台传递数据
//modelAndView.addObject("itemList", itemList);
//modelAndView.setViewName("item_list");
model.addAttribute("itemList", itemList);
return "item_list";
}