仓酷云

标题: JAVA网页设计在Struts中利用JavaBean和List(多行数... [打印本页]

作者: 不帅    时间: 2015-1-18 11:53
标题: JAVA网页设计在Struts中利用JavaBean和List(多行数...
在1995年5月23日以“Java”的名称正式发布了。数据在Strust中,我们大概常常要在ActionForm中利用其他JavaBean作为属性范例,这里就存在着怎样利用好这些属性与HTMLForm之间的数据互换,上面我们就这些成绩做一解说。
如在用户注册界面中,我们一般会将用户的接洽体例构成一个独自的新的Class,如Contact,包括以上司性:德律风(tel),手机(cell),Email(email),QQ(qq),通讯地点(adress)等等,如许层次也对照明晰,以下是这个ActionForm的部分代码:
publicclassRegisterFormextendsActionForm
{
privateIntegerid;
privateStringlogonName;
privateStringrealName;
privateContactcontact=newContact();
………..
}
在这里我们必要将Contact实例化(在reset函数中必要从头实例化),这次要由于Struts的机制:如我们将HTML的Form元素(如email)值传给ActionForm,Struts必要实行的操纵是getContact().setEmail(Stringemail),假如这时候前往的contact对象为空的话,那末赋值怎样举行,并且Struts也不会晓得怎样往实例化Contact,偶然这些JavaBean的范例有多是接口,实例化更是未知,以是关于JavaBean范例在ActionForm中的实例化,你必要自行完成,并且必需完成。至于在实践操纵中判别JavaBean是不是被举行过相干操纵(不再是初始形态),你必要自行判别,实在也很复杂,如可在Contact类中编写一个函数查验一下便可。
ActionForm创立终了后,我们必要在JspForm中援用这些JavaBean范例的属性值,那就很复杂啦,只需接纳“Form的属性称号”+“.”+“JavaBean中的属性称号”布局组成的称号付给相干元素便可。如:
<html:textproperty="contact.email"/>
经由过程这类体例我们就能够处置好ActionForm中的JavaBean范例的属性值了。
实践的情形大概更庞大些,我们偶然大概要提交多行数据到前进,并且行内的数据是相干的,如我们必要提交多个用户的接洽体例,这些行内的数据,如email,德律风,手机,这些数据都是和用户编码相干的,如今我们修正一下Contact类,增加一个用户编码(userId)属性,这时候我们构建的ActionForm中大概必要一个列表数据(List)范例来处置这类情形。以下是这个ActionForm的部分代码:
publicclassModifyBatchContactFormextendsActionForm
{
privateListcontact=newAutoArrayList(Contact.class);
…..
}
在以上代码中,我们一样处置了List范例数据的初始化。Struts在给List中的对象赋值时,固然必要先猎取List数据,然后在猎取List中某一个对象(经由过程Index),最初给对象赋值。在这里想我们能够更具体点剖析扫瞄器端传过去数据,字段值情势以下:contact[0].email=linux_china@hotmail.com,Struts猎取ActionForm中的List数据后,经由过程Index(此时为0)来猎取List中封装的JavaBean对象,但是此时List是空的(只管初始化了,可是没无数据),是没法获得封装的对象的,因而我们要在Struts猎取List中封装的对象的时分给它创立一个,如许就包管对象的猎取和赋值的乐成举行,一切我们新建一个AutoArrayList类,承继ArrayList,只需重写get(intindex)办法便可,实在很复杂,代码以下:
publicclassAutoArrayListextendsArrayList{
privateClassitemClass;
publicAutoArrayList(ClassitemClass){
this.itemClass=itemClass;
}
publicObjectget(intindex){
try{
while(index>=size()){
add(itemClass.newInstance());
}
}catch(Exceptione){
e.printStackTrace();
}
returnsuper.get(index);
}
}
如许我们就完成能够多行数据提交的ActionForm计划,这里另有点提示,假如从扫瞄器端传过去的行索引是腾跃是的,如短少两头行,而你不想要这些数据的话,且首尾行index相差很年夜的话,这类体例大概不太合适。这类多行提交情势对照合适对流动行的数据处置。假如行数不流动的话,你能够参考利用MapForm体例完成。
上面我们就看看怎样在Jsp中利用这个ActionForm,实在只必要实行一个轮回便可:
<logic:iterateid="contact"name="FormName"property="contact"indexId="index">
<html:textname="contact"property="userId"indexed="true"/>
<html:textname="contact"property="email"indexed="true"/>
</logic:iterate>
这里我们再解说一下,代码中呈现的“contact”(白色)都是ActionForm中的List数据范例变量称号,请确保分歧,请不要变动称号,这也是便利提交到背景的数据吸收。“FormName”为在struts-config中声明的ActionForm称号。indexed="true"能够确保天生的html元素的称号独一,不要短少这个声明。以上的Jsp代码,你也能够利用JSTL来完成,就看你习气怎样了。
经由过程以上步骤,我们完成了多行数据的提交一切环节,如许Struts就会完成其他一切的事变,我们的代码逻辑和完成也复杂多了。
总结:经由过程以上两个例子,相以信对ActionForm中利用JavaBean和List范例数据不会再生疏,同时利用Map范例,如许可创立更好的ActionForm计划,关于MapForm,请参考http://www.jetmaven.net/documents/j_mapformInStruts.php。不外引进这类体例后,在Validator方面你大概要花点头脑啦(如经由过程XDoclet天生Validator文件大概功效不全),大概你必要手写一些代码来完成相干事情。


为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。
作者: 第二个灵魂    时间: 2015-1-21 16:45
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
作者: 愤怒的大鸟    时间: 2015-1-25 21:33
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者: 莫相离    时间: 2015-2-5 10:54
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
作者: 分手快乐    时间: 2015-2-6 06:10
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
作者: 老尸    时间: 2015-2-8 06:27
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
作者: 再见西城    时间: 2015-2-24 12:54
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者: 小女巫    时间: 2015-3-7 12:19
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
作者: 兰色精灵    时间: 2015-3-8 16:20
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
作者: 柔情似水    时间: 2015-3-10 01:41
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
作者: 深爱那片海    时间: 2015-3-17 03:47
是一种为 Internet发展的计算机语言
作者: 灵魂腐蚀    时间: 2015-3-20 10:36
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者: 金色的骷髅    时间: 2015-3-27 08:08
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者: 爱飞    时间: 2015-3-31 23:06
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
作者: 再现理想    时间: 2015-4-6 03:08
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者: 蒙在股里    时间: 2015-4-11 03:11
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
作者: 若天明    时间: 2015-4-12 05:44
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者: admin    时间: 2015-4-12 23:28
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
作者: 只想知道    时间: 2015-4-21 17:48
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2