打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
struts1.x常用类笔记
Action
1、Action什么时候初始化?发出该Action请求,不是在读取配置时初始化。
2、每个Action只会初始化一次。
3、Action是线程不安全的,因为所有请求共享一个Action实例。
4、怎么实现Action的安全性编程?
a) 注意不用用实例变量或者类变量共享只是针对某个请求的数据。
b) 注意资源操作符的同步性。
c) 应用:
i. 统计一个action访问次数。
ii. 设计一个实例变量count在调用时加一。
ActionMapping
1、一个ActionMapping代表控制器的信息,这个ActionMapping实例用于选择指定的Action传递到该Action。
2、ActionMapping提供了三个方法。
a) findForward(String forwardName) 根据传入的ActionForward名字返回一个ActionForward。
b) findForwards() 返回本地mapping映射的所有逻辑名称。
c) getInputForward() 创建返回一个ActionForward
ActionForward
1、ActionForward对象是配置对象,这些配置对象拥有独一无二的标识,允许他们按照name属性来检索。ActionForward对象封装了前进的URL路径,且被请求处理器识别目标视图。
a) Name:逻辑名称。
b) Path:页面或者模块访问路径。
c) Redirect:设置成true则使用HttpServletResponse.sendRedirect()容器内跳转到相关path,写绝对地址。false为容器外跳转RequestDispatcher.forward()路径相对当前应用。
ActionForm
工作原理
处理ActionForm的一般步骤:
1、检查Action的映射,确定Action中已经配置了对ActionForm的映射。
2、根据name属性,查找form bean的配置信息。
3、检查Action的form bean的使用范围,确定在此范围下(request,session),是否已经有此form bean的实例。
4、假如当前范围下,已经存在了此form bean的实例,而是对当前请求来说,是同一种类型的话,那么就重用。
5、否则就重新构建一个form bean的实例(调用构造方法),并且保存在一定的作用范围。
6、Form bean的reset()方法调用。
7、调用对应的setter方法,对状态属性赋值。
8、如果validate的属性设置为true,那么就调用form bean的validate()方法。
9、如果validate()方法没有返回任何错误,控制器将ActionForm作为参数,传给Action实例的execute()方法并执行。
注意:直接从ActionForm类继承的reset()和validate()方法,并不能实现什么处理功能,所以有必要自己重新覆盖。
注意:
1、无参构造方法必须有。
2、Scope缺省值是session。
3、调用setter方法,实质上是调用对应的标准set方法,比如username,调用setUsername。
分析:
Scope.setAttribute();
1、从过程去查看
a) HttpSessionAttributeListener
b) ServletRequestAttributeListener
2、从结果去查看
Action:
1、attribute:用来存取form的关键字,缺省值与name一样。
2、Validate是用于控制是否校验表单(校验开关),true(默认)~校验,false~不校验。
全局跳转:
Action A ~ Error.jsp
Action B ~ Error.jsp
Action C ~ Error.jsp
Action ABC ~ Error.jsp
自定版本struts
开发以下类:
1、ActionServlet
a) 读取配置dom4j
b) 填充form
c) 派发请求:调用对应的Action的execute方法
d) 查找响应:
2、ActionForm
a) Reset
b) validate
3、Action
a) Execute(ActionMapping , ActionForm , HttpServletRequest , HttpServletResponse)
4、ActionMapping
a) Path
b) Name
c) Type
d) Validate
e) HashMap : forwards
5、ActionForward
a) Name
b) Path
6、配置文件
<struts-config>
<display>wudi版权所有,不得用于商业用途</display>
<form-beans>
<form-bean name="" type=""></form-bean>
</form-beans>
<action-mappings>
<action path="" type="" name="">
<forward name="" path=""/>
<forward name="" path=""/>
</action>
<action path="" type="" name="">
<forward name="" path=""/>
<forward name="" path=""/>
</action>
</action-mappings>
</struts-config>
7、ActionConfig,FormConfig
模仿struts填充form功能
分析:
n 创建AddStudentForm对象 ~ 根据类的全名进行反射(Class.forName)
n 需要把页面的所有参数名提取出来(request.getParameterNames ~ Enumeration)
n 把参数名与bean中的属性名进行匹配:
u 如果能匹配就把取出来的值填充到bean中(借助BeanUtils)
n 保存form
设计一个FormUtils
fillForm(HttpServletRequest request , String formFullName , String formName)
Struts标签库
<bean:define>
从已有的变量或者变量的属性定义一个新的变量
Search: from where ~ scope ,who ~ name,which property ~ property
Define:the name of variable newly created ~ id , which is required
Save:to where ~ toScope
<bean:write>
获得指定bean属性的值到当前的jsp
Three important attributes :
Name: required
Property : name of property
Scope : variable scope
<bean:message>
为响应提供国际化字符串消息
资源文件在struts-config.xml中的配置内容为:
<message-resources parameter="cn.iego.wudi.ApplicationResources" key="MyKey">
</message-resources>
<bean:message>标签的属性:
Bundle: 绑定资源文件的key
Key: 返回资源文件中的哪条消息
<logic:iterate>
重复这个嵌套在指定集合上的标签体内容
Id:是迭代时的临时变量。
两种查找迭代对象的方式
1、name:所指代的bean必须是一个集合类型。
2、Name+property:该bean的property指定的属性,必须是一个集合类型。
可选属性
3、Scope:查找的范围。
4、indexId:元素当前位置。
5、Offset:设置带点开始点,默认从0开始。
动态表单
类的全名:
是ActionForm的子类,允许动态设置属性的FormBean创建。
感性认识:可以不编写form代码。
配置动态form需要配置用户添加属性。
<form-property>name ~ 属性名、type ~ 属性类型、对于primitive type,必须使用包装类型(wrapper)。
异常处理
当Action的execute方法发生异常的时候,可以定义一个ExceptionHandler来处理这个异常。
因此需要写一个
org.apache.struts.action.DynaActionForm
的子类,并且重写execute方法,返回一个ActionForward。
在struts-config.xml中配置文件
org.apache.struts.action.ExceptionHandler
<global-exceptions>
<exception
key="some.key"
type="java.io.IOException"
handler="com.yourcorp.ExceptionHandler"/>
</global-exceptions>
Struts中异常处理的流程图
Plugin:
1、生命周期方法:init destroy
2、用户提供setter方法,告诉ActionServlet中心控制器把属性设置
应用:
在struts启动时把hibernate加载进来(读取hibernate配置文件和打开hibernate的sessionfactory)。
1、struts jar包+hibernate jar包
2、设计一个类:hibernatePlugin实现plugin接口
a) 属性:String hibernateConfigFile
b) 读取hibernate配置文件
c) 打开sessionFactory
3、在struts-config配置文件中添上一堆<plugin>,在plugin中加子标签。
设计:
可以在中心控制器ActionServlet的init方法对plugin初始化
在destory方法中对plugin销毁
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
mayong--浅析struts 体系结构与工作原理
Struts入门(Struts 框架响应客户请求的流程+国际化+异常)
学习structs(一)
Struts预定义的三种重要Action类
《简述培训的流程》
Struts初步认识
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服