当前位置: 首页 > news >正文

天元建设集团有限公司鹿腾长沙地区网络优化设计方案

天元建设集团有限公司鹿腾,长沙地区网络优化设计方案,seo案例分享,壹六八信息科技网站建设责任链设计模式详解 一、定义 责任链设计模式#xff08;Chain of Responsibility Pattern#xff09;是一种行为设计模式#xff0c;它允许多个对象有机会处理请求#xff0c;从而避免请求的发送者和接收者之间的耦合。这种模式将这些对象连接成一条链#xff0c;并沿着…责任链设计模式详解 一、定义 责任链设计模式Chain of Responsibility Pattern是一种行为设计模式它允许多个对象有机会处理请求从而避免请求的发送者和接收者之间的耦合。这种模式将这些对象连接成一条链并沿着这条链传递请求直到有一个对象处理它为止。 就是说每个结点会处理一件事情如果结点间出现异常那么链路就会中断。 二、责任链的主要结构 主要结构 责任链模式的核心结构可以分为以下几个部分 抽象处理者Handler 定义一个处理请求的接口通常是一个抽象类包含一个方法来处理请求以及一个指向下一个处理者的引用。提供设置和获取下一个处理者的方法。 具体处理者ConcreteHandler 继承或实现抽象处理者接口。具体处理请求的实现如果当前处理者不能处理该请求则将其传递给下一个处理者。 客户端Client 创建处理链的实例并将请求传递给链中的第一个处理者。 三、工作原理 当一个请求发送到责任链中的第一个处理者时它会检查是否能够处理该请求。如果能够处理处理者就会处理请求如果不能处理它就会将请求传递给下一个处理者直到找到能够处理请求的处理者或者链的末端。 四、优缺点 优点 解耦请求的发送者和接收者之间没有直接关系发送者无需知道具体哪个处理者处理了请求。灵活性可以通过动态地添加或删除责任链中的处理者来改变处理请求的逻辑。增强代码的可扩展性可以在不修改现有代码的情况下增加新的处理者。 缺点 性能问题如果链条太长可能会导致性能问题尤其是在每个处理者只做很少的处理时。调试复杂性由于请求在多个处理者之间传递调试起来可能会比较困难。 五、Spring MVC框架的责任链模式应用 springmvc流程 用户发起请求请求先被 Servlet 拦截转发给 Spring MVC 框架Spring MVC 里面的 DispatcherSerlvet 核心控制器会接收到请求并转发给HandlerMappingHandlerMapping 负责解析请求根据请求信息和配置信息找到匹配的 Controller类不过这里如果有配置拦截器就会按照顺序执行拦截器里面的 preHandle方法找到匹配的 Controller 以后把请求参数传递给 Controller 里面的方法Controller 中的方法执行完以后会返回一个 ModeAndView这里面会包括视图名称和需要传递给视图的模型数据视图解析器根据名称找到视图然后把数据模型填充到视图里面再渲染成 Html 内容返回给客户端 过滤器链Filter Chain 过滤器是基于 Servlet 规范的它们用于在请求到达目标 Servlet 之前以及响应返回客户端之前执行一些通用的任务。过滤器链是基于 Servlet 容器的通常用于处理跨请求的通用任务比如日志记录、安全检查、压缩等。责任链模式体现在多个过滤器按配置的顺序依次执行如果某个过滤器决定拦截请求则可以中止链条的继续传递。过滤器链的执行流程 客户端发出请求。请求首先到达过滤器链按照配置顺序依次执行。如果某个过滤器决定不放行请求可以直接返回响应从而中止后续的处理流程。如果所有过滤器都放行则请求继续到达 Spring MVC 的 DispatcherServlet。 拦截器链Handler Interceptor 拦截器是 Spring MVC 提供的更加精细的请求处理机制允许在控制器方法之前和之后进行拦截处理。HandlerInterceptor 接口提供了三个主要方法preHandle、postHandle 和 afterCompletion这些方法可以在请求处理的不同阶段被调用。在 Spring MVC 的配置中多个拦截器可以被配置成链式调用它们之间的关系就是一种典型的责任链模式。请求到达 DispatcherServlet 时首先会通过拦截器链的 preHandle 方法如果所有的拦截器都返回 true请求才会继续到达处理器Handler。处理完成后依次调用拦截器的 postHandle 和 afterCompletion 方法。拦截器链的执行流程请求到达 DispatcherServlet 后根据 Handler Mapping 找到对应的 Controller 处理器。在 Controller 方法执行之前拦截器链中的 preHandle 方法依次执行。如果所有 preHandle 方法都返回 true则继续执行 Controller 方法。Controller 方法执行完毕后拦截器链中的 postHandle 方法按照配置顺序依次执行。最后afterCompletion 方法会在请求完成后执行用于进行一些资源清理或日志记录等操作。 处理器映射链Handler Mapping Chain 在 Spring MVC 中处理器映射Handler Mapping用于将请求 URL 映射到相应的处理器Controller。可以配置多个处理器映射通过责任链模式来依次检查每一个映射器直到找到一个合适的处理器。处理器映射链的执行流程DispatcherServlet 根据配置的多个 Handler Mapping 依次查找合适的 Controller。当找到一个匹配的 Controller 时停止继续查找并调用该 Controller 处理请求。 六、责任链示例 abstract class Handler {protected Handler next;public void setNext(Handler next) {this.next next;}public abstract void handleRequest(int request); }class ConcreteHandler1 extends Handler {Overridepublic void handleRequest(int request) {if (request 10) {System.out.println(Handler1处理请求: request);} else if (next ! null) {next.handleRequest(request);}} }class ConcreteHandler2 extends Handler {Overridepublic void handleRequest(int request) {if (request 10 request 20) {System.out.println(Handler2处理请求: request);} else if (next ! null) {next.handleRequest(request);}} }class Client {public static void main(String[] args) {Handler handler1 new ConcreteHandler1();Handler handler2 new ConcreteHandler2();handler1.setNext(handler2);int[] requests {5, 14, 22};for (int request : requests) {handler1.handleRequest(request);}} }
http://www.zqtcl.cn/news/334561/

相关文章:

  • 沛县网站设计html制作网页的代码
  • 南昌网站建设公司如何万维网络(临沂网站建设)
  • 张家界做网站洛阳网站建设哪家专业
  • 快餐网站模板电子版邀请函制作软件免费
  • 有什么做视频的素材网站网站名称注册保护
  • 北京 顺义 网站制作h5网站网站建设
  • 网站在百度上搜不到了wordpress导航菜单加图片
  • wordpress网站访问慢网站建设35类
  • 绍兴做网站价格字体
  • asp.net网站开发实训可以不花钱做网站吗
  • 北京网站的制作设计服务器和电脑主机的区别
  • 北京网站建设的服务公司凡科网站 怎么开支付
  • 包头公司做网站知名做网站费用
  • 安徽网站建设服务平台重庆网站建公司大全
  • 有什么网站可以做中间人的相城区建设局网站
  • 房屋装修在线设计网站百度联盟广告怎么屏蔽
  • 网站,商城,app+建设域名网址注册
  • 肥西做网站设计网页页面
  • 怎样做百度推广网站iis服务器的默认网站
  • 东莞建设工程交易中心门户网站湖南设计网站机构
  • 做网站在网站建设客户
  • 河北建设厅安监站官方网站一个新手怎么做电商
  • 做结婚请柬网站有那些做网店哪个网站好
  • 做网站尽在美橙互联欧美简约风格网站设计
  • idea建设完整的网站微官网下载
  • 阿城区建设小学网站上海建设行政主管部门政务网站
  • 西丽网站建设网站怎样做才能有点击率
  • 网站建设图片大小建设部网站1667号公告
  • 做wps的网站赚钱网站建设中网站图片如何修改
  • 公司招商型网站建设怎么自己做网站挣钱