1. Spring MVC
-
请求处理流程分析
流程: 1.首先用户发送请求,请求被SpringMvc前端控制器(DispatherServlet)捕获; 2.前端控制器(DispatherServlet)对请求URL解析获取请求URI,根据URI,调用HandlerMapping; 3.前端控制器(DispatherServlet)获得返回的HandlerExecutionChain(包括Handler对象以及Handler对象对应的拦截器); 4.DispatcherServlet 根据获得的 HandlerExecutionChain,选择一个合适的HandlerAdapter。 (附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法); 5.HandlerAdapter根据请求的Handler适配并执行对应的Handler;HandlerAdapter(提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。 在填充Handler的入参过程中,根据配置,Spring将做一些额外的工作: HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息。 数据转换:对请求消息进行数据转换。如String转换成Integer、Double等数据格式化:数据格式化。 如将字符串转换成格式化数字或格式化日期等。 数据验证:验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中)。 6.Handler执行完毕,返回一个ModelAndView(即模型和视图)给HandlerAdaptor。 7.HandlerAdaptor适配器将执行结果ModelAndView返回给前端控制器。 8.前端控制器接收到ModelAndView后,请求对应的视图解析器。 9.视图解析器解析ModelAndView后返回对应View; 10.渲染视图并返回渲染后的视图给前端控制器。 11.最终前端控制器将渲染后的页面响应给用户或客户端。
-
优势
1.清晰的角色划分:前端控制器(DispatcherServlet)、请求到处理器映射(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)、 处理器或页面控制器(Controller)、验证器( Validator)、命令对象(Command 请求参数绑定到的对象就叫命令对象)、表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)。 2.分工明确,而且扩展点相当灵活,可以很容易扩展,虽然几乎不需要; 3.和Spring 其他框架无缝集成,是其它Web框架所不具备的; 4.可适配,通过HandlerAdapter可以支持任意的类作为处理器; 5.可定制性,HandlerMapping、ViewResolver等能够非常简单的定制; 6.功能强大的数据验证、格式化、绑定机制; 7.利用Spring提供的Mock对象能够非常简单的进行Web层单元测试; 8.本地化、主题的解析的支持,使我们更容易进行国际化和主题的切换。 9.强大的JSP标签库,使JSP编写更容易。
-
环境搭建
1.开发环境 Idea + Maven + Jdk1.8 + Jetty 2.pom.xml坐标添加 3.配置web.xml 4.spring.xml配置 5.页面控制器的编写 6.添加视图页面(在WEB-INF下新建jsp文件夹) 7.启动jetty服务器
-
URL地址映射配置
@RequestMapping 通过注解@RequestMapping将请求地址与方法进行绑定,可以在类级别和方法级别声明。 1.映射单个URL(声明在方法上面) @RequestMapping("")或@RequestMapping(value="") @RequestMapping("/请求路径")与@RequestMapping("请求路径")均可 访问地址:http://ip:port/项目名/方法路径 如果有类路径需要写在方法路径前面 2.映射多个URL(声明在方法上面) @RequestMapping({"",""}) 或 @RequestMapping(value={"",""}) 支持一个方法绑定多个url的 *** 作 访问地址:http://ip:port/项目名/方法路径 如果有类路径需要写在方法路径前面 3.映射URL在控制器上(声明在类上面) 表示类中的所有响应请求的方法都是以该地址作为父路径。 声明级别: 类级别 + 方法级别 (/类路径/方法路径) 访问地址:http://ip:port/项目名/类路径/方法路径 4.设置URL映射的请求方式 默认没有设置请求方式,可以通过method属性设置支持的请求方式,如method=RequestMethod.POST; 如设置多种请求方式,以大括号包围,逗号隔开即可。 访问地址:http://ip:port/项目名/类路径/方法路径(只能使用POST请求访问) 5.通过参数名称映射URL @RequestMapping(params = "") 通过参数的形式访问 访问地址:http://ip:port/项目名/url?方法路径
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)