首先.在进行学习之间 我们跟Servlet之间做一个比较
- servlet 需要开发人员维护文本.xml文档
- 开发 servlet 需要继承httpServlet 子类运行时 继承的父类就会相应的运行 性能会衰减
- Servlet 没有办法直接关掉 所以 一直占用内存
对比一下 Struts 的特点
Struts 的 几个核心部分
概念:
(1)Action动作模型
(2)值栈(request请求域)
(3)结果类型,根据动作模型执行方法返回值确定转向的方式(重定向或者转发)
(4)拦截器–负责拦截用户的请求数据并为指定的属性验证与赋值
在我看来 Struts 就是将servlet 中许多重复的功能 进行了统一抽离
例如在进行 值的传递时 只要需要这个值 就需要一次getparameter
而Struts 不同 就是 将包含值的部分 抽离成一个组件
看法:
action 模型 中包含一切动作 也就是 判别部分 返回的result 在你需要这个action时 你要确定到他的包 类 和 具体实现其中的哪一个 方法名
在界面的显示过程中 jsp 需要有一个验证 就是result结果值 验证正确 即可进行跳转
拦截器 相当于中间一直有这个存在 因为值的传递 是需要拦截 才能进行验证的
代码实现及其 具体的 标注
<constant name="struts.ui.them" value="simple"></constant>
<!-- 动作模型对象包的管理
package:用于管理动作模型的对象,不是物理包
name="包的名称":包的名称是唯一的
namespace="/":访问路径的根路径设置
extends="struts-default":继承struts2框架提供的struts-default.xml文件
-->
<package name="users" namespace="/" extends="struts-default">
<!--
action:动作模型的配置节点
name="动作模型的访问路径"
class=动作模型的类路径"
method="动作模型的执行方法"
-->
<action name="check_Users" class="com.action.UsersAction" method="check">
<!-- result节点属于action的子节点,用于配置结果路径以及转向的方式(dispatcher/redirect)
name="执行方法返回的字符串值"
loginok.jsp:表示要转向的路径
-->
<result name="ok">loginok.jsp</result>
<result name="fail">fail.jsp</result>
</action>
</package>
三、result的转向类型
1、转发(默认)
<result name=“xxx” [type=“dispatcher”]>目标路径(jsp页面)
2、重定向(redirect)
<result name="xxx" type="redirect">目标路径</result>
3、向Action路径转发请求(chain)
<result name="xxx" type="chain">目标路径(Action路径)</result>
4、在result中使用${Action的属性名}来访问动作模型的属性值
result 结果集 控制jsp 跳转 所以需要重定向 和 请求转发 就在result 的属性控制
chain 是一个链式动作描述
简而言之 就是当你想用一个动作转向 另一个动作目标时 就用chain 这种类型