SpringMVC 框架流程
1、用户请求到达前端控制器(DispatcherServlet)总调度 {配置}
2、前端控制器去请求处理器映射器(HandlerMapping) {配置}
3、处理器映射器返回处理结果(请求就知道该发给哪个类的哪个方法)
4、前端控制器去请求处理器适配器(HandlerAdapter 帮你适配请求) {配置}
5、处理器适配器返回处理结果(请求进行适配)
6、前端控制器携带适配后的请求发送到controller(正式进入方法)
7、controller调用业务层进行处理 {controller 编程}
8、业务层返回处理结果(ModelAndView) {service dao 编程}
9、controller 封装ModelAndView对象(model view支持多种视图)返回给前端控制器
10、前端控制器去请求视图解析器(按配置的顺序去查找对应视图)
11、视图解析器返回结果(*.jsp, *.ftl , *.html)
12、视图渲染(将携带的model数据装载到页面) {写界面}
13、响应给用户
优势:请求的格式可能是json form xml ...,在后端自动适配
响应回去的格式可能是json,request,对象,map.. ,在自动适配
支持请求里带参数(restful)
处理器映射器和适配器:
1、非注解 实现controller接口 重写HandlerRequest方法
2、注解方式
spring3.1之前 DefaultAnnotationHandlerMapping DefaultAnnotationHandlerAdapter
spring3.1之后 RequestMappingHandlerMapping RequestMappingHandlerAdapter
3、注解驱动
<mvc:annotation-driven />
配置视图解析器:多种怎么选择见手册22.5.1
流程:
web.xml配置前端控制器
springmvc.xml
写controller
页面
测试
@RequestMapping:路径可以写在类级别也可以写在方法级别
controller的数据共享:mav.addObject(attributeName, attributeValue) 是request级别
controller返回值的类型:ModelAndView String void
el表达式不能使用:在web.xml配置以下
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
或者:在jsp页page指令加isELIgnored="false"
json交互
@RequestBody 用户前台输入json形式------->后台自动转换成java对象形式
@ResponseBody 后台java代码返回对象形式---->自动给前台转换成json形式
JSON.parse()【从一个字符串中解析出json对象】
JSON.stringify()【从一个json对象中解析出字符串】