java技术--SpringMVC执行流程

1.是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架

(1)即使用了MVC架构模式的思想,将web层进行职责解耦
(2)基于请求驱动指的就是使用请求-响应模型
      <1>与之相反的是基于组件的、事件驱动的Web框架,如Tapestry、JSF等
      <2>在Web应用中充当控制层(Controller)的角色,对请求进行分发处理
(3)框架的目的就是帮助简化开发

2.SpringMVC组件及作用:

(1)前端控制器DispatcherServlet(不需要程序员开发)
        <1>接收请求,响应结果,相当于转发器,中央处理器
        <2>有了DispatcherServlet减少了其它组件之间的耦合度
(2)处理器映射器HandlerMapping(不需要程序员开发)
        <1>根据请求的url查找Handler
(3) 处理器适配器HandlerAdapter(不需要程序员开发)
        <1>按照特定规则(HandlerAdapter要求的规则)去执行Handler
(4)处理器Handler(需要程序员开发)
        <1>编写Handler时按照HandlerAdapter的要求去做
        <2>这样适配器才可以去正确执行Handler
(5)视图解析器ViewResolver(不需要程序员开发)
        <1>进行视图解析,根据逻辑视图名解析成真正的视图(view)
(6) 视图View(需要程序员开发jsp)
        <1>View是一个接口,实现类支持不同的View类型(jsp、freemarker)      
注意事项:
(1):不需要程序员开发的,需要程序员自己做一下配置即可
(2)需要开发的工作只有处理器 Handler的编写以及视图比如JSP页面的编写  

3.SpringMVC组件的配置与使用

1)配置前端控制器(DispatcherServlet)
     <1>在web project的web.xml中配置
(2)配置处理器映射器(HandlerMapping)
     <1>在 springmvc.xml 文件中配置  
     <2>就是请求的 URL 怎么能被 SpringMVC 识别,从而去执行编写好的Handler 
(3)配置处理器适配器(HandlerAdapter)
     <1>在 springmvc.xml 文件中配置
     <2>用来约束所需要编码的Handler类
(4)开发处理器(Handler,即我们的Controller)    
     <1>在 springmvc.xml 文件中配置
     <2>就是请求的URL到这里所编写的Handler类的某个方法进行一些业务逻辑处理
     <3>在上面讲解了两个处理器适配器来约束Handler,那么就通过上面两种配置分别编写两个Handler
       3.1.实现Controller 接口
       public class HelloController implements Controller {
         public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
           ModelAndView modelView = new ModelAndView();
            modelView.setViewName("/WEB-INF/jsp/index.jsp");
               return modelView;}}
       3.2.实现 HttpRequestHandler 接口
       public class HelloController2 implements HttpRequestHandler {
         public void handleRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
         request.setAttribute("name", "harvey");
         request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response);}} 
       3.3.通常使用第一种方式来编写 Handler      
(5)配置视图解析器(ViewResolver)
     <1>在 springmvc.xml 文件中配置
(6)DispatcherServlet.properties
     <1>SpringMVC 给提供了一个 DispatcherServlet.properties 文件    
     <2>系统会首先加载这里面的配置,如果没有配置,那么就默认使用这个文件的配置 
     <3>如果我们配置了,那么就优先使用我们手动配置的
     <4>DispatcherServlet.properties中默认配置如下:
      ①、处理器适配器默认:org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter
      ②、处理器映射器默认:org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
      ③、视图解析器默认:org.springframework.web.servlet.view.InternalResourceViewResolver

4.SpringMVC工作流程

(1)用户发送请求至前端控制器DispatcherServlet
(2)DispatcherServlet收到请求调用HandlerMapping处理器映射器
(3)处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找)
(4)生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet 
(5)DispatcherServlet调用HandlerAdapter处理器适配器
(6)HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)
(7)Controller执行完成返回ModelAndView
(8)HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
(9)DispatcherServlet将ModelAndView传给ViewReslover视图解析器
(10)ViewReslover解析后返回具体View
(11)DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)
(12)DispatcherServlet响应用户

5.SpringMVC常用注解及其作用

(1)@Controller:标识这个类是一个控制器
(2)@RequestMapping:给控制器方法绑定一个uri
(3)@ResponseBody:将java对象转成json,并且发送给客户端
(4)@RequestBody:将客户端请求过来的json转成java对象
(5)@RequestParam:当表单参数和方法形参名字不一致时,做一个名字映射
(6)@PathVarible:用于获取uri中的参数,比如user/1中1的值

6.Rest风格的新api

(1)@RestController相当于@Controller+ @ResponseBody
 (2)@GetMapping@DeleteMapping@PostMapping@PutMapping          

7.其他注解

(1)@SessionAttribute:声明将什么模型数据存入session
(2)@CookieValue:获取cookie值
(3)@ModelAttribute:将方法返回值存入model中
(4)@HeaderValue:获取请求头中的值

8.注意事项

(1)SpringMVC集成了Ajax
(2)支持Restful风格
(3)springmvc是单例模式的框架,但它是线程安全的
      <1>springmvc没有成员变量,所有参数的封装都是基于方法的
      <2>属于当前线程的私有变量
      <3>是线程安全的框架,所以效率高
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值