文档详情

java实现mvc模式代码,从零开始实现一个简易的JavaMVC框架(九)--优化MVC代码.pdf

发布:2023-07-02约1.54万字共17页下载文档
文本预览下载声明
java实现mvc模式代码,从零开始实现⼀个简易的JavaMVC框 架(九)--优化MVC代码 前⾔ 在从零开始实现⼀个简易的Java MVC框架(七)--实现MVC中实现了doodle框架的MVC的功能,不过最后指出代码的逻辑不是很好,在这 ⼀章节就将这⼀部分代码进⾏优化。 优化的⽬标是1.去除DispatcherServlet请求分发器中的http逻辑代码;2.将ControllerHandler和ResultRender中代码按功能细分出来, 使其各司其职。 修改DispatcherServlet 创建接⼝ 先在com.zbw.mvc包下创建两个包handler和render,分别⽤于放ControllerHandler和ResultRender拆分出来的功能类。 再在这两个包下创建两个接⼝,以便后⾯的功能类都按这个接⼝规范。 package com.zbw.mvc.handler; import com.zbw.mvc.RequestHandlerChain; /** * 请求执⾏器 Handler */ public interface Handler { /** * 请求的执⾏器 */ boolean handle(final RequestHandlerChain handlerChain) throws Exception; } package com.zbw.mvc.render; import com.zbw.mvc.RequestHandlerChain; /** * 渲染请求结果 interface */ public interface Render { /** * 执⾏渲染 */ void render(RequestHandlerChain handlerChain) throws Exception; } 实现RequestHandlerChain 上⾯两个接⼝都有个参数RequestHandlerChain,这个类是整个请求的执⾏链,⽤于存储整个请求需要保存的⼀些属性和串联整个请求。 在com.zbw.mvc下创建这个类 package com.zbw.mvc; import ... /** * http请求处理链 */ @Data @Slf4j public class RequestHandlerChain { /** * Handler迭代器 */ private Iterator handlerIt; /** * 请求request */ private HttpServletRequest request; /** * 请求response */ private HttpServletResponse response; /** * 请求http⽅法 */ private String requestMethod; /** * 请求http路径 */ private String requestPath; /** * 请求状态码 */ private int responseStatus; /** * 请求结果处理器 */ private Render render; public RequestHandlerChain(Iterator handlerIt, HttpServletRequest request, HttpServletResponse response) { this.handlerIt = handlerIt; this.request = request; this.response = response; this.requestMethod = request.getMethod(); this.requestPath = request.getPathInfo(); this.responseStatus = HttpServletResponse.SC_OK; } /** * 执⾏请求链 */ public void doHandlerChain() { try { while (handlerIt.hasNext()) { if (!handlerIt.next().handle(this)) { break; } } } catch (Exception e) { log.error(doHandlerChain error, e); render = new InternalErro
显示全部
相似文档