struts2 概念
英文含义:支撑,支柱的意思。
来源:Jakarta项目中的一个子项目,然后转向了Apache软件基金会,在里面开发出一些非盈利的开源的项目。
含义:是流行和成熟的框架,是基于MVC设计模式的Web应用程序框架。
目的:为了帮助我们减少,在运用MVC设计模型来开发Web应用的时间。
--MVC模式是什么?
发展过程
Jsp中可以把所有的代码和业务逻辑全部写在里面,这个时候代码就非常臃肿,没有分离,这种事不推荐的。
所以推出第一种设计模式“Jsp+JavaBean=Model1”,但是这种模式只适用于小型网站的开发,已经做好初步的“表达”和“内容”方面的分离,在数据存取的过程中是通过“JavaBean”来进行操作的,但不适合大型项目的开发,因为将大部分的Java代码放到“Jsp”中,这样代码可维护性就很差了。
后来又推出了一种“Jsp+Servlet+JavaBean=Model2”,也就是最典型的MVC。
含义:MVC是模型视图控制器(Model View Controller),一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法,来组织代码。将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
Model(JavaBean),View(Jsp),Controller(Action)
struts2(2007年)和struts1(2001年)
struts2对于struts1而言,已经有了革命性的改革了。
不是全的框架,在性能和稳定都是有很好的保证的。
是通过“WebWork”进行的升级,所以是继承了“WebWork”,没有继承“Struts1”。
吸收了Struts1和WebWork两者的优势。
运行环境:
Servlet API 2.4
JSP API 2.0
Java 5
搭建Struts2的环境步奏:
下载jar包;
搭建Web项目;
创建并完善相关的配置文件;
创建Action并测试启动;
Web项目启动的时候,第一个加载的文件就是“web.xml”文件。
一来就要加过滤器“filter”。
<filter> <filter-name>strust2</filter-name> <filter-class>org.apache.strusts2.dispatcher.ng.filter.StrutsPerpareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>strust2</filter-name> <url-pattern>/*</url-pattern>//表示所有的路径都需要过滤 </filter-mapping>
Action的返回值,String,可以理解为是,视图的路径。
FilterDispatcher(2.0-2.1.2)核心过滤器
StrutsPerpareAndExecuteFilter(最新,2.1.3~new,替代)核心过滤器
为什么会被取代?
因为以前写一个自己的过滤器,然后通过ACtion,然后通过FilterDispatcher的时候是做不到的。而现在,StrutsPerpareAndExecuteFilter就可以在执行自己的添加的过滤器。能在“准备”和“执行”之间进行,添加自己的过滤器。
HttpServletRequest
-->经过核心过滤器
-->将“.action”
-->添加到“ActionMapper”,只有“.action”,查找有没有这个"Action"
-->回到核心过滤器-->ActionProxy①
-->以“ActionProxy”创建“Action”的反向的实例
-->经过一系列的拦截器
-->执行“Action”
-->返回Result②
-->经过一系列的拦截器
-->通过HttpServletResponse返回到用户的视图
①-->configurationManager-->读取struts.xml,找到具体的“Action类”
②返回到对应的Jsp
web.xml文件与MVC框架之间的关系:
任何的MVC框架都需要与Web应用整合,这就不得不借助于web.xml文件,只有配置在web.xml文件中的Servlet才会被应用加载MVC框架。
通常,所有的MVC框架都需要Web应用加载一个核心控制器,对于Struts2框架而言,需要加载“StrutsParpareAndExecuteFilter”,只要Web应用加载了,那么就会加载Struts2框架。
struts.xml
利用率最高,也是struts2的核心文件。
只要是做Action的映射,以及Action包含的Result的定义。
struts.xml中包含的内容:
1、全局属性
2、用户请求和响应Action之间的对应关系
3、Action可能用到的参数和返回结果
4、各种拦截器的配置
struts.properties
1、struts2框架的全局属性文件,自动加载
2、包含了很多key-value键值对。
3、完全可以不用,因为可以配置在struts.xml里面中,使用constant元素
HttpServletRequest、HttpServletResponse、ServletContext其实是Servlet API,所以在Servlet可以直接调Servlet API。
struts2提供了三种方式去访问Servlet API:
1、ActionContext(上下文的类,以Map进行存储的)
2、***Aware接口
3、ServletActionContext
默认Action
<default-action-ref name="abc">
<action name="abc">
<refult>/***.jsp</result>
</action>
更改后缀
<constant name="struts.action.extension" value="html"></constant>
***.html
如果不要后缀加载Action的话,value可以改成“”,也可以将这整个“constant”删掉。
传值:
implements ModelDriven<Abc>
private Abc abc;
@Override
public Abc getModel1(){
return abc;
}
struts2的处理流程:
用户请求-->Struts框架-->控制器(Action)-->Struts框架-->视图资源
共同学习,写下你的评论
评论加载中...
作者其他优质文章