这篇博客开始将总结一下有关框架的知识,在开发中合适的利用框架会使我们的开发效率大大提高。当今比较流行的开源框架:

  • 关注数据流程的MVC框架 (Struts1/2, WebWork, Spring MVC……)
  • 关注数据关系的容器框架 (Spring, GUICE……)
  • 关注数据操作的持久层框架(Hibernate,IBatis……)
 

当然了,各个公司可能也有在此基础上扩展开发的自己使用的框架,但是很多原理的东西都是类似的,所以学习会一套框架,然后能够举一反三,帮助我们很快的接受新的知识。

SSH(Struts +Spring +Hibernate)三大框架,今天来总结一下Struts2的一些知识。所谓框架么,其实就像我们盖房子一样,需要先搭建支架,然后再进行添砖加瓦,使之达到完美。而在软件开发中,框架也是一样的:就是将通用的代码进行封装,使我们可以重复利用,达到了高效开发的效果。当然既然已经搭建好的框架,用到我们的系统中,我们就需要学习它,怎么使我们自己独有的代码和框架进行完美的结合。因为大家都在用这些优秀的框架,所以框架的学习,其实就是框架规范的学习。有了规范,有个约束,有了统一,才能更加有利于合作的开发。

下边先看一下Struts2总括知识:还是比较多的,三大框架之一么:

这篇博客先从总体的角度,进行对Struts2的进行宏观了解。看前三个小标题:

一,Struts2简介:

1,来由:Struts(金属支架),在程序中表示起支撑作用的通用程序代码,Struts2是在Struts1框架的基础上融合了WebWork优秀框架升级得到的。

2,解释:Struts2框架是一个轻量级的MVC流程框架,轻量级是指程序的代码不是很多,运行时占用的资源不是很多,MVC流程框架就是说它是支持分层开发,控制数据的流程,从哪里来,到那里去,怎么来,怎么去的这样一个框架;

3,升级的改善:

Struts1的缺点:

  1. struts框架基于servlet进行开发的,所以servlet的问题在这个框架中都能体现出来
  2. struts框架的流程是固定的,想要扩展业务流程非常的不方便。
  1. 只支持动态视图JSP展现数据,对于现在的SEO(搜索引擎优化)支持不好

Struts2框架改善的地方:

  1. 核心基于Filter
  2. 流程可以动态扩展
  3. 多例创建对象
  4. 支持多种视图展现技术(JSP,Freemarker,Volicity)

二,简单对Struts2了解后,看一下如何进行Strut2的搭建:

1,新建Web项目:进行必备Jar包的拷贝,放到lib目录以便项目的引用,这个我们通过apache官方网站下载后,可以参照里边的实例:

             

2,拷贝框架的核心配置文件Struts.xml,放到src目录下,保留一个基本配置即可,这里没网的话需要我们自己配置一下xml文件对应的DTD或者schema文件,方便我们后期的编写:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6. </struts>

3,然后在我们的web.xml文件中进行核心调度器的配置,这里我们一般过滤所有访问路径即可:

  1. <!-- 配置框架的核心调度器 -->
  2. <filter>
  3. <filter-name>struts2</filter-name>
  4. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  5. </filter>
  6. <filter-mapping>
  7. <filter-name>struts2</filter-name>
  8. <url-pattern>/*</url-pattern>
  9. </filter-mapping>

这样我们的Struts2框架就算搭建出来了,我们就可以使用框架进行开发了,当然了如何使用框架,如何很得心应手的运用框架,还需要不断的使用才行。

三,Struts2框架的源码分析,这也是我当时学习最头疼,但是最让我最感兴趣的地方,因为这些源码才真正将一些神奇的功能进行了解答:

(由于源码步骤过多,而且学习程度不够深,这里简单说一下大概步骤)

1,Tomcat等服务器启动时,框架做的事情:——>反射创建了StrutsPrepareAndExecuteFilter对象,相当于使用Struts2的一个准备对象吧,——>然后创建了Dispatcher(核心调度器),——>通过此对象,加载对象默认的配置文件(org/apache/struts2/default.properties),解析了默认的xml文件(struts-default.xml等),——>并试图加载我们编写的xml文件或者属性文件,——>并创建了我们需要用的PrepareOperations和ExecuteOperations对象。

2,当我们访问jsp页面时,这里会进行页面编码设置,反射创建我们的DefaultActionMapper对象,进行对URI的获取,解析,封装,由于是直接访问的jsp页面,也就是静态的,直接跳转,相对来说比较简单。

3,发送actin请求时,这里比较麻烦,——>利用DefaultActionMapper,进行对URI的获取解析,例如访问那个类,那个方法,是不是动态访问(带有!号),有什么特殊处理(有.x  .y结尾等)。进行相关信息的解析后,——>Dispatcher(核心调度器)反射创建StrutsActionProxyFactory代理对象工厂,这里在反射创建我们要访问的类时,——>模仿了动态代理,创建了代理对象StrutsActionProxy和扩展对象DefaultActionInvocation,——>扩展对象又创建了我们的目标对象工厂,——>然后反射创建了我们想要访问的目标对象action。——>然后通过调用代理对象,执行扩展对象中的方法,——>执行我们框架默认的18个拦截器,——>反射调用访问action方法,——>获取执行后的结果result,——>最后进行相关界面或者action的指向。

这里自我感觉是挺麻烦的,应该画张图更好,可是步骤太多,不知道图得多大,所以简单的文件描述了一下重要的过程,忽略了很多。想说的是要重点掌握几个文件:Struts-default.xml配置文件,default.properties默认的属性文件,dispatcher核心调度器,还有就是模拟动态代理访问action的代理对象(StrutsActionProxy)和扩展对象(DefaultActionInvocation),当然了解越多越好,这样才能帮助我们更好的掌握这个框架,更有利于我们对其进行灵活运用,扩展,更有修改……

Struts2框架大致容貌是这样的,我认为学习这些框架重点不是死记那些规范,那些规则,重要的是我们学习这个框架的思想,这样我们遇到新的框架时才不至于束手无策。就像我们拆笔记本电脑时,重要的不是我们记住那么部件在那,先装那个,后装那个;而是我们电脑的组成部分,电脑的组装思路。因为每一个牌子的电脑的内部结构都是有差异的,但是每个牌子的电脑都会有cpu,cpu安装都需要硅胶等等,知道原理本质,我们才能举一反三,融会贯通。

Struts2(一)——总体介绍的更多相关文章

  1. ABP(现代ASP.NET样板开发框架)系列之1、ABP总体介绍

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之1.ABP总体介绍 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  2. 基于MVC4+EasyUI的Web开发框架形成之旅--总体介绍

    最近花了很多时间在重构和进一步提炼Winform开发框架的工作上,加上时不时有一些项目的开发工作,我博客里面介绍Web开发框架的文章比较少,其实以前在单位工作,80%的时间是做Web开发的,很早就形成 ...

  3. TMS320C54x系列DSP的CPU与外设——第2章 TMS320C54x DSP体系结构总体介绍

    第2章 TMS320C54x DSP体系结构总体介绍 本章介绍TMS320C54x DSP体系结构的概况,包括中央处理单元(CPU).存在器和片内外设. C54x DSP采用了高级的改进哈佛结构,用8 ...

  4. 飞达资讯App总体介绍及关系架构图

    飞达资讯App总体介绍: 下图为飞达资讯App的关系架构图: 该App关系架构图所需的图片云盘链接地址:http://pan.baidu.com/s/1gfHIe4b 提取密码:x1nr 该App的云 ...

  5. 基于WebForm+EasyUI的业务管理系统形成之旅 -- 总体介绍

    一.系统总体介绍 企业业务管理系统是针对经营企业管理而开发的专业管理软件, 是以“精细管理.过程监控”为设计理念,全面满足企业的信息化管理需求,充分发挥专业.平台.灵活等优点. 集进销存.财务.CRM ...

  6. EQueue - 一个C#写的开源分布式消息队列的总体介绍(转)

    源: EQueue - 一个C#写的开源分布式消息队列的总体介绍 EQueue - 一个纯C#写的分布式消息队列介绍2 EQueue - 详细谈一下消息持久化以及消息堆积的设计

  7. AngularJs学习笔记1——总体介绍

    这周末在家呆了两天,正好中午闲暇时间继续分享Angularjs相关,今天主要分享Angularjs总体介绍及数据绑定部分内容,下面直接进入主题. 1.基本概念: AngularJS是为了克服HTML在 ...

  8. [转帖]Kubernetes及容器编排的总体介绍【译】

    Kubernetes及容器编排的总体介绍[译] 翻译自The New Stack<Kubernetes 生态环境>作者:JANAKIRAM MSV和 KRISHNAN SUBRAMANIA ...

  9. 基于DDD的现代ASP.NET开发框架--ABP系列之1、ABP总体介绍

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之1.ABP总体介绍 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

随机推荐

  1. Handsontable Read-only cells

    一,列只读

  2. PC-CSS-分隔线

    单个标签实现分隔线: 点此查看实例展示 .demo_line_01{ padding: 0 20px 0; margin: 20px 0; line-height: 1px; border-left: ...

  3. Dynamics CRM2013 missing prvReadComplexControl privilege

    左右ComplexControl 权限设置,SDK例如,在以下的说明,仅供内部使用的实体,但是你可以没有找到这个叫配置安全角色ComplexControl的东西的. 在msdn上面查下就会发现这么一段 ...

  4. mvc分页生成静态页,mvc生成静态页

    http://blog.csdn.net/xxj_jing/article/details/7899125 分页生成静态页 http://www.cnblogs.com/luanyilin/archi ...

  5. 【转载】安装和使用花生壳(linux)

    安装和使用花生壳(linux) 一.安装说明(以CentOS 5为例) 1.安装必要的开发包 [root@localhost ~]# yum install gcc gcc-c++ autoconf ...

  6. ms sql 根据表名查询 表中所有字段的属性值 sql语句

    SELECT表名=case when a.colorder=1 then d.name else '' end,--表说明=case when a.colorder=1 then isnull(f.v ...

  7. oracle 初探内存结构

    数据库的存储机构 分为 逻辑存储结构 和 物理存储结构 逻辑存储结构: 数据库.表空间.段.区.块         物理存储结构: 数据库.控制文件.数据文件.初始化参数文件.OS块等. 一个区只能在 ...

  8. iOS-OC-基础-NSArray常用方法

    NSArray常用方法和属性 // ——————————————————————数组常用方法—————————————————————— // 1.计算数组元素的个数: count NSArray * ...

  9. 判断两个View的GRect是否相等

    if (CGRectEqualToRect(self.view.frame, rect)) { // do some stuff }

  10. pp to write

    vanishing gradient problem multi-dimensional lstm