java通关整理汇总-Java基础、计算机网络、数据库、设计模式、框架、算法模板、笔试
SpringMVC
SpringMVC的概述
- 是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。
- Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供 了构建 Web 应用程序的全功能 MVC 模块。
- 使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的 SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2等
SpringMVC请求执行过程
- 用户发送请求至用户发送请求至 前端控制器 DispatcherServlet;
- DispatcherServlet收到请求后,调用HandlerMapping 处理器映射器,请求获取Handle;
- 处理器映射器根据请求url 找到具体的处理器 一并返回给DispatcherServlet;
- DispatcherServlet 调用 HandlerAdapter 处理器适配器;
- HandlerAdapter 处理器适配器经过适配调用具体处理器(Handler,也叫后端控制器);
- 处理器 Handler执行完成返回ModelAndView;
- HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet;
- DispatcherServlet将ModelAndView 传给 ViewResolver 视图解析器进行解析;
- ViewResolver解析后返回具体View;
- DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)
SpringMVC的组件
- 前端控制器(DispatcherServlet)
- 处理器映射器(HandlerMapping)
- 处理器(Handler)
- 处理器适配器(HandlAdapter)
- 视图解析器(View Resolver)
- 视图(View)
Springmvc 怎么样设定重定向和转发的?
在返回值前面加"redirect:“就可以让返回值重定向,譬如"redirect:http://www.baidu.com”
在返回值前面加"forward:“就可以让结果转发,譬如"forward:user.do?name=method4”
Springmvc 和struts2的区别有哪些?
- springmvc的入口是一个servlet即前端控制器(DispatchServlet),而struts2入口是一个filter过虑器
- springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
- Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。
springmvc 中当一个方法向AJAX返回特殊对象,譬如Object,List等,需要做什么处理?
要加上@ResponseBody注解。
常用注解
@RequestMapping注解
- 作用在类上:第一级的访问目录
- 作用在方法上:第二级的访问目录
3.${ pageContext.request.contextPath }表示绝对路径
@RequestParam注解
- 作用:把请求中的指定名称的参数传递给控制器中的形参赋值
- 属性
value:请求参数中的名称
required:请求参数中是否必须提供此参数,默认值是true,必须提供
当required设置为flase时,请求参数中,不包含该字段的字也可以,不会报错
@RequestBody注解
- 作用:用于获取请求体的内容(注意:get方法不可以)
- 属性 1. required:是否必须有请求体,默认值是true
@RequestHeader注解
- 作用:获取指定请求头的值 2. 属性 1. value:请求头的名称
@RequestMapping(path="/hello")
public String sayHello(@RequestHeader(value="Accept") String header) {
System.out.println(header);
return "success"; }
@ CookieValue注解
- 作用:用于获取指定cookie的名称的值 2. 属性 1. value:cookie的名称
@RequestMapping(path="/hello")
public String sayHello(@CookieValue(value="JSESSIONID") String cookieValue) {
System.out.println(cookieValue);
return "success"; }