1.JSP&Servlet中的MVC

  MVC的关键是,业务逻辑要与表示分离。通过把业务逻辑放在一个“模型”中,这样业务逻辑本身就能作为一个可重用的JAVA类存在。

  在JSP&Servlet中,servlet充当cotroller的角色,它的工作流程如下:

  • 获取请求数据封装;
  • 调用服务方法;
  • 跳转(转发/重定向);

2.通用的ActionServlet

  在JSP&Servlet中,用户的每个不同请求都需要一个servlet控制器处理,并且进行servlet的配置。由于servlet的工作流程的相似性,为了避免创建多个servlet,可以做一个通用的servlet(ActionServlet),它的工作流程如下:

  • 根据请求的URL,得到业务处理Action类方法;
  • 调用Action类中的方法,获得返回标记;
  • 根据返回标记得到转发方法以及转发页面;
  • 转发;

  原本需要针对每个请求创建多个servlet,现在只需要对应每个请求创建一个Action类,只用一个servlet就可以完成控制器的功能。URL对应的Action类和Action类中的方法,返回值标记对应的转发方法和转发页面都要写在配置文件中。这个配置文件结构如下:

  ActionServlet的具体工作流程如下:

  • 获取请求URL,得到路径名;
  • 根据路径名,读取配置文件,得到业务处理的Action的全名及处理方法;
  • 利用反射机制创建对象,调用方法获取返回标记;
  • 根据返回标记,读取配置文件,得到对应的转发类型和转发页面;
  • 转发;

3.读取配置文件

  由于需要多次查询配置文件(每个请求),所以配置文件最好只读一次,可以在ActionServlet的init()方法中读取配置文件。因为servlet的init()只在servlet初始化时执行一次,而且是单例的。

  用JAVA类封装struts.XML

  • action节点--->ActionMapping(name,className,method,Map(String,Result) results属性)
  • result节点--->Result(name,type,page属性)
  • 所有action-->ActionMappingManager(Map(String,ActionMapping) allActions属性)

  ActionMappingManager类在构造函数中读取struts.XML文件,将其封装在一个Map(String,ActionMapping) allActions对象中,并提供一个返回ActionMapping的getActionMapping(String actionName)方法,使ActionServlet可以通过请求URL得到响应的ActionMapping对象。ActionServlet在init()方法中初始化ActionMappingManager对象,从而保证只读取struts.XML一次。

4.struts开发步骤

  有了通用的ActionServlet,struts开发只需要两步:

写Action类;

配置Action;

基于MVC的应用框架之Struts前奏的更多相关文章

  1. 十三、MVC的WEB框架(Structs2)

    一.Structs2的应用 Structs2是基于MVC的WEB框架.一般基于框架的程序要运行成功,对于JAR包的版本,配置文件的正确性有着苛刻的要求,一个地方错了,都会导致框架程序运行出错. 1.首 ...

  2. struts1:(Struts重构)构建一个简单的基于MVC模式的JavaWeb

    在构建一个简单的基于MVC模式的JavaWeb 中,我们使用了JSP+Servlet+JavaBean构建了一个基于MVC模式的简单登录系统,但在其小结中已经指出,这种模式下的Controller 和 ...

  3. 基于MVC设计模式的Web应用框架:struts2的简单搭建(一)

    Struts2的初步介绍 Struts2是apache项目下的一个web 框架,普遍应用于阿里巴巴.京东等互联网.政府.企业门户网站.虽然之前存在了很大的安全漏洞,在2013年让苹果.中国移动.中国联 ...

  4. Struts2是一个基于MVC设计模式的Web应用框架

    Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互. Struts ...

  5. Spring MVC -- MVC设计模式(演示4个基于MVC框架的案例)

    对于简单的Java Web项目,我们的项目仅仅包含几个jsp页面,由于项目比较小,我们通常可以通过链接方式进行jsp页面间的跳转. 但是如果是一个中型或者大型的项目,上面那种方式就会带来许多维护困难, ...

  6. web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例

    Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...

  7. asp.net -mvc框架复习(10)-基于三层架构与MVC搭建项目框架

    一.三种模式比较 1.MVC框架(适合大型项目) (1).V视图 (网页部分) (2).M模型 (业务逻辑+数据访问+实体类) (3).C控制器 (介于M和V之间,起到引导作用) 2.三层架构 (1) ...

  8. 自定义mvc或mtv框架:基于wsgiref的web框架

    把mvc或mtv框架的model数据库,view:html,control逻辑处理,url判别,wsgiref集中在一个文件 代码如下 #!/usr/bin/env python #-*- codin ...

  9. 基于maven的ssm框架整合

    基于maven的ssm框架整合 第一步:通过maven建立一个web项目.                第二步:pom文件导入jar包                              (1 ...

随机推荐

  1. 淘宝封装的一款ui 非常不错

    好用的淘宝ui http://m.sui.taobao.org/demos/  手机端访问地址

  2. Java中的Double类型计算

    一.问题的提出: 如果我们编译运行下面这个程序会看到什么?public class Test{    public static void main(String args[]){        Sy ...

  3. iOS开发 自定义窗口 以及 点击scrollView置顶

    static UIWindow *topWindow_; static UIScrollView *scrollView_; /** * 显示顶部窗口 */ + (void)show { dispat ...

  4. mysql优化(三)–explain分析sql语句执行效率

    mysql优化(三)–explain分析sql语句执行效率 mushu 发布于 11个月前 (06-04) 分类:Mysql 阅读(651) 评论(0) Explain命令在解决数据库性能上是第一推荐 ...

  5. 游戏引擎/GUI的设计与实现-常见GUI架构

    以X Window为代表的客户/服务器架构. X Window通常是指X服务器及封装了通信协议的客户端库.服务器端主要负责输入事件的分发,窗口层次的管理,以及显示输出的处理,其它功能基本上都是在客户端 ...

  6. RESEACH PAPER

      个,proquest的username和password赫然在目,别急,再看第4个结 果"HB Thompson Subscription Online Databases", ...

  7. Cmd Markdown 高阶语法手册

    『Cmd 技术渲染的沙箱页面,点击此处编写自己的文档』 Cmd Markdown 高阶语法手册 1. 内容目录 在段落中填写 [TOC] 以显示全文内容的目录结构. [TOC] 2. 标签分类 在编辑 ...

  8. robotframework笔记25

    library文档工具(Libdoc) Libdoc是机器人框架内置的工具生成的关键字的文档 测试库和资源文件的HTML和XML格式. 前 格式适用于人类,后者 骑 和其他 工具. Libdoc显示库 ...

  9. C++ 如何重复利用一个内存地址块

    #include<iostream> using namespace std; ; }; int main(int argv ,char * args[]) { double *p1,*p ...

  10. hduoj-----(1068)Girls and Boys(二分匹配)

    Girls and Boys Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...