您的位置:首页 > 编程语言 > Java开发

struts2学习笔记

2016-03-15 15:23 281 查看
一、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
<span style="font-size:14px;"><struts>
<!--
package中,name以模块关键字(user)命名
namespace以/模块关键字(user)命名
-->
<package name="user" namespace="/user"
extends="struts-default">
<!--
action中,name以动作关键字(add)
+模块关键字(user)命名
class以以动作关键字(add)+模块关键字(user)
+Action命名
-->
<action name="addUser"
class="com.tarena.action.AddUserAction"
method="execute">
<!--
jsp所在目录以模块关键字命名
jsp以动作关键字(add)+模块关键字(user)命名
-->
<result name="success">
/WEB-INF/user/adduser.jsp
</result>
</action>
</package>
</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:
<span style="font-size:14px;"><result name="success" type="dispatcher">
/WEB-INF/login.jsp
</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、使用方式
<span style="font-size:14px;"><struts>
<package name="demo" namespace="/demo"
extends="struts-default">
<!-- 定义拦截器组 -->
<interceptors name="myInterceptors">
<!-- 定义自己的拦截器 -->
<interceptor name="myInterceptor"
class="com.tarena.interceptor.MyInterceptor">
</interceptor>
</interceptors>

<!-- 定义拦截器栈,可以作为一个普通的拦截器, 被Action引用 -->
<interceptor-stack name="myInterceptorStack">
<!-- 引用拦截器 -->
<interceptor-ref name="myInterceptor">
</interceptor-ref>
</interceptor-stack>

<action name="myAction"
class="com.tarena.action.MyAction">
<!-- 引用拦截器 -->
<intercepter-ref name="myInterceptorStack">
</interceptor-ref>
</action>
</package>
</struts></span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts mvc struts2.0 框架