JAVA网页设计利用JavaBean高效处置JSP(3)
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊jsform处置、静态内容和bean通讯列表4展现了一个详细的JSPJavaBean--LoginJSPBean,用来完成特定的页面处置
列表4。LoginJSPBean
packagelbm.examples;
importlbm.jsputil.*;
importjava.util.*;
publicclassLoginJSPBeanextendsAbstractJSPBean{
publicstaticfinalStringPAGE_CODE="login";
privateString_voterId;
privateString_password;
privateVoter_voter=null;
publicLoginJSPBean(){
}
publicvoidsetVoterId(StringnewVoterId){
_voterId=newVoterId;
}
publicStringgetVoterId(){
if(_voterId==null)return"";
elsereturn_voterId;
}
publicvoidsetPassword(StringnewPassword){
_password=newPassword;
}
publicStringgetPassword(){
if(_password==null)return"";
elsereturn_password;
}
publicVotergetVoter(){
return_voter;
}
protectedvoidbeanProcess()throwsjava.io.IOException{
if(_voterId==null||_voterId.equals("")){
addErrorMsg("Votermustbeentered");
}
if(_password==null||_password.equals("")){
addErrorMsg("Passwordmustbeentered");
}
if(getState()!=ERR){
file://Ifallthefieldsareentered,trytologinthevoter
Votervoter=VoteDB.login(_voterId,_password);
if(voter==null){
addErrorMsg("UnabletoauthenticatetheVoter.Pleasetryagain.");
}
else{
_voter=voter;
if(_voter.getVotedForCandidate()!=null){
//ifthevoterhasalreadyvoted,sendthevotertothelastpage
redirect("confirmation.jsp");
}
else{
//gototheVotepage
redirect("vote.jsp");
}
}
}
}
protectedvoidbeanFirstPassProcess()throwsjava.io.IOException{
}
protectedvoidbeanFooterProcess()throwsjava.io.IOException{
}
protectedStringgetJSPCode(){
returnPAGE_CODE;
}
}
察看LoginJSPBean类中的set和get办法。就象下面说起的,它们用作静态的婚配,而且用来在form字段(request参数)和bean属性间传送值。
列表4中的beanProcess()办法,展现了form处置的一些基础点。这个办法产生在页面输入前,在第二和全体厥后的页面挪用时代实行。这意味着它将仅在用户按下登录按钮而且提交form后实行。
你起首要考证voteId和password的输出,发生的毛病将经由过程addErrorMsg办法纪录上去。这个办法设置AbstractJSPBean类的errorMsg属性。该属性可被JSP用来显现用户的毛病:
<jsp:getPropertyname="_loginJSPBean"property="errorMsg"/>
假如数据的输出乐成经由过程,beanProcess()办法将会挪用数据库来考证用户。最初,它经由过程挪用AbstractJSPBean类中完成的redirect()办法,将哀求重定向到响应的页面。
以下我们将会商VoteJSPBean类中的一些办法。它们将能够注释该架构的一些别的方面,比方JSPJavaBean之间的通讯和使用的流程把持。
列表5。VoteJSPBean类中的beanFirstPassProcess()
protectedvoidbeanFirstPassProcess()throwsjava.io.IOException{
//gettheVoterfromLoginpage
_voter=null;
LoginJSPBeanloginJSPBean=
(LoginJSPBean)getSharedSessionBean().getJSPBean(LoginJSPBean.PAGE_CODE);
if(loginJSPBean!=null){
_voter=loginJSPBean.getVoter();
}
if(_voter==null){
//voterisnotloggedinyet.SendittoLoginpage
setState(NEW);
redirect("login.jsp");
}
}
以上的办法利用了AbstractJSPBean类中_sharedSessionBean对象。SharedSessionBean类经由过程利用一个复杂的办法,让一切的JSPJavaBean对象在一个HTTPsession中举行通讯。它保留有一个session内的全体JSPJavaBean中的一个Map。Map是JavaCollections框架的一个接口,它是Java1.2推出的。对熟习Java1.1的人来讲,它与Hashtable十分相似。一个JSPJavaBean的主键是它的PAGE_CODE,它作为一个常数存储在每一个JSPJavaBean类中。
在这个例子中,beanFirstPassProcess()办法起首定位到LoginJSPBean对象。接着,它由LoginJSPBean对象中失掉Voter对象,而且存储一个到它的援用,以便今后利用。假如Voter为null,这意味着用户没有起首登录就进进Voter页面,因而它重定向到登录页面。这是一个使用流程把持的复杂例子。你能够计划更庞大的办法,比方利用一个智能的调剂程序,不外这些会商已超越了本文的局限。
列表6。VoteJSPBean类的getCandidateList()办法
publicStringgetCandidateList(){
StringBuffercandidateList=newStringBuffer();
Candidatecandidate;
Iteratorcandidates=VoteDB.getCandidates();
while(candidates.hasNext()){
candidate=(Candidate)candidates.next();
candidateList.append("<inputtype=radioname="candidateName"value="");
candidateList.append(candidate.getName());
candidateList.append("">");
candidateList.append(candidate.getName());
candidateList.append("<br>
");
}
returncandidateList.toString();
}
以上的getCandidateList()办法被vote.jsp挪用,经由过程以下的办法:
<jsp:getPropertyname="_voteJSPBean"property="candidateList"/>
依据由数据库失掉的内容分歧,该办法供应分歧的静态HTML内容输入。它必要开辟JavaBean的Java编程者明白一些HTML常识。
你也能够利用一个使用HTML的自力库来格局化HTML,它能够承受一个预界说的输出。比方Iterator,然后以预界说的格局发生HTML输入。另外一个办法是利用标签库。
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net也不过3,4本书足以,这就是区别。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 是一种为 Internet发展的计算机语言 是一种突破用户端机器环境和CPU 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
页:
[1]