SpringMVC常用注解笔记

/**

  • SpringMVC 是什么
  • springMVC是一种基于java实现MVC设计模型的请求驱动类型的轻量级 Web框架, 它通过一套注解, 让
  • 一个简单的java类称为处理请求的控制器, 而无须实现任何接口, 同时它还支持restful编程风格的请求
  • 1.清晰的角色划分
  •  前段控制器(dispatcherServlet)
    
  •  请求到处理器映射(HandlerMapping)
    
  •  处理器适配器(HandlerAdapter)
    
  •  视图解析器(ViewResolver)
    
  •  处理器或页面控制器(Controller)
    
  •  验证器(Validator)
    
  •  命令对象(Command 请求参数 绑定到 的对象就叫命令对象)
    
  •  表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)
    

*2.分工明确, 而且扩展点相当灵活,

  • 3.由于对象就是一个pojo,无需继承 框架特定 API
  • 5.可适配, 通过HandlerAdapter , 可以支持任意的类作为处理器
  • 6.可定制, HandlerMapping, ViewResolver 等能够非常简单的定制
  • 7.数据验证, 绑定, 国际化
  • 1.启动服务器, 加载一些配置文件,
  •  *DispatcherServlet对象创建
    
  •  *springMvc.xml 被加载了 , 开启注解扫描, 把controller 这个类 变成对象,加载进 容器
    
  •  *InternalResourceViewResolver视图解析器, 变成对象, 调用的时候可以直接工作,完成跳转页面的功能
    
  • 在SpringMVC的各个组件中, 处理器适配器,处理器适配器, 视图解析器 称为 SpringMVC 的三大组件
  • *mvc:annotation-driver/会自动加载RequestMappingHandlerMapping(处理映射器)
  •  和RequestMappingHandlerAdapter(处理器适配器) RequestMappingHandlerAdapter(处理映射器),
    
  •  可用在SpringMVC.xml配置文件中使用<mvc: annotation-driven/> 替代注释 处理器和适配器的配置
    
  •  它就相当于 在xml 中配置了
    
  •  <!--Begin--->
    
  •  <!--HandleMapping--->
    
  •  开启springmvc 框架注解的支持
    
  • 2.发送请求 ,后台处理请求
  • 入门程序 -->DispatcherServlet–>@RequestMapping("/hello"),return “success”
  • dispatcher-->InternalResourceViewResolver(视图解析器对象)-->/WEB-INF/pages/[success].jsp -->
    

*DispatcherServlet:控制中心, 指挥中心
*

  • springMvc框架基于组件方式执行流程
    1. 客户端 --> DispatcherServlet前段控制器 :Request 接受用户请求响应
    1. DispatcherServlet前段控制器 --> HandlerMapping处理器映射器 : 请求查找Handler
  • 3 HandlerMapping处理器映射器 -->DispatcherServlet前段控制器 : 放回一个执行链 HandlerExecutionChain
    1. DispatcherServlet前段控制器–>HandlerAdapter处理器适配器 : 请求适配器执行
    1. HandlerAdapter处理器适配器 -->Handler 处理器(也叫Controller) :执行
    1. Handler 处理器 -->HandlerAdapter处理器适配器 : 返回ModelAndView
    1. HandlerAdapter处理器适配器 --> DispatcherServlet前段控制器 : 返回ModelAndView
    1. DispatcherServlet前段控制器–> ViewResolver 视图解析器 : 请求运行视图解析器
    1. ViewResolver 视图解析器–> DispatcherServlet前段控制器 : 返回View
    1. DispatcherServlet前段控制器–>JSP 视图
    1. DispatcherServlet前段控制器–> response 响应
  • @RequestMapping(value="/testRequestMapping",method={RequestMethod.Post})
  • path=value :用于指定请求的URL ,它和path属性 的作用是一样的
  • method : 用于指定请求的方式
  • params: y用于指定限制请求参数的条件, 它支持简单的表达式, 要求请求参数的key和value必须和
  •      配置的一模一样
    
  • headers: 用于指定限定请求消息头的条件
  • 注意: 以上四个属性只要 出现2个或以上时, 他么的关系是与的关系
  • 请求参数的绑定:
  • 1.绑定机制:
  •        表单提交的数据都是 k=v格式的
    
  •        SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中的参数进行绑定的
    
  •        要求: 提交表单的name 和参数的 名称都是相同的
    
  • 2.支持的数据类型:
  •  基本数据类型和字符串类型
    
  •  实体类型
    
  •  集合数据类型(List 、map集合)
    
  • 3.基本数据类型 和字符串类型
  •  1.提交表单的 name和javaBean 中的属性名称要一致
    
  •  2.如果一个javaBean 类中 包含其他 的引用类型, name表单的name 属性要编写为 对象.属性
    
  • 4.集合属性数据封装
  • 进行数据类型转换, String -->Integer
  • 自定义数据类型转换器
  • ·表单提交的数据类型都是字符串类型, 但是后台定义Integer类型, 数据也可以封装上, 说明spring
  • 框架内部都会默认进行数据类型转换
  • ·如果想自定义数据类型转换, 可以实现Converter接口
  •  1.类型转换器:public class StringToDateConverter implements Converter<String, Date>{
    
  •  2.自定义注册自定义类型转换器,在springmvc.xml配置文件中编写配置,
    
  •  3.在springMVC框架注解的支持处添加 :  <mvc:annotation-driven conversion-service="conversionService"/>
    

*常用的注解:

  • 1.RequestParam注解
  •    ·作用:把请求中的指定名称的参数传递给控制器中的形参赋值
    
  •    ·属性: value: 请求参数中的名称
    
  •          required: 请求参数中 是否必须提供此参数, 默认值是true, 必须提供
    
  •    ·代码 @RequestMapping(path="/hello")
    
  • 2.RequestBody注解
  •    ·作用: 用于获取请求体的内容(注意:get方法不可以)
    
  •    ·属性: required : 是否必须有请求体, 默认值是true
    
  •    · public String sayHello(@RequestBody String body)
    
  • 3.PathVariable注解
  •    ·作用: 拥有绑定url 中 的占位符, 列如 : url中有 /delete /{id},{id}就是占位符
    
  •    ·属性: value:指定url中的占位符名称
    
  •    ·Restful风格的URL
    
  •          1.请求路径一样, 可以根据不同的请求方式去执行后台的不同方法
    
  •          2.restful风格的URL优点
    
  •              结构清晰, 符合标准, 易于理解,扩展方便
    
  •    ·代码: public String sayHelo(@PathVarialbe(value="id") String id)
    
  • 4.RequestHeader注解
  •  · 作用: 获取指定请求头的值
    
  •  · 属性: value 请求头的名称
    
  •  · 代码: public String sayHelo(@RequestHeader(value="Accept") String header)
    
  • 5.CookieValue注解
  •  ·作用:用于获取指定cookie 的名称 的值
    
  •  ·属性: value :cookie的名称
    
  •  ·代码:public String sayHello(@CookieValue="JSESSIONID" String cookieValue)
    
  • 6.ModelAttribute 注解
  •  ·作用: 出现在方法上,表示当前方法会在控制器方法执行前执行
    
  •          出现在参数上, 获取指定的数据给参数赋值
    
  •  ·应用场景
    
  •          当提交表单数据不是完整的实体数据时, 保证没有提交的字段使用数据库原来的数据
    
  •  ·具体的代码:
    
  •      修饰的方法有返回值
    
  •      @ModelAttribute
    
  •      public User showUser(String name)
    
  •      修饰的方法没有返回值
    
  •      @ModelAttribute
    
  •      public void ShowUser(String name ,Mao<String ,User>map)
    
  • 7.SessionAttributes注解
  •    ·作用:用于多次执行控制器方法间的参数共享
    
  •    ·属性: value 指定存入属性的名称
    
  •    ·代码:
    
  •    @Controller  @RequestMapping(path="/user")
    
  •    @SessionAttributes(value={"username","password","age"},types={String.class,Integer.class})
    
  • 课程总结:
  •  1.创建工程,导入坐标
    
  •  2.在web.xml中配置前段控制器, (启动服务器, 加载springmvc.xml配置文件)
    
  •  3.编写springmvc.xml配置文件
    
  •  4.编写index.jsp 的页面, 发送请求
    
  •  5.编写 Controller 类, 编写 方法(@RequestMapping(path="/hello")) 处理请求
    
  •  6.编写配置文件,(开启注解扫描) ,配置视图解析器
    
  •  7.执行的流程
    
  •  8.@RequestMapping 注解
    
  •  参数绑定:
    
  •      参数绑定, 解决中文乱码,自定义数据类型转换器
    

*SpingMVC框架 文件上传的原理分析

  • 页面上传提交–>前段控制器–>Controller Fileupload2(MultipartFile upload) ,文件上传向
  •              前段控制器<--(request/upload)-->配置文件解析器(解析request)
    

*注: 其中name必须与 方法的参数名称 相同

  • 配置文件解析器对象,要求名称必须是 multipartResolver
    
  • 应用服务器:负责部署我们的应用
  • 数据库服务器: 运行我们的数据库
  • 缓存和消息服务器: 负责处理大并发访问的缓存和消息
  • 文件服务器: 负责存储用户上传文件的服务器
  • 异常处理器 处理异常
  • 1.编写自定义异常类(做提示信息的)
  • 2.编写异常处理器
  • 3.配置异常处理器(跳转到提示页面)
  • 1.编写拦截器类,实现HandlerInterceptor接口
  • 2.配置拦截器
    *jdk1.8对接口进行了增强, HandlerInterceptor接口 的方法默认实现了, 可以方法进行重写
  • Spring整合SpringMVC,启动Tomcat服务器的时候, 需要加装spring 的配置文件
  • ServletContext域对象:服务器启动时创建,服务器关闭才销毁
  • 一类监听器, 监听ServletContext域对象创建和销毁的, 执行一次, 服务器启动执行
  • 监听器会加装spring 的配置文件 , 创建WEB 版本工厂, 存储 ServletContext对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值