- MVC:Model-View-Controller,数据模型+jsp+controller方法
- 常用注解
@ResponseBody 以json字符串的形式返回@RequestMapping(value method) 为控制器指定可以处理哪些URL请求,可以标记在类和方法上@PathVariable RESTful风格开发中目标方法获取请求上的参数@RequestParam 可以把请求参数传递给请求方法@RequestHeader 可以将请求头中的属性值绑定到处理器方法的入参中@CookieValue 可让处理方法入参绑定某个 Cookie 值@SessionAttributes 获取session域中的对象@ModelAttribute 封装POJO对象原理:首先会去查找本类中是否有ModelAttribute 修饰的方法,若有则去reuqest域中查找是否有被ModelAttribute方法放到request域中的User参数。若有则目标方法中的User参数就是ruquest中的User. 若没找到或者没有ModelAttribute修饰的方法就去看类名上是否被SesstionAttribute修饰,若修饰了就进一步去session域中找User,若还没找到就会报错,若没有被sessionAttribute修饰,才会新建一个User对象用于接收用户提交的数据并封装到给User参数中。
- restful风格开发
表单只能发起get/post请求.如果希望可以发起delete或put请求.可以配置HiddenHttpMethodFilter过滤器.
<!-- 支持REST风格开发.可以将POST请求转换为PUT或DELETE -->
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
同时需要用隐藏标签转换为put或者delete请求
<form action="${pageContext.request.contextPath }/springmvc/testREST/1" method="POST">
<input type="hidden" name="_method" value="put"/>
<input type="submit" value="testRESTPUT"/>
</form>
- controller方法支持9个标准参数
HttpServletRequest
HttpServletResponse
HttpSession
java.security.Principal
Locale
InputStream
OutputStream
Reader
Writer
- 数据绑定流程:DataBinder
-
.<mvc:annotation-driven/>什么时候配置
1、直接配置响应的页面:无需经过控制器来执行结果 ;但会导致其他请求路径失效,需要配置mvc:annotation-driven标签
2、配置了静态资源处理器:<mvc:default-servlet-handler/>
。。。。
- 多个拦截器执行步骤
- 框架运行流程
说明:
- 用户发送请求☞DispatcherServlet
DispatcherServlet是前端控制器,作为统一访问点,进行全局的流程控制。其收到请求后不直接进行处理,而是委托其他解析器进行处理。- DispatcherServlet☞HandlerMapping
DispatcherServlet根据URI调用HandlerMapping,获得HandlerExecutionChain对象(一个Handler对象(页面控制器)和多个HandlerInterceptor对象(拦截器))- DispatcherServlet☞HandlerAdapter
HandlerAdapter将Handler包装为Adapter,采用Adapter模式,从而很容易支持多类型Handler- HandlerAdapter☞Handler相应方法调用
HandlerAdapter会根据适配结果调用真正地Handler处理方法,并返回一个ModelAndView对象(模型数据、逻辑视图名)- ModeAndView中逻辑视图名☞ViewResolver
ViewResolver将逻辑视图名解析为具体的View- Model☞View☞渲染
View根据Model数据进行渲染,Model本质是一个Map数据结构,因此很容易支持各种视图技术- DispatcherServlet☞响应客户端
- 配置文件
1、web.xml:监听器,过滤器(rest风格过滤器,字符编码过滤器),核心控制器
2、springmvc.xml
视图解析器,拦截器,异常处理器,扫描controller层,静态资源处理器