Struts1.X学习笔记
更新时间:2023-08-16 02:57:01 阅读量: 教学研究 文档下载
struts1课堂笔记
Struts基本原理
1、 Action什么时候初始化?
Action请求时初始化,不是在读取配置时初始化。
2、 每个Action共用一个实例,只初始化一次,所有请求共享一个action实例。 3、 Struts1.2中Action是线程不安全,Struts2线程安全。 4、 怎么实现Action的安全性编程?
注意不要用实例变量或类变量共享只是针对某个请求的数据 注意资源操作的同步性。
5、 应用:统计action的访问次数。设计一个实例变量,在调用action时该变量加1。
Integer count = 0;
synchronized(count){ // 安全锁
count++; }
6、ActionForward:
Redirect属性:false|no RequestDispatcher.forward跳转(默认)。 ture|yes HttpServletResponse.sendRedirect跳转。 为ture时路为绝对路径,网站外跳转要加协议名。 7、Attribute:
用来存取form的关键字,缺省值与name一样
8、validate是用于控制是否校验表单,true(缺省值):校验,false:不校验 9、input 如果表单验证失败,则跳转到该值指定的位置(容器内跳转)。Validate为true时才生效。
10、全局跳转: <global-forwards> <forward name=”error” path=”/Error.jsp” /> </global-forwards> 11、ActionForm工作原理 1) 检查Action的映射,确定Action中已经配置了对ActionForm的映射。 2)根据name属性,查找form bean的配置信息。 3)检查Action的formbean的使用范围,确定在此范围下(request,sess),是否已经有此formbean的实例 4)假如当前范围下,已经存在了些formbean的实例,而是对当前请求来说,是同一种类型的话,那么就重用。 5)否则就重新构建一个frombean的实例(调用构造方法),并且保存在一定的作用范围。 6)formbean的reset()方法被调用。 7)调用对应的setter方法,对状态属性赋值。 8)如果validate的属性设置为true,那么就调用formbean的validate()方法。 9)如果validate()方法没有返回任何错误,控制器将ActionFrom作为参数传给Action实例的execute()方法并执行此方法。
struts1课堂笔记
struts1课堂笔记
自定义Struts框架
开发以下类
1. ActionServlet
读取配置文件 dom4j 填充form
派发请求:调用对应的action的execute方法。 查找响应: 2. ActionForm
reset方法 validate方法 3. Action
execute(ActionMapping, ActionForm, HttpServletRequest, HttpServletResponse) 4. ActionMapping
属性: path :String name :String type :String validate :String forwards :HashMap 5. ActionFormward
name :String path :String 6. 配置文件:
<struts-config> <display>XXX自定义Struts</display> <form-beans> <from-bean name=”from名” type=”类名”></from-bean> </form-beans> <action-mappings> <action path=”URL” type=”Action类” name=”参数frombean的名字”> <formward name=”状态1” path=”要跳转的路径1” /> <formward name=”状态2” path=”要跳转的路径2” /> </action> </action-mappings> </struts-config>
7. ActionConfig,FormConfig
struts1课堂笔记
部分实现原理
填充Formbean 分析:
1. 创建Formbean对象——根据类的全名进行反射(Class.forName),type属性。 2. 把页面的参数提取出来——request.getParamter()方法。 3. 把参数名与bean中的属性名进行匹配:
如果能匹配就把取出来的值填充到bean中(借助Apache的BeanUtils) 4. 保存from
设计一个FromUtil类 填充方法
static void fillForm(HttpServletRequest resquest, String formClassFullName, String formName){ // 创建from Action form =(ActionFrom)Class.forName(fromClassName).newInstance(); // 获取所有参数 Java.util.Enumeration parameterEnumeration=request.getParameterNames(); // 获取from的所有属性 Field[] fields = from.getClass().getDeclaredFields(); // while(parameterEnumeration.hasMoreElements()){ String parameterName =(String) parameterEnumeration.nextElement(); // 未完整…… } }
Struts标签
Struts标记库
Bean标记:用来在JSP页中管理bean,Struts-bean.tld 逻辑标记:用来在JSP页中控制流程,Struts-logic.tld
HTML标记:用来生成HTML标记,在表单中显示数据,使用会话ID对URL进行编
程,Struts-html.tld
Tiles标记:使用动态模板构造普通格式的页Struts-tiles.tld
struts1课堂笔记
Bean标记: bean:define:
从已有的变量或变量的属性定义一个新的变量。 用法:
<bean:define id=”要定义bean的名称” scope=”查找范围” name=”找某个已存在的bean” property=”已存在bean的属性” toScope=”存放位置”>
</bean:define>
write标签
<bean:write scope=”查找范围” name=”bena” property=”属性” />
message标签(国际化)
1. 定义资源文件: properties属性文件 a.properties 默认属性文件 a_zh-cn.properties 中文的属性文件,前缀一样,”_语言名”做后缀 2. 在struts-config中添加: <message-resources key=”属性文件的键” parameter=”属性文件” /> 是默认属性文件,没有后缀的。如果文件包含在包中,要加包名。 3. 在页面中使用
<bean:message bundle=”属性文件的键” key=”属性文件中的键” />
属性文件名
逻辑标记
逻辑库的标记能够用来处理外观逻辑而不需要使用scriptlet。
Sturts逻辑标签库包含的标记能够有条件地产生输出文本,在对象集合中循环从而重复地产生输出文本,以及应用程序流程控制。它也提供了一组在JSP页中流程控制的标记。这些标记封装在文件名为struts-logic.tld的标记包中。 逻辑标记库定义的标记能够执行下列三个功能: 条件逻辑 重复
转发/重定向响应
struts1课堂笔记
Logic:iterate
<logic:iterate id=”临时变量” scope=”范围” name=”要迭代的变量” property=”要迭代变量的属性”>
// property可选,没property时直接迭代name // 被迭代的内容必须是集合类型 </logic:iterate> 可选属性:
offset: 偏移。默认从下标0开始迭代,指定offset跳过前面N个再开始迭代。 indexId: 索引号。indexId=”i” 将索引保存到i中。 length: 限制长度。
动态表单
DynaActionForm继承自ActionForm 可以不编写form代码
1. 配置动态form需要配置用户添加属性
<form-property name=”属性名” type=”属性全名” /> 2. 在Action中将Form类型转化为DynaActionForm 3. 用get方法取Form的属性。
Struts异常
使用方法:
1. 配置<exception path=”出现异常时跳转路径” type=”要处理的异常类” key=”资源文件中的key” />
2. 在相应的action中的execute方法抛出异常 3. 在页面中输出 <html:errors />
注:配置相应的资源文件 在struts-config.xml中添加
<message-resources key=”资源文件标识” parameter=”资源文件名”></message-resources>
struts1课堂笔记
Action异常处理原理
Struts插件
PlugIn:
1. 生命周期方法:init() destroy()
2. 用户提供setter方法,告诉ActionServlet中心控制器设置属性
应用:
在Struts启动时把Hibernate加载进来(读取Hibernate配置文件和打开Hibernate的SessionFactory)。
1. Struts jar包+Hibernate jar包
struts1课堂笔记
2. 设计一个类:HibernatePlupIn类,实现PlugIn接口。 属性:String hibernateConfigFile init()方法
读取Hibernate配置文件 打开SessionFactory destroy()
关闭SessionFactory
3. 在struts-config配置文件中添加<plugin>配置,在<pulgin>子标签中添加
<set-property proterty=”参数” value=”配置文件” />
设计:
可以在中心控制器ActionServlet的init()方法对plugin初始化 在destroy方法中对plugin()销毁。
PulgIn生命流程图:
struts1课堂笔记
ForwardAction
需求:
按统一访问模式:*.do
Jsp页面在保护模式下:web-inf文件夹下
使用方法:
请求jsp之前需要先访问ForwardAction。只需配置,不需定义。 <action path=”访问路径” forward=”页面所在路径” > </action>
DispatchAction
作用:
合并多个Action
配置:
<action path=”访问路径” type=”DispatchAction类” name=”Form类” parameter=”参数名” />
访问形式:
*.do?参数名=参数
参数为:DispatchAction类中的Action方法名。
struts1课堂笔记
使用:
1. 新建一个DispatchAction子类,包含若干个Action方法。 Action方法必须与原来的execute方法签名一样(同参同返回值)。 2. 配置:prameter属性。
正在阅读:
Struts1.X学习笔记08-16
基于就业导向的《投资理财综合实训》课程11-10
小学校园文化执行方案 - 图文03-30
关于数学的帖子05-16
按摩穴位降血糖的秘法!很有用的!=专治糖尿病的 四大01-14
海泊桥社区文艺节目主持词04-20
广东省住房和城乡建设厅关于房屋建筑和市政基础设施工程施工评标的管理办法02-03
管理科学实验指导与习题03-11
Windows理论复习题12-06
- 公务员上岸同学告诉你,怎样走出面试中常见的十大误区
- 作表率,我们怎么办(办公室主任)
- 乘务员安全责任书
- 增员面试流程
- 河南省焦作市规模以上租赁和商务服务业企业应付职工薪酬数据洞察报告2019版
- 最新4社区工作者面试题
- 个人简历表
- 男教工体检必检项目
- 河南省兰考县规模以上租赁和商务服务业企业应付职工薪酬数据洞察报告2019版
- 兼职译员测试稿
- 河南省开封市规模以上租赁和商务服务业企业应付职工薪酬数据洞察报告2019版
- 永州职业技术学院校园总体规划-永州职业学院
- 最新5、培训科长笔试题(答案)
- 2019雅商酒店境外人员登记培训稀有资料,不可错过
- 小学教师求职简历范文
- 红酒知识与礼仪
- 春节给领导拜年的短信拜年词
- 2019年上半年中小学教师资格证结构化面试真题1
- 20XX年县干部培训工作目标
- 硬笔试听课
- 笔记
- Struts
- 学习