一。使用Servlet来处理请求响应

当client提交数据之后。接着发送请求,请求被封装成对象,server接收到请求,依据请求的URL。来推断将请求对象交由哪个Servlet处理。

在servlet中,我们能够依据请求是从哪里发出的。来推断我们详细运行哪段处理表现层业务逻辑的if-else.或者。可能我们client会提交一个參数,我们能够依据參数来推断调用哪段代码去渲染表现层。返回给client。不管是怎么推断,中间的选择都是要得出我们要返回哪个表现层,比如。返回哪个JSP。

当表现层越来越多的时候。我们的选择逻辑越来越庞大,并且,每次添加一个表现层,我们就要在servlet里面,if -else进去返回这个表现层的界面逻辑代码。首先。if-else过长是一个问题,并且。每次改动代码,严重违反了我们的开放封闭原则。

事实上,使用了servlet之后,已经有明显的MVC的思想了。形式上也有MVC的意思,仅仅是一些小的不足,改进这些不足,就会诞生更成熟的MVC实践。

首先是改进IF-Else的问题,针对我们曾经的设计经验。if-else过长。我们选择的是工厂+反射来改进。

这样。在这里,我们就拆出来非常多处理请求响应的类。另外。反射是依赖配置文件的,所以。也会多出来一个配置文件,来配置我们在动态调用的时候。详细实例化哪一个类来处理请求响应。if-else处理掉了,所以后面的开放封闭的问题也就不存在了。

基于上面这个思路实现的MVC框架,想象中还是蛮美好的。

二。sturts的请求响应分析

以下来分析下struts中,是怎样处理请求响应的:

前面过程事实上一样。首先client发送请求。请求地址是符合我们servlet配置的url-name的。所以当server接收到请求的时候,创建完请求响应对象,会依据我们配置的url-name截取出URL,然后通过各种推断,之后。找到处理这个请求响应的类,当这个类处理完毕之后,会返回一个专向的信息,信息里面至少包括:转向地址(转到哪里去)。和请求响应信息等。

之后,我们的前端负责界面展现的servlet(在框架中已经被做好了)会帮我们将响应分发给对应的视图。

添加了struts之后,相比直接使用Servelt,我们屏蔽掉非常多细节上的实现跟代码上的坏味道。让开发过程中更关注相对变化的东西。

基于请求响应的MVC框架调用分析的更多相关文章

  1. Android应用程序MVC框架实例分析

    问题提出:如何优雅地分离出应用程序的状态.用户交互和数据表现?如何通过框架体现工程的高性能.高灵活性.高响应性? MVC定义:model.view.controller三者的有机组合,分别表示:模型. ...

  2. 基于jquery开发的UI框架整理分析

    根据调查得知,现在市场中的UI框架差不多40个左右,不知大家都习惯性的用哪个框架,现在市场中有几款UI框架稍微的成熟一些,也是大家比较喜欢的一种UI框架,那应该是jQuery,有部分UI框架都是根据j ...

  3. 基于Node的高性能MVC框架

    赶上公司去Windows化,有一大波.net站点需要转成Node.js,于是自己就顺便琢磨一个通用的Node版MVC框架. 经过几天的努力,beta版终于面世了!因为其高性能的特点,特地命名node- ...

  4. MVC框架介绍分析

    相信绝大多数学习过Javaweb的人都知道一个系统的模式--Spring模式,以这么模式中为基础,衍生出各种各样的新的模式,其中最重要的就是Spring下的Spring MVC MVC是Xerox P ...

  5. 基于Discuz的原生态MVC框架Uxf

    前言 国内大量网站在使用Discuz程序,当然,大多数网站只将其作为一款论坛程序,少量的将其作为一款完整的社区程序.因此,授权不授权的情况撇开不谈,很多人都会基于该款程序进行二次开发. Discuz二 ...

  6. Mvc 流程调用分析

    链接地址 https://www.processon.com/view/link/59e71fbbe4b09000f03ce78e 总结: 1. 在Global.ascx 中我们使用RouteColl ...

  7. 基于ASP.NET的MVC框架下的MvcPaper分页控件的使用技术

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using Webdiyer. ...

  8. 源码分析系列 | 从零开始写MVC框架

    1. 前言 2. 为什么要自己手写框架 3. 简单MVC框架设计思路 4. 课程目标 5. 编码实战 5.1 配置阶段 web.xml配置 config.properties 自定义注解 5.2 初始 ...

  9. 请求如何进入ASP.NET MVC框架

    一.前言 对于WebForm开发,请求通常是一个以.aspx结尾的url,对应一个物理文件,从代码的角度来说它其实是一个控件(Page).而在MVC中,一个请求对应的是一个Controller里的Ac ...

随机推荐

  1. SpringBoot学习笔记(9)----SpringBoot中使用关系型数据库以及事务处理

    在实际的运用开发中,跟数据库之间的交互是必不可少的,SpringBoot也提供了两种跟数据库交互的方式. 1. 使用JdbcTemplate 在SpringBoot中提供了JdbcTemplate模板 ...

  2. Collections库使用

    Date: 2019-05-27 Author: Sun Collections库 ​ Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collec ...

  3. 插入排序、冒泡排序、选择排序、希尔排序、高速排序、归并排序、堆排序和LST基数排序——C++实现

    首先是算法实现文件Sort.h.代码例如以下: <pre name="code" class="java">/* * 实现了八个经常使用的排序算法: ...

  4. 11.IntelliJ IDEA详细配置和使用教程(适用于Java开发人员)

    转自:https://blog.csdn.net/chssheng2007/article/details/79638076 前言 正所谓工欲善其事必先利其器,对开发人员而言若想提高编码效率,一款高效 ...

  5. 34.share_ptr智能指针共享内存,引用计数

    #include <iostream> #include <memory> #include <string> #include <vector> us ...

  6. IT男送什么礼物给女朋友呢?

    每到各种节日,加班到吐血的IT男们,总是没什么时间准备礼物给女朋友,偶尔想起又不知道送什么的好,女朋友虽然心里不说,多少有些难过.现在推荐朋友的羊毛毡手工店,每一件都是亲手制作,特别是可以个性定制,女 ...

  7. [转]Zen Cart官网屏蔽中国用户访问的真正原因

    近需要到 zen cart 的官方网站查询一些资料,却发现无法访问!在网上搜索一番以后,原来如此. Zen Cart官网屏蔽中国用户访问的真正原因 作者:[鹏程万里] 日期:2011-03-26 准备 ...

  8. iOS网络缓存机制

    iOS的网络引擎自带缓存机制: 网络请求在经过网络引擎时有过处理(添加了字段),所以用api的网络请求无法获取缓存. [NSURLCache sharedURLCache]

  9. Ubuntu18.04 解压zip文件乱码的解决方法

    在Ubuntu的系统下解压zip文件的时候居然出现了乱码,通过查找网上的资料,解决的办法有两种 一.通过unzip行命令解压,指定字符集,由于zip格式中并没有指定编码格式,Windows下生成的zi ...

  10. d3 bubble源码分析

    技术 d3.d3.pack.d3.hierarchy 展示 https://bl.ocks.org/xunhanliu/e0688dc2ae9167c4c7fc264c0aedcdd1 关于怎么使用, ...