参考资料:《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
分享到:
相关推荐
### J2EE电子商务系统开发从入门到精通——基于Struts和Hibernate技术实现 #### J2EE概论 **1.1 简单双层架构到复杂多层架构** - **1.1.1 双层(C/S)软件架构设计** - 双层架构(客户端/服务器架构,Client/...
全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e...
熟悉这些框架的使用,并具备实际项目经验,表明应聘者能够利用这些框架快速开发出功能完善的 Web 应用程序,并且能够解决实际开发过程中遇到的各种问题。 ### 8. 熟练掌握 jsp 开发,能够熟练使用 ExtJS、js(jquery...
部门绩效考核评价表excel
全面的公司行政费用统计表
视觉跟踪算法综述.pdf
CMD 命令行高级教程精选合编
1、文件内容:apr-devel-1.4.8-7.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/apr-devel-1.4.8-7.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
10-4-生产主管绩效考核表(自动计算、等级评价)
深度学习python基础(第三节) 函数、列表
岗位绩效考核评定表excel表格模板
成品库仓管员绩效考核表
一、智慧环卫管理平台的建设背景与目标 智慧环卫管理平台的建设源于对环卫管理全面升级的需求。当前,城管局已拥有139辆配备车载GPS系统、摄像头和油耗传感器的环卫车辆,但环卫人员尚未配备智能移动终端,公厕也缺乏信息化系统和智能终端设备。为了提升环卫作业效率、实现精细化管理并节省开支,智慧环卫管理平台应运而生。该平台旨在通过信息化技术和软硬件设备,如车载智能终端和环卫手机App,实时了解环卫人员、车辆的工作状态、信息和历史记录,使环卫作业管理透明化、精细化。同时,平台还期望通过数据模型搭建和数据研读,实现更合理的环卫动态资源配置,为环卫工作的科学、健康、持续发展提供决策支持。 二、智慧环卫管理平台的建设内容与功能 智慧环卫管理平台的建设内容包括运行机制体制建设、业务流程设计、智慧公厕系统建设、网络建设、主机和储存平台需求、平台运维管理体系、硬件标准规范体系以及考核评价体系等多个方面。其中,智慧公厕系统建设尤为关键,它能实时监控公厕运行状态,保障公厕的清洁和正常运行。平台建设还充分利用了现有的电子政务网络资源,并考虑了有线和无线网络的需求。在功能上,平台通过普查、整合等手段全面收集环卫车辆、企业、人员、设施、设备等数据,建立智慧环卫基础数据库。利用智能传感、卫星定位等技术实现环卫作业的在线监管和远程监控,实现对道路、公共场所等的作业状况和卫生状况的全面监管。此外,平台还建立了环卫作业网格化管理责任机制,实现从作业过程到结果的全面监管,科学评价区域、部门、单位和人员的作业效果。 三、智慧环卫管理平台的效益与风险规避 智慧环卫管理平台的建设将带来显著的环境、经济和管理效益。环境方面,它将有力推进环境卫生监管服务工作,改善环境卫生状况,为人民群众创造更加清洁、卫生的工作和生活环境。经济方面,通过智慧化监管,大大降低了传统管理手段的成本,提高了监管的准确性和效率。管理方面,平台能够追踪溯源市民反映的问题,如公厕异味、渣土车辆抛洒等,并找到相应的责任单位进行处置,防止类似事件再次发生。同时,平台还拥有强大的预警机制功能,能够在很多环卫问题尚未出现前进行处置。然而,平台建设也面临一定的风险,如部门协调、配合问题,建设单位选择风险以及不可预测的自然灾害等。为了规避这些风险,需要加强领导、统一思想,选择优秀的系统集成商承接项目建设,并做好计算机和应用系统的培训工作。同时,也要注意标准制定工作和相关法律法规的制定工作,以保证系统建设完成后能够真正为环卫管理工作带来便利。
基于平衡计分卡绩效考核表(管理高层)模板
网站运营各部门绩效考核表
XX公司行政部绩效考核指标
基于齿向修形的抛物线锥齿轮仿真分析.pdf
三相半桥逆变器低电压穿越控制策略设计:两级式光伏并网系统电路原理与容量优化报告,两级式光伏并网系统及其低电压穿越控制策略设计,容量30kW。 三相半桥逆变器,boost电路作前级。 带低电压穿越,有一万七千字的报告,没有水文字。 报告内容,电路原理,pi参数设计,bode和根轨迹分析,波形良好 ,关键词:两级式光伏并网系统;低电压穿越控制策略;30kW容量;三相半桥逆变器;boost电路;前级设计;低电压穿越功能;报告内容;电路原理;PI参数设计;Bode和根轨迹分析;波形良好。,基于30kW容量两级式光伏并网系统的控制策略设计:低电压穿越及高效逆变技术研究
毕业设计文本预测项目python源码+托尔斯泰《战争与和平》文本分析数据集-最新出炉 关于数据集 背景: 该数据集包含列夫·托尔斯泰的《战争与和平》的全文,这是一部于 1869 年出版的开创性文学作品。作为公共领域文本,它为对文学分析、自然语言处理和历史研究感兴趣的研究人员和爱好者提供了丰富的资源。这部小说以俄国拿破仑战争为背景,探讨了战争、和平和人类状况的主题。 内容: 数据集由一个纯文本文件组成,其中包含《战争与和平》的完整叙述。文本已进行预处理,以方便分析和建模,使其适用于各种应用,包括文本挖掘、情感分析和机器学习项目。该文件可通过以下链接访问:战争与和平文本数据集。