struts2学习笔记

简介: struts2学习笔记

一、Action基本原理
请求提交控制器,
根据配置找Action。
创建VS栈容器,
实例Action放栈顶。
调用Action算输出,
历经层层拦截器。
根据方法返回值,
调用Result做输出。

二、Struts是基于MVC的轻量级框架。

1、实现了MVC。
2、轻量:侵入性,与量级成正比。
3、框架:代码的主体结构,减少开发工作量。

三、为什么选择Struts
1、健壮性:框架的稳定性。
2、易用性:好用、好学。        
3、扩展性:未来。

4、侵入性:事物之间的关联程度,要求多寡。低耦合度 管理


Struts1:Apache,简单、小巧。20%+
耦合度比较高,与jsp/servlet关系紧密,
发展遇到瓶颈。
WebWork:技术先进,XWork。

Struts2:以XWork为核心。


四、Struts1和Struts2的区别和联系?
1、Struts2与Struts1的区别很大,不能理解为Struts1的升级版。
2、Struts2以XWork为核心,可以理解为WebWork的升级版。

注入:根据属性进行匹配,来对JavaBean设置值得方式。
class XXAction {
输入属性;
输出属性;

}

五、Struts2 步骤:
1、创建Web Project
2、导入类库
3、配置前端控制器web.xml
4、配置struts.xml

1. <span style="font-size:14px;"><struts>
2. <!-- 
3.      package中,name以模块关键字(user)命名
4.      namespace以/模块关键字(user)命名
5.    -->
6. <package name="user" namespace="/user" 
7.  extends="struts-default">
8.  <!-- 
9.     action中,name以动作关键字(add)
10.     +模块关键字(user)命名
11.      class以以动作关键字(add)+模块关键字(user)
12.     +Action命名
13.   -->
14.   <action name="addUser" 
15.       class="com.tarena.action.AddUserAction"
16.       method="execute">
17.      <!-- 
18.     jsp所在目录以模块关键字命名
19.     jsp以动作关键字(add)+模块关键字(user)命名
20.     -->
21.      <result name="success">
22.         /WEB-INF/user/adduser.jsp
23.      </result>
24.   </action>
25. </package>
26. </struts></span>


5、创建Action类:AddUserAction
6、创建要执行的方法:execute
7、根据需求,创建输入属性、输出属性
8、写Action的execute方法
   1)写DAO:
a)创建IUserDao接口,加方法add
b)创建UserDaoImpl实现类,实现接口IUserDao
c)写UserDaoImpl的方法add
d)测试一下刚写的方法
   2)写DAO工厂:创建DAOFactory类,在里面加方法getUserDAO(),
      并返回UserDaoImpl实例(new UserDaoImpl())
   3)调用DAOFactory.getUserDAO()得到接口IUserDao,调用接口的add方法来实现需求(业务逻辑),
      计算输出属性,并赋值给输出属性,判断一下应该返回的字符串(success,error...),好与Result匹配
六、Result基本原理
Result有不同的类型,每种类型对应一个类,
这些类都实现同一个接口Result。
在struts.xml:

1. <span style="font-size:14px;"><result name="success" type="dispatcher">
2.  /WEB-INF/login.jsp
3. </result></span>


以某种特定的格式向浏览器输出。

七、转发和重定向到区别
1、转发:
a)地址不变
b)1次请求
c)当请求一个组件A,A执行完之后,没结束,
需要调用另一个组件B才能结束请求.
2、重定向:
a)地址变
b)2次请求
c)当请求一个组件A,A执行完之后,请求结束。

 通知系统,自动做下一次的请求B

八、拦截器Interceptor以及使用方式:
1、是struts2扩展Action的机制
2、做一些系统级通用的业务逻辑,如:记录日志、控制权限、控制事务
3、Interceptor的使用步骤
  a)创建拦截器组件,实现Interceptor接口
  b)在struts.xml注册这个拦截器
  c)在struts.xml中,给action指定拦截器
  d)若Action中引用了自定义的Interceptor,
那么默认的Interceptor就不会执行。
4、使用方式

1. <span style="font-size:14px;"><struts>
2. <package name="demo" namespace="/demo" 
3.  extends="struts-default">
4.  <!-- 定义拦截器组 -->
5.  <interceptors name="myInterceptors">
6.    <!-- 定义自己的拦截器 -->
7.    <interceptor name="myInterceptor"
8.      class="com.tarena.interceptor.MyInterceptor">
9.    </interceptor>
10.   </interceptors>
11. 
12.   <!-- 定义拦截器栈,可以作为一个普通的拦截器, 被Action引用 -->
13.   <interceptor-stack name="myInterceptorStack">
14.     <!-- 引用拦截器 -->
15.     <interceptor-ref name="myInterceptor">
16.     </interceptor-ref>
17.   </interceptor-stack>
18. 
19.   <action name="myAction" 
20.     class="com.tarena.action.MyAction">
21.     <!-- 引用拦截器 -->
22.     <intercepter-ref name="myInterceptorStack">
23.     </interceptor-ref>
24.   </action>
25. </package>
26. </struts></span>






相关文章
|
XML 前端开发 Java
struts2学习笔记(上)
struts2学习笔记(上)
struts2学习笔记(上)
|
Java API 数据安全/隐私保护
struts2学习笔记(下)
struts2学习笔记(下)
struts2学习笔记(下)
|
XML Java Apache
Struts2入门二 | 学习笔记
快速学习 Struts2入门二,介绍了 Struts2入门二系统机制, 以及在实际应用过程中如何使用。
75 0
Struts2入门二 | 学习笔记
|
XML Java 数据格式
Struts2入门 | 学习笔记
快速学习 Struts2入门,介绍了 Struts2入门系统机制, 以及在实际应用过程中如何使用。
72 0
Struts2入门 | 学习笔记
|
XML 安全 Java
Struts2【入门】(四)
这是Strtus的开山篇,主要是引入struts框架…为什么要引入struts,引入struts的好处是什么,以及对Struts2一个简单的入门….
93 0
Struts2【入门】(四)
|
XML Java 数据格式
Struts2【入门】(三)
这是Strtus的开山篇,主要是引入struts框架…为什么要引入struts,引入struts的好处是什么,以及对Struts2一个简单的入门….
133 0
Struts2【入门】(三)
|
Java
Struts2【入门】(一)
这是Strtus的开山篇,主要是引入struts框架…为什么要引入struts,引入struts的好处是什么,以及对Struts2一个简单的入门….
111 0
|
XML Java 数据格式
Struts2【入门】(二)
这是Strtus的开山篇,主要是引入struts框架…为什么要引入struts,引入struts的好处是什么,以及对Struts2一个简单的入门….
166 0
Struts2【入门】(二)
|
开发框架 前端开发 Java
Struts 问题汇总|学习笔记
快速学习 Struts 问题汇总
|
Java
day27_Struts2学习笔记_04
一、contextMap中的数据操作 1、存数据:    需要熟悉 ActionContext类 和 ValueStack接口 的 API 。框架为我们存数据。 1.1、利用 ActionContext 存数据   我们先看看 ActionContext.class 的源码:  1.2、利用 ValueStack 存数据   a、如何获取ValueStack呢?   b、ValueStack中的getRoot()方法。
1801 0