参考资料:《Struts1.x入门与提高系列教程.pdf》感谢著作者的贡献!
DynaActionForm与常规ActionForm的区别:
1、 在配置文件中配置
2、对属性的访问方式:与Map对象相似
3、属性类型为标准的Java类,即用包装类型取代原生类型,如用Integer代替int
<form-beans>
<form-bean name="" type="">
<form-property name="" type="" />
……
</form-bean>
……
</form-beans>
HTML标签库:
以Key为后缀的属性值就是属性文件的key
<html:link forward="">
forward指向配置文件中已经存在的forward
<global-forwards>
<forward name="" path="" />
</global-forwards>
<html:form action="" method="">
<html:text property=""/>
<html:radio property="" value=""/>
当ActionForm的子类对象的某个属性有多个可枚举的选择值时,可使用,value表示当前选项被选中后,提交到服务端的值。
<html:checkbox property="" value="">
对应一个值
<html:multibox property="" value="">
property所对应的属性是数组类型
<html:select property="">
<html:option value=""/>
……
</html:select>
<html:sumbit value=""/>
<html:reset value=""/>
Logic标签库:
<logic:parent name="">
<logic:iterate id="" name="">
</logic:iterate>
</logic:parent>
循环标签:<logic:iterate id="" name="" property="" indexId="" offset="" length="" scope="" />
条件处理标签:
Test:present,notPresent,empty,notEmpty,messagesPresent,messagesNotPresent
比较:equal,lessThan,lessEqual,greaterThan,greaterEqual
字符串匹配:match,notMatch
所有的条件处理标签都有name和property属性
流程控制标签:<logic:redirect><logic:forward>
解决ActionForm中文乱码:
有很多种,这里列举过滤器,记得在web.xml配置:
public EncodingFilter extends Filter
{
public void destroy(){}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException
{
request.setCharacterEncoding("GBK");
chain.doFilter(request,response);
}
public void init(FilterConfig filterConfig)throws ServletException{}
}
strut-config.xml配置文件:
action标签中的input属性:表示为通过验证后要跳转到的页面
message-resources标签:定义程序中所使用的属性文件,parameter属性表示属性文件的路径,后缀.properties可不加,“.”可用“/”或“‘’”代替。
解决属性文件中文乱码:
原因:Java在处理属性文件时,只能处理ISO 8859-1或UCS-2编码格式,若含有其他编码格式的字符,仍然会按ISO 8859-1或UCS-2编码格式来解释这些字符。
方法一:用native2ascii命令
<JDK安装目录>\bin\native2ascii
属性文件全名 属性文件全名(注:这种方式会覆盖旧文件)
属性文件全名 新属性文件全名(注:这种方式则不会)
方法二:用Eclipse插件
Properties Editor插件
JInto插件
Bean标签库:
优点:1、国际化,即能从属性文件中读取文本信息
2、避免直接使用Java代码获得存储在request和session对象的内容
<%@taglib uri="" prefix=""%>
uri属性值定位标签库的方式:直接或者用标签库的相对路径
一、获得HTTP请求信息
<bean:cookie id="" name="" value=""/>
<bean:header />
<bean:parameter />
若忽略value属性,则name属性说对应的对象不存在时,会抛出异常,通常要加上value属性;变量保存在page范围
二、访问Java对象
<bean:define id="" name="" property="" scope="" toScope="" />将Java对象的属性值保存在变量中
<bean:size id="" name="" />获得集合或数组的长度
三、访问JSP内嵌对象和Struts配置对象
<bean:page id="" property="" />
property属性值为JSP内嵌对象名(application,config,request,response,session)
<bean:struts id="" formBean=""|| mapping="" ||forward="" />
四、访问Web资源文件及属性文件
<bean:include id="" href="绝对路径" page="/开头的相对路径" forward="forward标签的name属性值,访问其所对应的path属性所指定的web资源文件"/>
<bean:resource id="" name="相对路径" input="指定时id变量为inputstream类型,反之则为String类型"/>
与<bean:include>的区别:访问Web资源时,不执行,保存原始内容到变量,而<bean:include>保存的是执行后的结果
<bean:message key="" bundle="" name="" property="" scope="" arg0~arg4="" />
不指定bundle时,使用默认属性文件,其值对应<message-resources>的key值;
五、用<bean:write>输出信息
<bean:write name="" property="" filter="" formate="" formateKey="" bundle="" scope="" />
上传单个文件:
<html:file property="" />
原理:通过property属性返回的FormField对象,获得InputStream对象。
FormField是一个接口,常用方法:
getInputStream()、getFileData()、getFieldName()、getFileSize()、destroy()
注意:
<html:form enctype="multipart/form-data"/>;
struts-config.xml中的<controller maxFileSize=""/>限制上传文件大小;
在web.xml中配置上传路径,获得上传路径的方法:
this.getServlet().getServletConfig().getInitParameter()
上传任意多个文件:
稍微复杂了点,涉及到DOM及JavaScript技术
Validator验证框架
安装:在struts-config.xml中添加 <plug-in className="org.apache.struts.validator.ValidatorPlugIn"><set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validator1.xml"/>
注意:使用Validator框架,Form类必须继承ValidatorForm,原因:Validator继承自ActionForm,重写了validate方法,故可不用在Form类中写该方法。
<form-validation>
<formset>
<form name="">
<field property="" depends="">
<msg name="" key=""/>
<arg name="" key="${}" position="" resource=""/>
<var>
<var-name></var-name>
<var-value></var-value>
</var>
</field>
</form>
</formset>
</form-validation>
验证嵌套属性:可用圆点符号来访问
验证索引属性:<field indexedListProperty="" depends="">
两者配合使用:<field indexedListProperty="" property="" depends="">
全局常量:放在第一个<formset>前面
<global>
<constant>
<constant-name></constant-name>
<constant-value></constant-value>
</constant>
</global>
<formset></formset>(第一个formset)
局部常量:放在formset的开始位置
<formset>
<constant>
<constant-name></constant-name>
<constant-value></constant-value>
</constant>
<form></form>
</formset>
客户端验证:
在JSP页面除了<%%><%-- --%>外的任意位置添加<html:javascipt formName=""/>,在<html:form>添加onsumbit="return validate首字母大写的Form名(this)"
*this*表示当前属性的值
国际化
客户端编码:
对于JSP页面:<%page contentType="text/html;charset=UTF-8"%>
对于静态页面(如html):在<head>添加<meta http-equiv="content-type" content="text/html;charset=UTF-8">
也可在struts-config.xml添加<controller contentType="text/html;charset=UTF-8" />,那样所有通过.do或<forward>访问的页面都会继承该编码设置
多语言支持涉及到的知识点:
java.util.Locate,一个Locate类的对象实例代表一种语言
session.setAttribute("org.apache.struts.action.LOCALE",new java.util.Locate(""))
setLocale(request,new java.util.Locale("zh","TW");第一个参数zh表示语言,第二个表示地区,不区分大小写
所有经过<forward>或.do的程序都会继承setLocale方法设置后的语言,除了<action>的forward和input属性所指的页面。
动态Form
属性类型:简单属性、索引属性、映射属性、嵌套属性
注意:使用动态Form,就无法使用泛型进行自动类型转换
DynaActionForm获取属性的方法:
public Object get(String name)//读取简单属性
public Object get(String name,int index)//索引属性
public Object get(String name,String key)//映射属性
public String getString(String name)
public String[] getStrings(String name)
DownloadAction
LocaleAction:是一个final动作类
IncludeAction
ForwardAction
EventDispatchAction
分享到:
相关推荐
Struts1.2驱动包是Java Web开发中一个重要的组件,它是Apache Struts框架的特定版本,用于支持基于Model-View-Controller (MVC)设计模式的应用程序开发。Struts1.2因其稳定性和广泛的功能集而在过去备受推崇,尤其在...
在配置Struts1.2时,你需要在web.xml中设置Struts的前端控制器Filter(通常为`org.apache.struts.action.ActionServlet`),并配置相应的Action Mapping。同时,还需要在struts-config.xml文件中定义Action、Form ...
在Struts1.2中,模型处理业务逻辑,视图负责用户界面,而控制器接收用户请求并协调模型和视图之间的交互。 2. **Action类**:Action类是Struts1.2的核心组件,它实现了Controller的功能。每个Action类对应一个用户...
Struts1.2是Apache软件基金会的Jakarta项目下的一个开源框架,主要用于构建基于Java的Web应用程序。这个框架提供了一种组织应用结构和控制应用程序流程的方式,极大地简化了MVC(Model-View-Controller)模式的实现...
Struts1.2是一个MVC(Model-View-Controller)框架,主要负责处理用户界面与业务逻辑之间的交互;Spring2.5是一个全面的后端应用管理框架,提供了依赖注入、AOP(面向切面编程)、数据访问等服务;Hibernate3.2则是...
在JSP中,Struts1.2扮演着核心控制器的角色,它将用户请求转发到相应的Action,然后Action处理业务逻辑,最终通过模型更新数据并传递结果到视图进行展示。 首先,我们来看"struts-1.2.9-bin"这个压缩包文件。这通常...
Struts1.2是该框架的一个早期版本,虽然现在已经被Struts2所取代,但在许多遗留系统中仍然广泛使用。本教程将深入探讨Struts1.2的核心概念、功能以及与Struts2的区别。 一、Struts框架基础 1. **MVC模式**:Struts...
在`struts1.2-jars`这个压缩包中,包含了Struts1.2运行所需的各个jar文件,比如`struts-core.jar`包含了框架的核心组件,`struts-tiles.jar`包含Tiles视图管理组件,`struts-taglib.jar`提供了与JSP相关的标签库,...
Struts1.2标签是Java Web开发中Struts框架的一部分,它提供了一种在JSP页面中更加便捷、可维护的方式来处理业务逻辑和控制流程。Struts1.2标签库大大简化了视图层的开发,使开发者可以避免过多地在JSP中编写Java脚本...
Struts 1.2虽然在现代Web开发中已经被Struts 2或者Spring MVC等更新的框架取代,但它的设计理念和模式对于理解MVC架构和Web应用的开发仍然具有重要的学习价值。在学习和使用Struts 1.2时,开发者应关注其核心组件的...
通过这个简单的Struts1.2文件上传示例,我们可以学习到如何在Java Web环境中处理文件上传,理解MVC框架如何与外部库协同工作,以及如何在实际应用中确保文件上传的安全性。这对于任何想要深入理解Struts1.2或者进行...
在Struts1.2中处理表单提交,特别是当表单数据包含列表对象时,需要理解一些核心概念和技术。这篇博客文章可能详细探讨了如何在Struts1.2中处理这类情况。 首先,让我们来了解Struts1.2中的表单提交流程。当用户在...
Struts 1.2 是一个历史悠久的Java Web框架,由Apache软件基金会开发,它在Web应用开发领域曾经占据了重要的地位。这个压缩包包含了Struts 1.2版本的类库和源码,使得开发者能够方便地研究和学习这个经典框架的工作...
在Struts 1.2 API中,主要包括以下几个核心组件和接口: 1. **ActionServlet**:这是Struts框架的核心控制器,负责处理所有HTTP请求。它根据配置的ActionMapping来决定哪个Action类应该处理特定的请求。 2. **...
本项目"基于Struts1.2的上传下载Demo"是针对该框架的一个实践示例,旨在帮助开发者理解和解决在Struts1.2环境中进行文件上传与下载的问题。 首先,让我们深入了解一下Struts1.2中的文件上传功能。在Struts1.2中,...
**Struts 1.2配置文件解析与管理** Struts的配置文件主要包括`struts-config.xml`,它定义了Action、Forward、Form Bean等组件。在初始化过程中,`configDigester`使用SAX解析技术解析这些配置文件,生成...
Struts1.2.jar包是基于Java的Web应用程序开发中的一个关键组件,它属于Apache Struts框架的一个版本。Struts是一个开源的MVC(Model-View-Controller)框架,用于构建可维护、可扩展和高度结构化的Web应用程序。在...
在Struts1.2中,拦截器(Interceptor)是一个非常关键的组件,它实现了AOP(面向切面编程)的概念,使得开发者可以在不修改业务逻辑代码的情况下,对请求处理流程进行增强或拦截。本文将详细介绍Struts1.2中的拦截器...
《EXT + Struts1.2 图书管理系统:深入解析与实践》 EXT 是一个基于 JavaScript 的前端组件库,它提供了一系列强大的用户界面组件,如表格、图表、菜单、按钮等,用于构建富互联网应用程序(RIA)。EXT 提供的组件...