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属性。

本文来源:https://www.bwwdw.com/article/1aoj.html

Top