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:
以某种特定的格式向浏览器输出。
七、转发和重定向到区别
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>
请求提交控制器,
根据配置找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>
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- JQuery+Strusts1.x无刷新登录
- 插件管理框架 for Delphi(一)
- 使用CSS框架布局的缺点和优点小结
- C++基于栈实现铁轨问题
- C语言栈的表示与实现实例详解
- C语言实现颠倒栈的方法
- 算法系列15天速成 第十天 栈
- Zend的MVC机制使用分析(二)
- 列举PHP的Yii 2框架的开发优势
- ASP.NET MVC 4 捆绑和缩小实例介绍
- ASP.NET Mvc开发之查询数据
- ASP.NET MVC中将控制器分离到类库的实现
- asp.net实现在非MVC中使用Razor模板引擎的方法
- ASP.NET MVC中的AJAX应用
- Windows窗体的.Net框架绘图技术实现方法
- 为ASP.NET MVC及WebApi添加路由优先级
- ASP.NET MVC中图表控件的使用方法
- 浅谈JavaScript 框架分类
- ASP.NET MVC的四种验证编程方式