J2EE与中间件技术-J2EE应用_第1页
J2EE与中间件技术-J2EE应用_第2页
J2EE与中间件技术-J2EE应用_第3页
J2EE与中间件技术-J2EE应用_第4页
J2EE与中间件技术-J2EE应用_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、j2ee与中间件技术与中间件技术j2ee应用应用servlet/jsp+ejbmvcjsp+servlet+ejbservlet作为作为ejb的客户端,访问的客户端,访问ejbservlet:服务器端的服务器端的java代码,用于响应客代码,用于响应客户机的请求,由户机的请求,由servlet容器进行管理容器进行管理n首先:首先: servlet容器调用容器调用servlet的的init()方法,对方法,对servlet进行初始化(获取进行初始化(获取home对象和对象和ejb对象的对象的引用)引用)n然后:然后: servlet容器自动的调用容器自动的调用servlet中的某个适中的某个适当

2、的方法处理该请求(当的方法处理该请求(doget()方法:调用方法:调用ejb远远程方法)程方法)adder.jsp浏览器客户端:输入一个数字,提交给浏览器客户端:输入一个数字,提交给adderservlet;adder.jspnwinitial page for adderservletnnwnplease enter an integer:nnnwnadderservlet.java调用调用stateful session bean的业务方法的业务方法nsession bean:把用户提交的数字加到它的把用户提交的数字加到它的状态变量中状态变量中把业务方法的返回值返回给浏览器客户端把业务方

3、法的返回值返回给浏览器客户端adderservletpublic class adderservlet extends httpservlet nadder adder;npublic void init() throws servletexception npublic void doget (httpservletrequest req, httpservletresponse res) throws servletexception, ioexception init()ntry winitialcontext ic = new initialcontext();wobject objr

4、ef = ic.lookup(adder);wadderhome home = (adderhome)portableremoteobject.narrow(objref, adderhome.class);wadder = home.create(0);n catch(exception e) we.printstacktrace();ndoget()nstring inputstring = req.getparameter(inputstring);ninteger inputnumber = new integer(inputstring);nadder.add(inputnumber

5、.intvalue();n/调用调用session bean的业务方法的业务方法nint total = adder.gettotal();nres.setcontenttype(text/html);nprintwriter out = res.getwriter();ngeneratepage(out,total);private void generatepage(printwriter out, int total) nout.println();nout.println();nout.println(input for adderservlet);nout.println();nou

6、t.println();nout.println(the running total is: + string.valueof(total);nout.println();nout.println();nout.println(please enter an integer:);nout.println();nout.println();nout.println();nout.println();nout.println();nout.println(); generatepage()返回返回session beanadderejbnlocal 接口接口adderlocalnlocal hom

7、e接口接口adderlocalhomenbean类类adderbeanremote接口接口客户端采用客户端采用remote接口来调用接口来调用enterprise bean:nstub、skeleton、网络、参数整理网络、参数整理/再整理再整理n生成生成bean是非常慢的、效率不高是非常慢的、效率不高local 接口接口快速、高效快速、高效客户端是运行在同一个客户端是运行在同一个ejb容器中的其容器中的其他他enterprise bean:采用采用local接口来接口来调用调用enterprise beann没有没有stub、skeleton代理,以更快的方式代理,以更快的方式生成生成bea

8、nlocal接口和接口和localhome接口接口local接口扩展接口扩展javax.ejb.ejblocalobject接口,不抛接口,不抛出远程异常出远程异常localhome接口扩展接口扩展javax.ejb.ejblocalhome接口,不抛接口,不抛出远程异常出远程异常local接口接口import javax.ejb. ejblocalobject;/import java.rmi.remoteexception;public interface adder extends ejblocalobjectnvoid add(int number);nint gettotal();l

9、ocalhome接口接口import java.io.serializable;/import java.rmi.remoteexception;import javax.ejb.createexception;import javax.ejb.ejblocalhome;public interface adderhome extends ejblocalhomenadder create() throws throws createexceptioncreateexception;nadder create(int initial) throws throws createexception

10、createexception;bean类类import javax.ejb.*;public class adderbean implements sessionbeannint total;npublic void ejbcreate() total = 0; npublic void ejbcreate(int initial) total = initial; npublic void add(int number) total += number; npublic int gettotal() return total; npublic adderbean() npublic voi

11、d setsessioncontext(sessioncontext sc) npublic void ejbremove() npublic void ejbactivate() npublic void ejbpassivate() web.xmlnw adderaliasalias wadderservletnnw adderaliasalias w/adderaliasalias nejb-jar.xml n wnadderejbnadderhomenaddernadderbeannstatefulncontainer wn nweblogic-ejb-jar.xml nwaddere

12、jbwadder n j2ee application*.earn*.warn*.jarnmeta-infadder_web.warwebbuild.xml adder.jsp web-infclassesadderservlet.classadderlocal.classadderlocalhome.classweb.xmladder_ejb.jar文件文件ejbbuild.xml adderlocal.class adderlocalhome.class adderbean.classmeta-infejb-jar.xmlweblogic-ejb-jar.xmlear文件文件adder_w

13、eb.waradder_ejb.jarapplication.xmlbuild.xmlapplication.xmlnadderappnadder applicationnwnadder_web.warnadderwnnwadder_ejb.jarnbuild.xml n /n dir=web/target name=package depends=near =application.xmlw .jar/w .war/nbuild.xml (cont.)target name=deploy depends=packagen verbose=true debug=true/运行运行anthttp

14、:/localhost:7001/adder/adder.jspjsp+java bean+entity bean不直接在不直接在jsp页面中使用页面中使用ejb,而是使用而是使用java bean作为作为enterprise bean的代的代理:理:n尽可能在尽可能在jsp页面中减少代码;页面中减少代码;njava bean负责调用负责调用ejb,将返回结果保存将返回结果保存在属性当中;在属性当中;njsp使用使用获取属性,获取属性,并显示出来并显示出来account.jspaccount.jsp客户在客户在jsp页面输入账户信息(页面输入账户信息(id, firstname, lastna

15、me, balance)选择要进行的操作(选择要进行的操作(create, find, debit, credit)输入输入debit/credit操作需要的操作需要的amountjsp页面传递参数到页面传递参数到java bean,并将并将返回值显示出来返回值显示出来account.jspnnn/将将form中所有参数的值传给中所有参数的值传给accountbean同名的属性值同名的属性值n wstring status; nn wstatus = accountbcessrequest(); naccount.jsp(cont.)naccount id input type=

16、text name=id size=8 value= nbalance input type=text name=balance size=8 value= nfirst name input type=text name=firstname size=8 value=nlast name input type=text name=lastname size=8 value= account.jsp(cont.)naction :ncreate nfindndebitncreditn namount n status : status java beanaccountjavabean.java

17、n属性属性waction, id, firstname, lastname, balance, amountnget/set方法方法nprocessrequest()方法方法w根据传入的参数作相应处理根据传入的参数作相应处理构造器构造器entity bean对象的初始化位于构造器对象的初始化位于构造器中:中:ncontext ic = new initialcontext();njava.lang.object objref = ic.lookup(“ejb);nhome = (home) portableremoteobject.narrow(objref, home.class);acco

18、untjavabean()public accountjavabean() ntry wcontext ic = new initialcontext();wjava.lang.object objref = ic.lookup(accountjspejb);waccounthome = (accounthome) portableremoteobject.narrow(objref, accounthome.class);n catch (exception re) wre.printstacktrace();nnreset(); /设定各属性值设定各属性值reset()private vo

19、id reset() nsystem.out.println(calling reset();nfinal string emptystring = ;nfinal double zero = 0.0;nsetaction(emptystring);nsetid(emptystring);nsetfirstname(emptystring);nsetlastname(emptystring);nsetbalance(zero);nsetamount(zero);get/set方法方法n public string getaction() return action; n public void

20、 setaction(string a) action = a; n public string getid() return id; n public void setid(string i) id = i; n public string getfirstname() return firstname; n public void setfirstname(string f) firstname = f; n public string getlastname() return lastname; n public void setlastname(string l) lastname =

21、 l; n public double getbalance() return balance; n public void setbalance(double b) balance = b; n public double getamount() return amount; n public void setamount(double a) amount = a; processrequest()方法方法负责调用负责调用entity bean的方法:的方法: create, find, debit, creditpublic string processrequest() nstring

22、message = ;ntry wif( action.equals(create) ) naccount = accounthome.create(id, firstname, lastname, balance);nmessage = created account + id + ; welse if( action.equals(debit) ) naccount = accounthome.findbyprimarykey(id);naccount.debit(amount); loadfromejb();nmessage = debited account + id + by $ +

23、 amount;welse if( action.equals(credit) ) naccount = accounthome.findbyprimarykey(id);naccount.credit(amount); loadfromejb();nmessage = credited account + id + by $ + amount;welse if( action.equals(find) ) naccount = accounthome.findbyprimarykey(id);nloadfromejb();nmessage = found account + id; n ca

24、tch (exception e) wmessage = e.tostring();nnreturn message; loadfromejb()private void loadfromejb() ntry wsetfirstname(account.getfirstname();wsetlastname(account.getlastname();wsetbalance(account.getbalance();n catch (exception re) wre.printstacktrace();ntostring()方法方法public string tostring() nstri

25、ngbuffer output = new stringbuffer();noutput.append(action : + action);noutput.append( id : + id);noutput.append( first name : + firstname);noutput.append( last name : + lastname);noutput.append( balance : + balance);noutput.append( amount : + amount);nreturn output.tostring(); 数据库表数据库表account1创建数据库

26、表:创建数据库表:ncreate table account1 (id varchar(3) constraint pk_account primary key, firstname varchar(24), lastname varchar(24), balance double precision);bmp entity bean远程接口远程接口accountndebit(double amount)ncredit(double amount)ngetfirstname()ngetlastname()ngetbalance()bmp entity beanhome接口接口accounthomencreate(string id, string firstname, string lastname, double balance)nfindbyprimary

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论