以前没用struts的时候我们这样自己封装bean(超级简化版的bean数据封装)

本文介绍了一种无需使用Struts框架即可实现Bean数据封装的方法。通过自定义方法`setVOFromForm`,可以从HttpServletRequest中直接填充Java Bean属性,支持多种基本数据类型及日期格式。此方法简化了前端表单数据到后端Bean的映射过程。
没有用struts的时候这样做也很方便,呵呵,屡试不爽,超级简化版的bean数据封装
主要是自己写了一个这样的方法:
[code]public static void setVOFromForm(HttpServletRequest request, Object model, String n)
{
try
{
Class class1 = model.getClass();//得到相应model的vo类
Method method1[] = class1.getMethods();//得到该vo类的全部方法
for(int i = 0; i < method1.length; i++)
{
String name = method1[i].getName();//得到当前方法的名字
if(name.startsWith("set"))//是否为set开始的方法,即是否是set方法
{
Class cc[] = method1[i].getParameterTypes();//得到该方法的参数类型数组
if(cc.length == 1)//是否参数唯一
{
String type = cc[0].getName();//得到参数类型
String param = request.getParameter(name.substring(3) + n);//当n=“”时,从request钟得到名字为该方法名第4位开始的字符串的变量值,
if(param != null && !param.equals(""))//不为空或者null
if(type.equals("java.lang.String"))//判断参数类型
method1[i].invoke(model, new Object[]{param});//将得到的变量值注入vo类model的方法method1[i]
else if(type.equals("int") || type.equals("java.lang.Integer"))
method1[i].invoke(model, new Object[]{new Integer(param)});
else if(type.equals("long") || type.equals("java.lang.Long"))
method1[i].invoke(model, new Object[]{new Long(param)});
else if(type.equals("boolean") || type.equals("java.lang.Boolean"))
method1[i].invoke(model, new Object[]{Boolean.valueOf(param)});
else if(type.equals("java.sql.Date"))
{
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date d = df.parse(param);
if(d != null)
method1[i].invoke(model, new Object[]{new Date(d.getTime())});
}
}
}
}

}
catch(Exception e)
{
e.printStackTrace();
}
}[/code]

用的时候这样用就可以了:

[code]RsemployeecheckVO ecvo = new RsemployeecheckVO();
DaoUtil.setVOFromForm(request, ecvo, ""); //将数据封装入ecvo中[/code]

jsp页面也和struts一样,需要变量名与bean中的变量名一致并且首字母大写:

[code]<table width="80%" border="1" align="center" bordercolor="#000000" id="tblContent">
<tr>
<td width="14%"><div align="center">单位</div></td>
<td colspan="3"><input name="Unit" value="<%=PageUtil.filterNull(tivo.getUnit())%>" type="text" size="15"></td>
<td width="14%"><div align="center">姓名</div></td>
<td ><input name="Name" type="text" value="<%=PageUtil.filterNull(tivo.getName())%>" size="10"></td>
</tr>
<tr>
<td><div align="center">工伤结案</div></td>
<td colspan="5"><textarea name="Injury_end" cols="40"><%=PageUtil.filterNull(tivo.getInjury_end())%></textarea></td>
</tr>
<tr>
<td><div align="left">事故原因分析情况</div></td>
<td colspan="5"><textarea name="AccidentAnalysis" cols="40"><%=PageUtil.filterNull(tivo.getAccidentAnalysis())%></textarea></td>
</tr>
<tr>
<td>事故责任者受教育情况</td>
<td colspan="5"><textarea name="AccidentEducation" cols="40"><%=PageUtil.filterNull(tivo.getAccidentEducation())%></textarea></td>
</tr>
<tr>
<td>单位对事故处理情况(附:现场图,调查分析会议记录,报告书,处理决定)</td>
<td colspan="5"><textarea name="AccidentDealing" cols="40" rows="5"><%=PageUtil.filterNull(tivo.getAccidentDealing())%></textarea></td>
</tr>
<tr>
<td>防范措施落实情况</td>
<td colspan="5"><textarea name="Carryingout" cols="40" rows="2"><%=PageUtil.filterNull(tivo.getCarryingout())%></textarea></td>
</tr>
</table>[/code]
MATLAB主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性内容概要:本文主要介绍了一种在MATLAB环境下实现的主动噪声和振动控制算法,该算法针对较大的次级路径变化具有较强的鲁棒性。文中详细阐述了算法的设计原理与实现方法,重点解决了传统控制系统中因次级路径动态变化导致性能下降的问题。通过引入自适应机制和鲁棒控制策略,提升了系统在复杂环境下的稳定性和控制精度,适用于需要高精度噪声与振动抑制的实际工程场景。此外,文档还列举了多个MATLAB仿真实例及相关科研技术服务内容,涵盖信号处理、智能优化、机器学习等多个交叉领域。; 适合人群:具备一定MATLAB编程基础和控制系统理论知识的科研人员及工程技术人员,尤其适合从事噪声与振动控制、信号处理、自动化等相关领域的研究生和工程师。; 使用场景及目标:①应用于汽车、航空航天、精密仪器等对噪声和振动敏感的工业领域;②用于提升现有主动控制系统对参数变化的适应能力;③为相关科研项目提供算法验证与仿真平台支持; 阅读建议:建议读者结合提供的MATLAB代码进行仿真实验,深入理解算法在不同次级路径条件下的响应特性,并可通过调整控制参数进一步探究其鲁棒性边界。同时可参考文档中列出的相关技术案例拓展应用场景。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值