《Web数据库学生实验报告JDBC部分版.docx》由会员分享,可在线阅读,更多相关《Web数据库学生实验报告JDBC部分版.docx(22页珍藏版)》请在第壹文秘上搜索。
1、Web数据库技术教师实验指导手册及评分标准院系:信息科学与技术学院专业:信息管理与信息系统班级:信A1321/22任课教师:张海实验报告(二)院系:信息学院课程名称:Web数据库技术日期:班级信息A1321姓名邹文强专业信息管理与信息系统学号16实验室607实验名称Servlet应用成绩评定教师签名实验目的1、掌握SerVlet的配置方法2、掌握Web服务器的配置过程3、掌握Servlet类的用法4、掌握SeSSiOn等对象的用法5、掌握请求转发功能的应用6、掌握SerIVetConfig上下文的用法实验内容SerVIet配置、SerVIet设计、会话管理、请求流转、上下文应用1、请建立一个S
2、erVlet类用于显示当前的系统时间。写出它的Url配置写法20分。HI Padcjg Hf) - 5 IQMyFirstServIetjo答案:SerVIet类实验代码:.V / OayOlr I上src史 ServietOl lT) DemolServIei Ql Demo2Servle1 I J2) Demo3Servle Demo4Servlei 7) MyFirstServIei SQjnfigServIe I A JRE System Library ; 0 Java EE 5 Libraries & WebRoot jdbc4 iir I. mag J Snp D H 与Ial应
3、/回窗Dpackageservlecl;-*importjava.io.IOException;|publicclassMFirstServletextendsHttpServlecpublicvoiddoGet(HttpServletRecjuestrequest,HrtpservletResponseresponse)throwsServletExceptionrIOExceptionrequest.SecCharaccerEncoding(tutf-8w);response.SecCharacterEncoding(utf-8);response.gerWrter().wHixe(系统当
4、前时间:wnewDare().();publicvoiddoPosc(HttpServletRequesrrequest,HtrpservletResponseresponse)throwsServletExceptionrIOExceptiondoGet(request,response);实验结果:文件(D娓或回至看Ql改藏天住)工具烈助(三)现在的时间:2015402710:27:29rl配置:MyFirstServletservletMyFirstServlet2、领会多用户并发访问的机制,请建立一个ServletwServletUsersw类,在该类的成员代码如下:publiccla
5、ssServeltUsersextendsServletprivateIntegerx=l;publicvoiddoGet(ServletRequestrequest,ServletResponseresponse)throwsServletExceptionzIOExceptionthis.doPost(request,response);publicvoiddoPost(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOExceptionresponse.SetContentType(,textht
6、ml);response.SetCharacterEncoding(,utf-8n);PrintWriterout=response.getWriter();out.println(,);out.printin(n);out.printin(,AServlet);out.println();OUt.printin(当前X的值是”+x);out.flush();synchronized(x)x+;Threadthread=Thread.CurrentThread();try(thread.sleep(1000*5);catch(InterruptedExceptione)/TODOAuto-ge
7、neratedcatchblocke.printStackTrace();)OUt.printin(当前SerIVet实例阻塞5秒后,当前X的值是“+x);out.printin(,);out.printin(,);out.flush();out.close();请在5秒内用两个浏览器窗口浏览该Servlet类,看看效果如何。为什么是这个效果!20分。答:效果:C J中国移动Wl 0 A ServJet Fl加舞浏览器一:Ocalhost-文件但编行()登看Q)收藏夹Hfl(I)犁助(W当前X的值是1当前SeriVet实例阻塞5秒后,当前X的值是2浏览器二:360全浏郎7.1文件查看收藏工具C
8、OQlocalhostOvQ中Io收藏厘手机收蕨夫丁谷默密网址大全Q好搜圄百度产九江学院器扩展用银国用译,ft三O缁好帆IAServlet+当前X的值是2当前SerIVet实例阻塞5秒后,当前X的值是3原因:多线程并发问题,在第一次浏览器中当前X的值被赋值为1,经过运行锁定子句:synchronized(x)和i+子句后,而经过5秒睡眠后,在输出X的值会变成2;在第二次浏览器中由于是定义的是全局变量x=l,本来经过正常运行最终效果会和浏览器去1一样输出的最终值是3,但是中间有了锁定子句:SynChrmized(x)这就使得输出的值发生了变化,当在运行浏览器1时,此时的浏览器二其实也在开始运行,
9、它获得了浏览器一中的输出值x=2,而在开始运行输出浏览器二中的值时,因为浏览器一中已经使得变量X的值为2啦,所以浏览器二中的X初始化值也就变成了2,所以经过5秒睡眠后,输出的当前值变成了3。3、请设计一个SerVle3当连续三次访问该SerVIet是分别向客户输出:第1次:用户浏览器中显示:蓝色颜色的”联系访问中的第1次”第2次:用户浏览器中显示:红色颜色的“联系访问中的第2次”第3次:用户浏览器中显示:黑色颜色的“联系访问中的第3次”答:packageservlet2;importjava.io.IOException;importjava.io.PrintWriter;importetEx
10、ception;Servlet;ServletRequest;ServletResponse;importjavax.servlet.importjavax.servlet.importjavax.servlet.publicclassYanSeextendsServletprivateIntegerx=0;publicvoiddoGet(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOExceptionthis.doPost(request,response);)ptblicvoiddoPost(S
11、ervletRequestrequest,ServletResponseresponse)throwsServletException,IOExceptionresponse.SetContentType(,texthtml);response.SetCharacterEncoding(,utf-8u);PrintWriterout=response.getWriter();out.printin(,);out.printin(,);out.printin(AServletn);out.printin(m);out.flush();synchronized(x)x+;if(x=l)(out.p
12、rintin(,);)if(x=2)out.printin(,);if(x=3)out.printin(,);)OUt.println(联系访问中的第”+x+“次”);out.printin(,);out.printin(,);out.flush();out.close();)4、请将提供的工程解压后添加到myeclipse工作区中,打开mysql将工程中的db目录下的”导入到InySql数据库中。在工程的ServiceDao包中有一个StudentServicesDao,请根据代码中注释的功能结合jdbc中da。模式的设计要求将publicstudentlogin(Stringstuld,S
13、tringname)throwsmyException(Connectionconn=null;StudentDaostuDao=null;try(Conn=ConnectionFactory.getConnection();stuDao=newStudentDaoImpl(conn);Stringsql=,select*from学生基本情况表”;StringCOnditiOn=”学号_Stu工d=?and姓名_name=?”;if(condition!=null&!.equals(condition)sql=sql+where+condition;return(student)executeUpdate(sql);)catch(Exceptione)try(conn.rollback();catch(SQLExceptionel)/TODOAuto-generatedcatchblockel.PrintStackTrace();)/TODOAuto-generatedcatchblocke.PrintStackTrace();finallyif(StuDao!=null)StuDao.close();returnnull;)privatestudentexecuteUpdate(Stringsql)/TODOAuto-gene