springmvc

一、Sprig MVC简介


1.1介绍


Spring MVC是Spring Framework提供的Web组件,全称是Spring Web MVC,是目前主流的实现MVC设计模式的框架,提供前端路由映射、视图解析等功能

Java Web开发者必须要掌握的技术框架

1.2MVC是什么


MVC是一种软件架构思想,把软件按照模型,视图,控制器来划分
Model:模型层,指工程中的JavaBean,用来处理数据


JavaBean分成两类:

一类称为实体类Bean:专门用来存储业务数据,比如Student,User
一类称为业务处理Bean:指Servlet或Dao对象,专门用来处理业务逻辑和数据访问


View:视图层,指工程中的html,jsp等页面,作用是和用户进行交互,展示数据
Controler:控制层,指工程中的Servlet,作用是接收请求和响应浏览器


流程:


用户通过视图层发送请求到服务器,在服务器中请求被Controller接收
Controller调用相应的Model层处理请求,处理完毕后结果返回到Controller
Controller再根据请求处理的结果找到对应的View视图,渲染数据后最终响应给浏览器
 

 Spring MVC对这套MVC流程进行封装,帮助开发者屏蔽底层细节,并且开放出相关接口供开发者调用,让MVC开发更简单方便

9dd9beda3bfa4049bdad5170da7723ef.png (1352×433)

efbbebb3869547049e62b68fe5af11c0.png (1031×468)

二、Spring MVC实现原理


2.1核心组件


DispatcherServlet:前置控制器,负责调度其他组件的执行,可以降低不同组件之间的耦合性,是整个Spring MVC的核心模块


Handler:处理器,完成具体的业务逻辑,相当于Servlet
HandlerMapping:DispatcherServlet是通过 HandlerMapping把请求映射到不同的Handler
HandlerInterceptor:处理器拦截器,是一个接口,如果我们需要进行一些拦截处理,可以通过实现该接口完成
HandlerExecutionChain:处理器执行链,包括两部分内容:Handler和HandlerInterceptor(系统会有一个默认的HandlerInterceptor,如果有额外拦截处理,可以添加拦截器进行设置)
HandlerAdapter:处理器适配器,Handler执行业务方法之前,需要进行一系列的操作包括表单的数据验证、数据类型转换、把表单数据封装到POJO等,这些一系列的操作都是由HandlerAdapter完成,DispatcherServlet通过HandlerAdapter执行不同的Handler
ModelAndView:封装了模型数据和视图信息,作为Handler的处理结果,返回给DispatcherServlet
ViewResolver:视图解析器,DispatcherServlet通过它把逻辑视图解析为物理视图,最终把渲染的结果响应给客户端


2.2工作流程


客户端请求被DispatcherServlet接收
根据HandlerMapping映射到Handler
生成Handler和HandlerInterceptor
Handler和HandlerInterceptor以HandlerExecutionChain的形式一并返回给DispatcherServlet
DispatcherServlet通过HandlerAdapter调用Handler的方法完成业务逻辑处理
返回一个ModelAndView对象给DispatcherServlet
DispatcherServlet把获取的ModelAndView对象传给ViewResolver视图解析器,把逻辑视图解析成物理视图
ViewResolver返回一个View进行视图渲染(把模型填充到视图中)
DispatcherServlet把渲染后的视图响应给客户端

在这里插入图片描述

@RequestMapping

Spring MVC通过@RequestMapping注解把URL请求和业务方法进行映射,在控制器的类定义处以及方法定义处都可以添加@RequestMapping,在类定义处添加相当于多了一层访问路径

 

 

RequestMapping常用参数

  • value:指定URL请求的实际地址,是@RequestMapping的默认值

参数绑定 

在这里插入图片描述

 

URL风格参数绑定

params是对URL请求参数进行限制,不满足条件的URL无法访问该方法,需要在业务方法中获取URL的参数值。

  1. 在业务方法定义时声明参数列表
  2. 给参数列表添加@RequestParam注解进行绑定
  3. Spring MVC可以自动完成数据类型转换,该工作是由HandlerAdapter来完成的

  1. RESTful风格的URL参数获取
  2. 传统的URL:localhost:8080/hello/index?id=1&name=tom
    RESTful URL:localhost:8080/hello/index/1/tom
     

     @RequestMapping("/restful/{id}/{name}")
        public String restful(@PathVariable("id") Integer num, @PathVariable("name") String name){
            System.out.println(num+"-"+name);
            return "index";
        }
    

    映射Cookie

  3.   @RequestMapping("/cookie")
        public String getCookie(@CookieValue("JSESSIONID") String sessionId){
            System.out.println(sessionId);
            return "index";
        }
    
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值