标签:拦截器 请求 回顾 1.3 Spring MVC 资源
1 Spring MVC 应⽤
1.1 Spring MVC 简介
那么在 B/S 架构中,系 统标准的三层架构包括:表现层、业务层、持久层
Spring MVC 本质可以认为是对servlet的封装,简化了我们serlvet的开发
作⽤:1接收请求 2返回响应,跳转⻚⾯
1.2 Spring Web MVC ⼯作流程
url-pattern配置
多个地址
1.3 请求参数绑定
1.3.1 原生servlet
1.3.2 传递参数名称和形参名称一致(自动映射)
1.3.3 手动映射
1.3.4 pojo类参数接收
1.3.5 包装pojo类(嵌套pojo类)参数接收
1.3.6 日期类型
1.4 对 Restful ⻛格请求⽀持
Restful 是⼀种 web 软件架构⻛格,它不是标准也不是协议,它倡导的是⼀个资源定位及资源操作的⻛格。
Restful 的优点
它结构清晰、符合标准、易于理解、扩展⽅便
Restful 的特性
资源(Resources):⽹络上的⼀个实体,或者说是⽹络上的⼀个具体信息
RESTful 的示例:
rest是⼀个url请求的⻛格,基于这种⻛格设计请求的url 没有rest的话,原有的url设计
http://localhost:8080/user/queryUserById.action?id=3
url中定义了动作(操作),参数具体锁定到操作的是谁
有了rest⻛格之后
rest中,认为互联⽹中的所有东⻄都是资源,既然是资源就会有⼀个唯⼀的uri标识它,代表它
http://localhost:8080/user/3
代表的是id为3的那个⽤户记录(资源)
锁定资源之后如何操作它呢?
常规操作就是增删改查
根据请求⽅式不同,代表要做不同的操作
get 查询,获取资源
post 增加,新建资源
put 更新
delete 删除资源
rest⻛格带来的直观体现:就是传递参数⽅式的变化,参数可以在uri中了
/account/1 HTTP GET :得到 id = 1 的 account
/account/1 HTTP DELETE:删除 id = 1 的 account
/account/1 HTTP PUT:更新 id = 1 的 account
URL:资源定位符,通过URL地址去定位互联⽹中的资源(抽象的概念,⽐如图⽚、视频、app服务 等)。
RESTful ⻛格 URL:互联⽹所有的事物都是资源,要求URL中只有表示资源的名称,没有动词。
RESTful⻛格资源操作:使⽤HTTP请求中的method⽅法put、delete、post、get来操作资源。分别对
应添加、删除、修改、查询。不过⼀般使⽤时还是 post 和 get。put 和 delete⼏乎不使⽤。
RESTful ⻛格资源表述:可以根据需求对URL定位的资源返回不同的表述(也就是返回数据类型,⽐如
XML、JSON等数据格式)。
1.4.1 实现
1.5 Ajax Json交互
Json是⼀种与语⾔⽆关的数据交互格式,就是⼀种字符串,只是⽤特殊符号{}内表示对象、[]内表示数 组、""内是属性或值、:表示后者是前者的值
1.5.1 RequestBody
1.5.2 @ResponseBody注解
作⽤是将controller的⽅法返回的对象通过适当的转换器转换为指定的格式之 后,写⼊到response对象的body区,
通常⽤来返回JSON数据或者是XML数据。
注意:在使⽤此注解之 后不会再⾛视图处理器,⽽是直接将数据写⼊到输⼊流中,
他的效果等同于通过response对象输出指定 格式的数据。
2 Spring MVC ⾼级技术
2.1 拦截器(Inteceptor)使⽤
2.1.1 监听器、过滤器和拦截器对⽐
Servlet:处理Request请求和Response响应
过滤器(Filter):对Request请求起到过滤的作⽤,作⽤在Servlet之前,如果配置为/*可以对所 有的资源访问(servlet、js/css静态资源等)进⾏过滤处理
监听器(Listener):实现了javax.servlet.ServletContextListener 接⼝的服务器端组件,它随 Web应⽤的启动⽽启动,只初始化⼀次,然后会⼀直运⾏监视,随Web应⽤的停⽌⽽销毁
作⽤⼀:做⼀些初始化⼯作,web应⽤中spring容器启动ContextLoaderListener
作⽤⼆:监听web中的特定事件,⽐如HttpSession,ServletRequest的创建和销毁;变量的创建、 销毁和修改等。可以在某些动作前后增加处理,实现监控,⽐如统计在线⼈数,利⽤ HttpSessionLisener等。
拦截器(Interceptor):是SpringMVC、Struts等表现层框架⾃⼰的,不会拦截 jsp/html/css/image的访问等,只会拦截访问的控制器⽅法(Handler)。
从配置的⻆度也能够总结发现:serlvet、filter、listener是配置在web.xml中的,⽽interceptor是 配置在表现层框架⾃⼰的配置⽂件中的
在Handler业务逻辑执⾏之前拦截⼀次
在Handler逻辑执⾏完毕但未跳转⻚⾯之前拦截⼀次
在跳转⻚⾯之后拦截⼀次
多个拦截器的执行顺序
2.1.2 拦截器的执⾏流程
在运⾏程序时,拦截器的执⾏是有⼀定顺序的,该顺序与配置⽂件中所定义的拦截器的顺序相关
1)程序先执⾏preHandle()⽅法,如果该⽅法的返回值为true,则程序会继续向下执⾏处理器中的⽅ 法,否则将不再向下执⾏。
2)在业务处理器(即控制器Controller类)处理完请求后,会执⾏postHandle()⽅法,然后会通过 DispatcherServlet向客户端返回响应。
3)在DispatcherServlet处理完请求后,才会执⾏afterCompletion()⽅法。
2.1.3 多个拦截器的执⾏流程
多个拦截器(假设有两个拦截器Interceptor1和Interceptor2,并且在配置⽂件中, Interceptor1拦截 器配置在前),在程序中的执⾏流程如下图所示:
从图可以看出,当有多个拦截器同时⼯作时,它们的preHandle()⽅法会按照配置⽂件中拦截器的配置 顺序执⾏,⽽它们的postHandle()⽅法和afterCompletion()⽅法则会按照配置顺序的反序执⾏。
2.2 处理multipart形式的数据
⽂件上传
原⽣servlet处理上传的⽂件数据的,springmvc⼜是对serlvet的封装
2.3 在控制器中处理异常
2.4 基于Flash属性的跨重定向请求数据传递
3 SSM整合
SSM = Spring + SpringMVC + Mybatis = (Spring + Mybatis)+ SpringMVC
标签:拦截器,请求,回顾,1.3,Spring,MVC,资源 来源: https://blog.csdn.net/GJOED/article/details/117998223
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。