Struts2学习
一、Struts2框架介绍
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
二、Struts2框架的实现原理
1)请求先到达Filter*控制器
2)然后为Action创建代理类
3)将各个服务存放在拦截器中,执行完拦截器后再去执行action类行action类,action类调用service,再调用dao
4)得到结果字符串,创建result对象
5)转向相应的视图。
三、配置Struts2框架的环境
1.修改web.xml中的内容,配置核心控制器
<filter>
<filter-name>struts2</filter-name>
<filter-class> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.在WEB-INF中添加struts2常用jar包
3. 在项目路径下的src目录下创建struts.xml配置文件
符合如下dtd规范
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
4.编写struts.xml配置文件
<struts>
<package name="user" namespace="/user" extends="struts-default">
<action name="user" class="com.dlf.action.UserAction" method="user">
<result name="success">/user.jsp</result>
</action>
</package>
</struts>
浏览器地址栏请求 http://localhost:8080/Struts/user/user.action
这个请求会被拦截器拦截,并解析请求 获取action名称 user 在struts.xml中找到对象action的class 利用反射创建该类的一个对象
四、Action的工作原理
拦截器拦截请求,创建代理Action对象,执行方法,返回结果,界面跳转。
拦截器解析请求路径,获取Action的名称,到配置文件中查找action的完整类名,利用反射创建对象。
每请求一次,就创建一个对象,所以action是多例的,也是线程安全的。
ActionProxy是Action的代理类,通过解析配置文件获取Action类中名称和完整路径,利用反射机制创建的。
ActionInvocation是Action类的调用者,反射创建的ActionProxy类就存在ActionInvocaiton类中。
五、Struts2数据处理
Struts2框架使用OGNL语言和值栈技术实现数据的处理
值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言
值栈:valueStack是一种数据结构,操作数据的方式为先进后出
OGNL : Object-GraphNavigation Language(对象图形导航语言)将多个对象的关系使用一种树形的结构展现出来,更像一个图形,那么如果需要对树形结构的节点数据进行操作,那么可以使用 对象.属性 的方式进行操作,OGNL技术底层采用反射实现