struts2总体介绍
这篇博客开始将总结一下有关框架的知识,在开发中合适的利用框架会使我们的开发效率大大提高。当今比较流行的开源框架:
- 关注数据流程的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的缺点:
- struts框架基于servlet进行开发的,所以servlet的问题在这个框架中都能体现出来
- struts框架的流程是固定的,想要扩展业务流程非常的不方便。
- 只支持动态视图JSP展现数据,对于现在的SEO(搜索引擎优化)支持不好
Struts2框架改善的地方:
- 核心基于Filter
- 流程可以动态扩展
- 多例创建对象
- 支持多种视图展现技术(JSP,Freemarker,Volicity)
二,简单对Struts2了解后,看一下如何进行Strut2的搭建:
1,新建Web项目:进行必备Jar包的拷贝,放到lib目录以便项目的引用,这个我们通过apache官方网站下载后,可以参照里边的实例:
![](/assets/blank.gif)
2,拷贝框架的核心配置文件Struts.xml,放到src目录下,保留一个基本配置即可,这里没网的话需要我们自己配置一下xml文件对应的DTD或者schema文件,方便我们后期的编写:
![](https://code.csdn.net/assets/CODE_ico.png)
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- </struts>
3,然后在我们的web.xml文件中进行核心调度器的配置,这里我们一般过滤所有访问路径即可:
![](https://code.csdn.net/assets/CODE_ico.png)
- <!-- 配置框架的核心调度器 -->
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </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安装都需要硅胶等等,知道原理本质,我们才能举一反三,融会贯通。
转载于:https://www.cnblogs.com/xwlhyy1072552712/p/4793778.html
struts2总体介绍相关推荐
- 基于DDD的现代ASP.NET开发框架--ABP系列之1、ABP总体介绍
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之1.ABP总体介绍 ABP是"ASP.NET Boilerplate Project (ASP.NET样 ...
- KubeOperator总体介绍(K8S集群部署管理工具)
总体介绍⚓︎ KubeOperator 是一个开源的轻量级 Kubernetes 发行版,专注于帮助企业规划.部署和运营生产级别的 Kubernetes 集群. KubeOperator 提供可视化的 ...
- 代码检查规则背景及总体介绍
中秋小长假结束,放松过后的你准备好新一轮的学习了吗?端坐小板凳开始study吧! 今天为大家带来的课程是<代码检查规则背景及总体介绍>,将从代码检查的意义.代码检查场景及工具.代码检查规则 ...
- 实时计算 Flink 版总体介绍
简介:实时计算 Flink 版(Alibaba Cloud Realtime Compute for Apache Flink,Powered by Ververica)是阿里云基于 Apache F ...
- HelloWorld Detail Earth 3D Engine(一)总体介绍
HelloWorld Detail Earth 3D Engine(一)总体介绍 一 简介 HelloWorld Detail Earth3D Engine 拥有数字地球的基本功能和架构,同时拥有3D ...
- 【GPT4】微软 GPT-4 测试报告(1)总体介绍
欢迎关注[youcans的AGI学习笔记]原创作品,火热更新中 微软 GPT-4 测试报告(1)总体介绍 微软 GPT-4 测试报告(2)多模态与跨学科能力 微软 GPT-4 测试报告(3)编程能力 ...
- ABP开发框架的总体介绍
ABP FRAMEWORK 中文文档 https://docs.abp.io/zh-Hans/abp/latest ABP官方网站:http://www.aspnetboilerplate.com ...
- RISC-V E300 SOC架构介绍——1.总体介绍
0.基于RISC-V SOC平台的总体介绍: E300平台是SiFive公司Freedom Everywhere系列的第一个可定制的RISC-V SoC. E300 SoC包括一个SiFive系列 R ...
- 自己动手写一个推荐系统,推荐系统小结,推荐系统:总体介绍、推荐算法、性能比较, 漫谈“推荐系统”, 浅谈矩阵分解在推荐系统中的应用...
自己动手写一个推荐系统 废话: 最近朋友在学习推荐系统相关,说是实现完整的推荐系统,于是我们三不之一会有一些讨论和推导,想想索性整理出来. 在文中主要以工程中做推荐系统的流程着手,穿插一些经验之谈,并 ...
最新文章
- C++排序算法实现(更新中)
- 【Android 异步操作】AsyncTask 异步任务 ( FutureTask 模拟 AsyncTask 执行过程 | AsyncTask 执行过程回顾 | FutureTask 分析 )
- php include和require
- wmic 获取运行内存大小
- win10系统的定位服务器,Win10系统无法开启定位功能的原因及解决方法
- matlab %3c handle,volume browser (updated).htm 源代码在线查看 - Matlab显式三维地震数据的源代码 资源下载 虫虫电子下载站...
- Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题
- Python设置网卡自己封装的Internet类 WMI
- 大道至简 第二章 读后随笔
- 器件选型基本总则及选型标准
- 计算机基础知识表格斜线,怎么在excel中画斜线-制作好看的Excel表格必备技能:3秒制作斜线表头,简单到没朋友...
- 服务器03系统 关wmi,win10系统WMI服务器怎么关闭
- python调用微信客户端_Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例...
- openssl官网-下载安装过程
- youtube 字幕视频搬运
- 对于踏入社会的我们来说,学历到底有多重要?学历的用途介绍
- 先有史记还是先有资治通鉴?司马迁、司马光和司马懿三人什么关系?
- Git LFS(Large File Storage)使用简介
- Linux运维工程师主要做什么工作?
- KMP字符串模式匹配算法【精简代码模板】
热门文章
- 也来看看Android的ART运行时
- 树莓派linux系统识别u盘启动,树莓派Raspberry Pi实战之命令行下实现USB存储设备自动挂载...
- c执行cmd pdf2swf_PDF2SWF简单使用
- 写一个php发通知公告,从我的服务器PHP发送推送通知
- python编程环境要求_python公开课|我们需要优秀Python编程环境的要求居然是这些...
- 手机浏览器不支持jquery_简洁清新实用适合做浏览器主页 支持手机浏览器
- 微信外卖小程序 怎么计算与客户的距离_微信小程序结合腾讯位置服务实现用户商家距离计算...
- win7 clr20r3程序终止_mscorsvw.exe是什么进程 win7系统怎么禁用mscorsvw.exe进程【禁用方法】...
- html修改按钮背景颜色,html鼠标悬浮在按钮上,让按钮背景变色
- linux脚本下载,一个测试下载速度的shell脚本