还剩27页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
实验报告
(三)院系信息学院课程名称Web数据库技术日期班级信息A1022姓名刘杰专业信息管理与信息系统学号29实验室实验名称Servlet应用成绩评定教师签名实验目的掌握servlet的配置方法掌握web服务器的配置过程掌握HttpServlet类的用法掌握session等对象的用法掌握请求转发功能的应用
6、掌握SerlvetConfig上下文的用法实验内容Servlet配置、servlet设计、会话管理、请求流转、上下文应用实验过程、结果及分析
一、请建立一个servlet类用于显示当前的系统时间写出它的url配置写法packageservlet;importj__a.io.IOEx__ption;importj__a.io.PrintWriter;importj__a.util.Date;importj__ax.servlet.ServletEx__ption;importj__ax.servlet.http.HttpServlet;importj__ax.servlet.http.HttpServletRequest;importj__ax.servlet.http.HttpServletResponse;publicclassservletDateextendsHttpServlet{publicvoiddoGetHttpServletRequestrequestHttpServletResponseresponsethrowsServletEx__ptionIOEx__ption{request.setCharacterEncodingUTF-8;response.setCharacterEncodingUTF-8;response.setContentTypetext/html;PrintWriterout=response.getWriter;StringdateString=null;Datedate=newDate;dateString=date.toLocaleString;out.print当前时间是+dateString;out.flush;out.close;}publicvoiddoPostHttpServletRequestrequestHttpServletResponseresponsethrowsServletEx__ptionIOEx__ption{}}url配置方法首先在servlet包下新建servlet类servletDateservletservlet-nameservletDate/servlet-nameservlet-classservlet.servletDate/servlet-class/servlet然后进行映射,第一个斜杠是web应用的根路径;servlet-__ppingservlet-nameservletDate/servlet-nameurl-pattern/servlet/servletDate/url-pattern/servlet-__pping实验过程、结果及分析
二、请输入用户名和__,如果用户名和__是“zhangsan”和”123456”则进入一个欢迎界面,否则要求用户重新输入涉及的方法1response.sendRedirectlogin.htm;2request.getRequestDispatcherwelcome.htm.forwardrequestresponse;3HttpSessionsession=request.getSession;session.setAttributeislogintrue;4booleanisLogin=session.getAttributeislogin;Login.html:!DOCTYPEHTMLPUBLIC-//W3C//DTDHTML
4.01Transitional//ENhtmlheadtitleMyHtml.html/titlemetahttp-equiv=keywordscontent=keyword1keyword2keyword3metahttp-equiv=descriptioncontent=thisismypagemetahttp-equiv=content-typecontent=text/html;charset=UTF-8!--linkrel=stylesheettype=text/csshref=./styles.css--/headbodyThisismyHTMLpage.brformmethod=postaction=/servlet/servlet/login1用户名inputtype=textname=namebrnbsp;__inputtype=textname=pwdbrnbsp;inputtype=submitvalue=进入/form/body/htmlWelcome.j__apackageservlet;importj__a.io.IOEx__ption;importj__a.io.PrintWriter;importj__ax.servlet.ServletEx__ption;importj__ax.servlet.http.HttpServlet;importj__ax.servlet.http.HttpServletRequest;importj__ax.servlet.http.HttpServletResponse;importj__ax.servlet.http.HttpSession;publicclassWelcomeextendsHttpServlet{publicvoiddoGetHttpServletRequestrequestHttpServletResponseresponsethrowsServletEx__ptionIOEx__ption{this.doPostrequestresponse;}publicvoiddoPostHttpServletRequestrequestHttpServletResponseresponsethrowsServletEx__ptionIOEx__ption{HttpSessionsession=request.getSession;StringisLogin=Stringsession.getAttributeisLogin;response.setContentTypetext/html;PrintWriterout=response.getWriter;out.println!DOCTYPEHTMLPUBLIC\-//W3C//DTDHTML
4.01Transitional//EN\;out.printlnHTML;out.printlnHEADTITLEAServlet/TITLE/HEAD;out.printlnBODYb__olor=X0FFFstyle=font-size:100px;out.println__rquee欢迎进入J__aWeb世界!/front/__rquee;out.printlnisLogin:+isLogin;out.println/BODY;out.println/HTML;out.flush;out.close;}}Login.j__apackageservlet;importj__a.io.IOEx__ption;importj__a.io.PrintWriter;importj__a.util.Date;importj__ax.servlet.ServletEx__ption;importj__ax.servlet.http.HttpServlet;importj__ax.servlet.http.HttpServletRequest;importj__ax.servlet.http.HttpServletResponse;importj__ax.servlet.http.HttpSession;publicclasslogin1extendsHttpServlet{publicvoiddoGetHttpServletRequestrequestHttpServletResponseresponsethrowsServletEx__ptionIOEx__ption{this.doPostrequestresponse;}publicvoiddoPostHttpServletRequestrequestHttpServletResponseresponsethrowsServletEx__ptionIOEx__ption{request.setCharacterEncodingUTF-8;//字符编码问题,解决中文乱码问题response.setCharacterEncodingUTF-8;StringName=request.getParametername;StringPwd=request.getParameterpwd;ifzhangsan.equalsName
123456.equalsPwd{HttpSessionsession=request.getSession;session.setAttributeisLogintrue;request.getRequestDispatcher/welcome.forwardrequestresponse;//转发}else{response.sendRedirectrequest.getContextPath+/login
1.html;//重定向}}}
2、领会多用户并发访问的机制,请建立一个HttpServlet——“servletUsers”类,在该类的成员代码如下publicclassserveltUsersextendsHttpServlet{privateIntegerx=1;publicvoiddoGetHttpServletRequestrequestHttpServletResponseresponsethrowsServletEx__ptionIOEx__ption{this.doPostrequestresponse;}publicvoiddoPostHttpServletRequestrequestHttpServletResponseresponsethrowsServletEx__ptionIOEx__ption{response.setContentTypetext/html;response.setCharacterEncodingutf-8;PrintWriterout=response.getWriter;out.println!DOCTYPEHTMLPUBLIC\-//W3C//DTDHTML
4.01Transitional//EN\;out.printlnHTML;out.printlnHEADTITLEAServlet/TITLE/HEAD;out.printlnBODY;out.println当前x的值是+x;out.flush;synchronizedx{Threadthread=Thread.currentThread;try{thread.sleep1000*5;}catchInterruptedEx__ptione{//TODOAuto-generatedcatchblocke.printStackTra__;}x++;out.println当前serlvet实例阻塞5秒后,当前x的值是+x;out.println/BODY;out.println/HTML;out.flush;out.close;}}请在5秒内用两个浏览器窗口浏览该HttpServlet类,看看效果如何___是这个效果!第一个窗口显示当前x的值是1当前serlvet实例阻塞5秒后,当前x的值是2第二窗口显示当前x的值是2当前serlvet实例阻塞5秒后,当前x的值是3分析与解析用户一访问x时,第一次x为初值1,用户一在休眠五秒钟内释放了对x的控制权,休眠后,当前x的值是3用户二在五秒内再次访问x时,因为对核心语句加锁,必须等待用户一休眠后以及对x加1后才能访问x这时用户二访问的x为已经加了1,值为2,当前serlvet实例阻塞5秒后,当前x的值是3
三、请设计一种过滤器实现权限控制机制如果用户进入web应用没有登入时,要求用户必须进入登入页面packagefilter;importj__a.io.IOEx__ption;importj__a.util.Date;importj__ax.servlet.Filter;importj__ax.servlet.FilterChain;importj__ax.servlet.FilterConfig;importj__ax.servlet.ServletEx__ption;importj__ax.servlet.ServletRequest;importj__ax.servlet.ServletResponse;importj__ax.servlet.http.HttpServletRequest;importj__ax.servlet.http.HttpServletResponse;importj__ax.servlet.http.HttpSession;publicclassencoderFilterimplementsFilter{//过滤器的使用publicvoiddestroy{//销毁,在销毁之前可以保存数据到数据库}publicvoiddoFilterServletRequestreqServletResponseresFilterChainchainthrowsIOEx__ptionServletEx__ption{HttpServletRequestrequest=HttpServletRequestreq;HttpServletResponseresponse=HttpServletResponseres;request.setCharacterEncodingUTF-8;//字码设置,解决乱码问题response.setCharacterEncodingutf-8;HttpSessionsession=request.getSession;ifsession.isNew{response.sendRedirectrequest.getContextPath+/login.html;//重定向}chain.doFilterrequestresponse;//过滤器的方法}publicvoidinitFilterConfigarg0throwsServletEx__ption{//初始化方法}}配置WEB.xmlfilterfilter-nameencoder/filter-namefilter-classfilter.encoderFilter/filter-class/filterfilter-__ppingfilter-nameencoder/filter-nameurl-pattern/*/url-pattern过滤web应用下的文件/filter-__pping请设计一种机制进行__访问者统计监听器类packageListener;importj__ax.servlet.ServletContext;importj__ax.servlet.ServletContextEvent;importj__ax.servlet.ServletContextListener;importj__ax.servlet.http.HttpSession;importj__ax.servlet.http.HttpSessionEvent;importj__ax.servlet.http.HttpSessionListener;publicclassapplicationimplementsServletContextListenerHttpSessionListener{publicvoidcontextDestroyedServletContextEvents__{//TODOAuto-generatedmethodstub}publicvoidcontextInitializedServletContextEvents__{//TODOAuto-generatedmethodstubServletContextapplication=s__.getServletContext;application.setAttributecount0;System.out.printweb应用初始化**********;}publicvoidsessionCreatedHttpSessionEventse{//TODOAuto-generatedmethodstubSystem.out.print一个新的session对象产生********;ServletContextapplication=se.getSession.getServletContext;HttpSessionsession=se.getSession;session.setAttributecount10;Integercount=Integerapplication.getAttributecount;intcou=count+1;application.setAttributecountcou;}publicvoidsessionDestroyedHttpSessionEventse{//TODOAuto-generatedmethodstub}}统计类packageservlet;importj__a.io.IOEx__ption;importj__a.io.PrintWriter;importj__ax.servlet.ServletContext;importj__ax.servlet.ServletEx__ption;importj__ax.servlet.http.HttpServlet;importj__ax.servlet.http.HttpServletRequest;importj__ax.servlet.http.HttpServletResponse;importj__ax.servlet.http.HttpSession;publicclasshello3extendsHttpServlet{/***ThedoGetmethodoftheservlet.br**Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget.**@paramrequesttherequestsendbytheclienttotheserver*@paramresponsetheresponsesendbytheservertotheclient*@throwsServletEx__ptionifanerroroccurred*@throwsIOEx__ptionifanerroroccurred*/publicvoiddoGetHttpServletRequestrequestHttpServletResponseresponsethrowsServletEx__ptionIOEx__ption{this.doPostrequestresponse;}/***ThedoPostmethodoftheservlet.br**Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost.**@paramrequesttherequestsendbytheclienttotheserver*@paramresponsetheresponsesendbytheservertotheclient*@throwsServletEx__ptionifanerroroccurred*@throwsIOEx__ptionifanerroroccurred*/publicvoiddoPostHttpServletRequestrequestHttpServletResponseresponsethrowsServletEx__ptionIOEx__ption{HttpSessionsession=request.getSession;Integeri=Integersession.getAttributecount;intcount=i+1;session.setAttributecountcount;ServletContextapplication=this.getServletContext;response.setContentTypetext/html;PrintWriterout=response.getWriter;out.println!DOCTYPEHTMLPUBLIC\-//W3C//DTDHTML
4.01Transitional//EN\;out.printlnHTML;out.printlnHEADTITLEAServlet/TITLE/HEAD;out.printlnBODY;out.printservletContext-count+application.getAttributecount+br;out.printsession-coun+session.getAttributecount+br;out.printahref=hello1hello1/abr;out.printahref=hello2hello2/abr;out.println/BODY;out.println/HTML;out.flush;out.close;}}在web.xml监听器配置listenerlistener-classListener.application/listener-class/listener实验报告
(四)院系信息学院课程名称Web数据库技术日期班级信A1022姓名刘杰专业信息管理与信息系统学号29实验室实验名称Jsp应用成绩评定教师签名实验目的request、response对象的应用EL表达式的使用
3、J__abeans使用实验内容内置对象的使用、el表达式、j__abean应用实验过程、结果及分析
一、
1.编写一个含有文本输入框、__框的登陆页面login.html编写login.html文件htmlbodyformaction=logincheck.jspmethod=post用户名inputtype=textname=userName__inputtype=passwordname=passwordinputtype=submitvalue=登录/form/body/html
2.编写一个登陆验证页面logincheck.jsp,如果用户输入的用户名为admin__为123则转到index.jsp文件,否则,提示登陆失败编写logincheck.jsp文件%@pagelanguage=j__aimport=j__a.util.*contentType=text/html;charset=UTF-8%html%StringsUserName=request.getParameteruserName;StringsPWD=request.getParameterpassword;ifsUserName.equalsadminsPWD.equals123response.sendRedirectindex.jsp;elseout.println用户名或__错误!;%body/body/html编写index.jsp文件htmlbody登陆成功!欢迎进入系统/body/html实验过程、结果及分析
二、
1、请通过j__aBean、EL表达式和JSTL来显示整个学生表中的信息pojo类:publicclassUserimplementsSerializable{privateStringname;privateStringpassword;privateStringcause;privateStringinfo;publicStringgetInfo{returninfo;}publicvoidsetInfoStringinfo{this.info=info;}publicStringgetPassword{returnpassword;}publicvoidsetPasswordStringpassword{this.password=password;}publicStringgetUsername{returnname;}publicvoidsetUsernameStringusername{this.name=username;}publicStringgetCause{returncause;}publicbooleanlogin{ifbriup.equalsnamebriup.equalspassword{info=suc__sslogin;returntrue;}else{cause=userorpassworenot__tch;returnfalse;}}}login.jsp%@pagelanguage=j__acontentType=text/html;charset=UTF-8pageEncoding=UTF-8%jsp:useBeanid=userclass=com.briup.j__abean.Userscope=request/%ifuser.getCause!=null{%Cause:fontcolor=redjsp:getPropertyname=userproperty=cause//font%}%formaction=loginCheck.jspmethod=posttableborder=1trtdUserName/tdtdinputtype=textname=username//td/trtrtdPassWord/tdtdinputtype=passwordname=password//td/tr/tableinputtype=submitvalue=Submit/inputtype=resetvalue=Reset//formLogincheck.jsp%@pagelanguage=j__apageEncoding=UTF-8%jsp:useBeanid=userclass=com.briup.j__abean.Userscope=request/jsp:setPropertyname=userproperty=*/%ifuser.login{%jsp:forwardpage=loginSuc__ss.jsp/%}else{%jsp:forwardpage=login.jsp/%}%loginsuc__ss.jsp%@pagelanguage=j__apageEncoding=UTF-8%jsp:useBeanid=userclass=com.briup.j__abean.Userscope=request/jsp:getPropertyname=userproperty=info//h2fontsize=5color=blueUserName:jsp:getPropertyname=userproperty=username/brPassword:jsp:getPropertyname=userproperty=password/br/font实验报告
(五)院系信息学院课程名称Web数据库技术日期班级信A1022姓名刘杰专业信息管理与信息系统学号29实验室实验名称MVC模式应用成绩评定教师签名实验目的掌握MVC模式的设计理念
2、掌握各层的设计方法实验内容转账系统的设计__实验过程、结果及分析
1、输入两个账户及金额,将一个账户的资金转入到另一个账户上User类{Stringname;//账户名Stringpwd;//__intmoney;//金额}账户表账户名char10__varchar20金额intpackagepojo;publicclassamount{privateStringname;privateintmoney;publicStringgetName{returnname;}publicvoidsetNameStringname{this.name=name;}publicintgetMoney{returnmoney;}publicvoidsetMoneyintmoney{this.money=money;}}packagedao;importj__a.util.List;importamountEx__ption.amountEx__ption;importpojo.amount;publicinte_____amountDao{//查找指定条件的账户ListamountfindAmount__yConditionStringsqlConditionListO__ectvaluesthrowsamountEx__ption;//删除指定账户名voiddeleteAmountStringamountNamethrowsamountEx__ption;//保存账户到账户表中ints__eAmountamountamountthrowsamountEx__ption;//把amount中的钱改变money如果money为正数表示加钱,否则表示减钱voidchangMoneyamountamountintmoneythrowsamountEx__ption;voidClose;}packagedao;importj__a.sql.*;importj__a.util.List;importutil.connectionFactory;importamountEx__ption.amountEx__ption;;publicclassDBtemplate{protectedConnectionconn;protectedPreparedStatementpres;protectedResultSetrs;protectedStatementstam;publicDBtemplateConnectionconn{super;this.conn=conn;}publicvoidcloseAll{closeAllrspresconn;}publicvoidcloseAllResultSetrsPreparedStatementpresConnectionconn{ifrs!=nulltry{rs.close;}catchSQLEx__ptione{//TODOAuto-generatedcatchblocke.printStackTra__;}ifpres!=nulltry{pres.close;}catchSQLEx__ptione{e.printStackTra__;}ifconn!=nulltry{conn.close;}catchSQLEx__ptione{//TODOAuto-generatedcatchblocke.printStackTra__;}}publicvoidcloseAllResultSetrsStatementpresConnectionconn{ifrs!=nulltry{rs.close;}catchSQLEx__ptione{//TODOAuto-generatedcatchblocke.printStackTra__;}ifpres!=nulltry{pres.close;}catchSQLEx__ptione{e.printStackTra__;}ifconn!=nulltry{conn.close;}catchSQLEx__ptione{//TODOAuto-generatedcatchblocke.printStackTra__;}}protectedResultSetexecuteQueryStringsqlListO__ectvaluesthrowsamountEx__ption{initPreparedStatementsqlvalues;/*System.out.printvalues;*/try{returnpres.executeQuery;//}catchSQLEx__ptione{thrownewamountEx__ptione;}}privatevoidinitPreparedStatementStringsqlListO__ectvaluesthrowsamountEx__ption{try{pres=conn.prepareStatementsql;inti=1;forO__ecto:values{/*System.out.printo;*/pres.setO__ectio;i++;}}catchSQLEx__ptione{thrownewamountEx__ptione;}}protectedintexecuteUpdateStringsqlListO__ectvaluesthrowsamountEx__ption{intcount=-1;/*System.out.printvalues;System.out.printlnsql;*/try{initPreparedStatementsqlvalues;//初始化预处理语句对象count=pres.executeUpdate;/*System.out.printcount;*/}catchEx__ptione{thrownewamountEx__ptione;}finally{closeAllnullpresnull;}returncount;}protectedvoidexecuteUpdateStringsql{/*conn=connectionFactory.getConnection;*///如果再次声明连接对象,则覆盖了传过来的连接对象try{stam=conn.createStatement;//不适合用于业务dao的处理,因为需要本对象自己提交inti=stam.executeUpdatesql;/*conn.commit;*/ifi==0{System.out.print\n操作失败!+i;}else{System.out.print\n操作成功!+i;}}catchSQLEx__ptione1{//TODOAuto-generatedcatchblocke
1.printStackTra__;}finally{/*closeAllnullstamconn;*/}}}packagedao;importj__a.sql.*;importj__a.util.List;importutil.connectionFactory;importamountEx__ption.amountEx__ption;;publicclassDBtemplate{protectedConnectionconn;protectedPreparedStatementpres;protectedResultSetrs;protectedStatementstam;publicDBtemplateConnectionconn{super;this.conn=conn;}publicvoidcloseAll{closeAllrspresconn;}publicvoidcloseAllResultSetrsPreparedStatementpresConnectionconn{ifrs!=nulltry{rs.close;}catchSQLEx__ptione{//TODOAuto-generatedcatchblocke.printStackTra__;}ifpres!=nulltry{pres.close;}catchSQLEx__ptione{e.printStackTra__;}ifconn!=nulltry{conn.close;}catchSQLEx__ptione{//TODOAuto-generatedcatchblocke.printStackTra__;}}publicvoidcloseAllResultSetrsStatementpresConnectionconn{ifrs!=nulltry{rs.close;}catchSQLEx__ptione{//TODOAuto-generatedcatchblocke.printStackTra__;}ifpres!=nulltry{pres.close;}catchSQLEx__ptione{e.printStackTra__;}ifconn!=nulltry{conn.close;}catchSQLEx__ptione{//TODOAuto-generatedcatchblocke.printStackTra__;}}protectedResultSetexecuteQueryStringsqlListO__ectvaluesthrowsamountEx__ption{initPreparedStatementsqlvalues;/*System.out.printvalues;*/try{returnpres.executeQuery;//}catchSQLEx__ptione{thrownewamountEx__ptione;}}privatevoidinitPreparedStatementStringsqlListO__ectvaluesthrowsamountEx__ption{try{pres=conn.prepareStatementsql;inti=1;forO__ecto:values{/*System.out.printo;*/pres.setO__ectio;i++;}}catchSQLEx__ptione{thrownewamountEx__ptione;}}protectedintexecuteUpdateStringsqlListO__ectvaluesthrowsamountEx__ption{intcount=-1;/*System.out.printvalues;System.out.printlnsql;*/try{initPreparedStatementsqlvalues;//初始化预处理语句对象count=pres.executeUpdate;/*System.out.printcount;*/}catchEx__ptione{thrownewamountEx__ptione;}finally{closeAllnullpresnull;}returncount;}protectedvoidexecuteUpdateStringsql{/*conn=connectionFactory.getConnection;*///如果再次声明连接对象,则覆盖了传过来的连接对象try{stam=conn.createStatement;//不适合用于业务dao的处理,因为需要本对象自己提交inti=stam.executeUpdatesql;/*conn.commit;*/ifi==0{System.out.print\n操作失败!+i;}else{System.out.print\n操作成功!+i;}}catchSQLEx__ptione1{//TODOAuto-generatedcatchblocke
1.printStackTra__;}finally{/*closeAllnullstamconn;*/}}}packagedao.impl;importj__a.sql.Connection;importj__a.sql.SQLEx__ption;importj__a.sql.Statement;importj__a.util.ArrayList;importj__a.util.List;importamountEx__ption.amountEx__ption;importpojo.amount;importutil.connectionFactory;importdao.DBtemplate;importdao.amountDao;publicclassamountDaoImplextendsDBtemplateimplementsamountDao{publicamountDaoImplConnectionconn{superconn;//TODOAuto-generatedconstructorstub}@OverridepublicvoidClose{//TODOAuto-generatedmethodstub}@OverridepublicvoidchangMoneyamountamountintmoneythrowsamountEx__ption{//TODOAuto-generatedmethodstubStringsql=updateamountsetmoney=money+;Stringname=amount.getName;sql=sql+money+wherename=+name;System.out.printsql;executeUpdatesql;/*ifmoney0{}else{}*/}@OverridepublicvoiddeleteAmountStringamountNamethrowsamountEx__ption{//TODOAuto-generatedmethodstubStringsql=deletefromamount;ifamountName!=null!.equalsamountName{sql=sql+where+amountName;}System.out.printsql;executeUpdatesql;/*conn=connectionFactory.getConnection;try{stam=conn.createStatement;inti=stam.executeUpdatesql;conn.commit;System.out.printi;}catchSQLEx__ptione1{//TODOAuto-generatedcatchblocke
1.printStackTra__;}*/}@OverridepublicListamountfindAmount__yConditionStringsqlConditionListO__ectvaluesthrowsamountEx__ption{//TODOAuto-generatedmethodstubStringsql=selectnamemoneyfromamount;ifsqlCondition!=null!.equalssqlCondition{sql=sql+where+sqlCondition;}System.out.printsql;rs=executeQuerysqlvalues;/*Statementstam=null;Connectionconn=connectionFactory.getConnection;try{stam=conn.createStatement;rs=stam.executeQuerysql;}catchSQLEx__ptione1{//TODOAuto-generatedcatchblocke
1.printStackTra__;}*/Listamountamounts=newArrayListamount;//建立__对象amountam=null;try{whilers.next{am=newamount;/*System.out.printrs.next=+rs.next;*//*System.out.printrs.getStringname;*/am.setNamers.getStringname;am.setMoneyrs.getIntmoney;amounts.addam;}}catchSQLEx__ptione{//TODOAuto-generatedcatchblocke.printStackTra__;}returnamounts;}@Overridepublicints__eAmountamountamthrowsamountEx__ption{StringsqlPre=insertintoamount;//TODOAuto-generatedmethodstubStringsqlTail=values;/*Listo__ectvalue=newArrayListo__ect;*/ListO__ectvalues=newArrayListO__ect;ifam.getName!=null!.equalsam.getName{sqlPre=sqlPre+namemoney;/*System.out.printsqlPre;*/sqlTail=sqlTail+;/*System.out.printsqlTail;*/values.addam.getName;values.addam.getMoney;}sqlPre=sqlPre.substring0sqlPre.length-1+;sqlTail=sqlTail.substring0sqlTail.length-1+;Stringsql=sqlPre+sqlTail;/*System.out.printvalues;*//*System.out.printlnsql;*/returnexecuteUpdatesqlvalues;}}packagetest;importj__a.sql.Connection;importj__a.sql.SQLEx__ption;importamountEx__ption.amountEx__ption;importdao.amountDao;importdao.impl.amountDaoImpl;importpojo.amount;importutil.connectionFactory;publicclassamountDaoChangeTest{/***@paramargs*/publicstaticvoid__inString[]args{//TODOAuto-generatedmethodstubamountam=newamount;am.setName814;am.setMoney500;//正数为加钱,负数为减钱Connectionconn=null;conn=connectionFactory.getConnection;amountDaoamDao=newamountDaoImplconn;try{amDao.changMoneyamam.getMoney;try{conn.commit;}catchSQLEx__ptione{//TODOAuto-generatedcatchblocke.printStackTra__;try{conn.rollback;}catchSQLEx__ptione1{//TODOAuto-generatedcatchblocke
1.printStackTra__;}}}catchamountEx__ptione{//TODOAuto-generatedcatchblocke.printStackTra__;}ifconn!=null{try{conn.close;}catchSQLEx__ptione{//TODOAuto-generatedcatchblocke.printStackTra__;}}}}。