《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)execute
14、Update(sql);)catch(Exceptione)try(conn.rollback();catch(SQLExceptionel)/TODOAuto-generatedcatchblockel.PrintStackTrace();)/TODOAuto-generatedcatchblocke.PrintStackTrace();finallyif(StuDao!=null)StuDao.close();returnnull;)privatestudentexecuteUpdate(Stringsql)/TODOAuto-generatedmethodstubreturnnul1;补
15、充完整。20分。5、现在在webroot下有index.jsp用来展现学生的登录,现在要求学生输入学号、姓名后交给login这个servlet去处理,login的功能要求如下:(1)判断用户输入的学号和姓名在学生基本表中是否存在,如果存在提前该学生信息,并将这个学生信息交给另外一个SerVIetrtdiSpStudent,去显示。(2)如果用户输入的学号和姓名在学生基本表中不存在,就直接给用户反馈”找不到输入姓名的学生”。DispStudent这个servlet的功能:显示请求转发过来的学生所有信息。代码:核心代码的设计:学号inputtype=textname=,stuld,PlacehOl
16、der=Z学号姓名Servlet:1.packageServiceDao;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.List;importjavax.servlet.ServletException;importjavax.servlet.Servlet;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importexception.myException;importpojo.student;Servlet
17、 publicclassIOginextendspublicvoiddoGet(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOExceptionrequest.SetCharacterEncoding(,UTF-8);response.SetContentType(text/html;charset=UTF-8);PrintWriterOUt=response.getWriter();StudentServicesDaostudao=newStudentServicesDao();Stringstu
18、ld=request.getParameter(stuld);Stringname=request.getParameter(name);1.iststu=null;try(stu=(LiStstudent)StUdao.login(stu工d,name);catch(myExceptione)/TODOAuto-generatedcatchblocke.PrintStackTrace();)if(stu!=null)request.SetAttribute(,stu,stu);request.getRequestDispatcher(request.getContextPath()+serv
19、letdispStudent).forward(request,response);elseresponse.getWriter().write(找不到输入姓名的学生);)publicvoiddoPost(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOExceptionthis.doPost(request,response);)packageServiceDao;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.
20、Enumeration;importjava.util.List;importjavax.servlet.ServletException;Servlet;ServletRequest;ServletResponse;extends Servlet importjavax.servlet.importjavax.servlet.importjavax.servlet.importpojo.student;publicclassdispStudentpublicvoiddoGet(ServletRequestrequest,ServletResponseresponse)throwsServle
21、tException,IOExceptionrequest.SetCharacterEncoding(,UTF-8);response.SetContentType(texthtml;charset=UTF-8);PrintWriterOUt=response.getWriter();1.istStU=(LiSt)request.getAttribute(stu);Enumerationenumeration=request.getParamete:TNameS();while(enumeration.hasMoreElements()Stringname=enumeration.nextEl
22、ement();Stringvalue=request.getParameter(name);response.getWriter().write(name+*:+value);Stringstuld=enumeration.nextElement();Stringvalued=request.getParameter(stuld);response.getWriter().write(stuld+:+value);)public response)void doPost( ServletRequest request,ServletResponsethrowsServletException
23、,IOExceptionthis.doGet(request,response);6、用户访问统计,当用户首次访问某个SerVlet时,该SerVlet的访问总次数加1,如果该用户已经访问了该SerVlet,再访问时不加1,要求该统计次数能在其他SerVlet中被调用。代码:packageservlet2;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.servlet.Se
24、rvlet;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;publicclassColmtSerVletextendsServletpublicvoiddoGet(ServletRequestreq,ServletResponseresp)throwsServletException,IOException(ServletContextcontext=getServletContext();Integercount=null;synchronized(context)(count=(Integer)
25、context.getAttribute(counter);if(null=count)(count=newInteger(1);)else(count=newInteger(count.intValue()+O);)context.SetAttribute(counter,count);)resp.SetContentType(,texthtml;charset=gb2312);PrintWriterout=resp.getWriter();out.printin(,);out.printin页面访问统计/title)“);out.printin(,);OUjPrintIn(“该页面已被访问
26、了+,+count+“次”);out.printin(“);out.close();ServletResponsepublicvoiddoPost(ServletRequestrequest,response)throwsServletException,IOExceptionthis.doGet(request,response);)结果:该页面已被访问了 1次7、CoOkie使用,当用户输入用户名是张三,密码是1234时,请在SerVIet中创建一个有效时间是300秒的cookie对象,并回传到用户浏览器,浏览器再访问另外一个servlet,查看该cookie是否存在。代码:package
27、cookie;importjava.io.IOException;importjava.io.PrintWriter;import import import import import.Cookie;. Servlet;. ServletRequest;. ServletResponse;javax.servlet.ServletException;javax.servlet.javax.servlet.javax.servlet.javax.servlet.Servlet publicclassDemo:extendspublicvoiddoGet(ServletRequestreques
28、t,ServletResponseresponse)throwsServletException,IOExceptionresponse.SetCharacterEncoding(UTF-8);response.SetContentType(,texthtml;charset=UTF-8);PrintWriterOUt=response.getWriter();Stringuser=request.getParameter(user);Stringpassword=request.getParameter(pwd);if(user.equals(张三)&password.equals(1234
29、)Cookiecookie=newCookie(cook,cooku);cookie.SetMaxAge(300);cookie.setPath(request.getContextPath();response.addCookie(cookie);)publicvoiddoPost(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOExceptionthis.doGet(request,response);)packagecookie;import importimport import import
30、 import importjava.io.IOException;java.io.PrintWriter;javax.servlet.ServletException;.Cookie;. Servlet;. ServletRequest;. ServletResponse;publicclass Demo2 extendsServlet javax.servlet.javax.servlet.javax.servlet.javax.servlet.ServletResponsepublicvoiddoGet(ServletRequestrequest,response)throwsServl
31、etException,IOExceptionresponse.SetCharacterEncoding(,UTF-8u);response.SetContentType(texthtml;charset=UTF-8u);PrintWriterout=response.getWriter();Cookiecookies=request.getCookies();for(inti=0;cookies!=null&icookies.length;i+)if(cookies(i.getName().equals(,cook)out.print(cook已存在);)publicvoiddoPost(S
32、ervletRequestrequest,response)throwsServletException,IOExceptionServletResponsethis.doGet(request,response);8、请设计一种过滤器实现权限控制机制。如果用户进入Web应用没有登入时,要求用户必须进入登入页面。20分代码:packagefilter;importimportimportimportimportimportimportimportimportimportpublicjava.io.IOException;javax.servlet.Filter;javax.servlet.Fi
33、lterChain;javax.servlet.FilterConfig;javax.servlet.ServletException;javax.servlet.ServletRequest;javax.servlet.ServletResponse;javax.servlet.javax.servlet.javax.servlet.classloginfilterServletRequest;ServletResponse;Session;implementsFilterpublicvoiddestroy()/TODOAuto-generatedmethodstub)publicvoidd
34、oFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletExceptionServletRequesthreq=(ServletRequest)request;Sessionsession=hreq.getSession();Booleanislogin=(Boolean)session.getAttribute(,islogin);if(islogin!=null&islogin=true)chain.doFilter(request,response)/将
35、请求交给客户端真正请求的资源elseServletResponsehrs=(ServletResponse)response;(ServletRequest)hrs).getRequestDispatcher(hreq.getContextPath()+sessionlogin.htm).forward(ServletRequest)hrs,(ServletResponse)response);)publicvoidinit(FilterConfigarg)throwsServletException实验报告(三)院系:信息学院课程名称:Web数据库技术日期:班级信A1321姓名邹文强专业信息
36、管理与信息系统学号16实验室实验楼607实验名称JSP及EL技术成绩评定教师签名实验目的掌握JSP与SerVIet的区别与联系、掌握JSP的常用内置对象的使用、掌握EL表达式的使用实验内容JSP与SerlVet的区别与联系、JSP的常用内置对象、EL表达式1、请在网页中传入参数COUnt,当COUm=O时显示“对不起,没有符合您要求的记录。”否则显示“符合您要求的记录共有*条pageContext(count,2)答案:核心代码:对不起,没有符合您要求的记录。符合您要求的记录共有$count条.2、已有类publicclassBookprivateStringid;privateStringn
37、ame;privateStringauthor;privatedoubleprice;publicBook()super();)publicBook(Stringid,Stringname,Stringauthor,doubleprice,Stringdescription)super();this.id=id;this.name=name;this.author=author;this.price=price;this.description=description:)/set/get方法省略)publicclassDBprivatestaticMapmap=newLinkedHashMap
38、O;staticmap.put(1,newBook(,javaweb开发,丁老张”,38,一本好书”);map.put(,2,newBook(2,jdbc开发,“老黎”8,“一本好书”);map.put(,3,newBook(,3,ajax开发”,“老佟”,328,“一本好书”);map.put(4,newBook(4,jbpm开发”,老毕*58,“一本好书”);map.put(,5,newBook(5,struts开发”,“老方”,28,“一本好书”);map.put(6,newBook(6,spring开发”,老方”,98一本好书”);)publicstaticM叩getAll()retu
39、rnmap;请在网页中以表格形式显示所有图书的相关信息。代码:%Collectionusers=newArrayListO;for(inti=0;i表格形式显示所有图书的相关信息idnameauthorpricedescription$user.id)5user.name$sta.author$sta.price$sta.description实验报告(四)院系:信息学院课程名称:Web数据库技术日期:班级信A1321姓名邹文强专业信息管理与信息系统学号16实验室实验楼607实验名称MVC模式应用成绩评定教师签名实验目的1、掌握MVC模式的设计理念2、掌握各层的设计方法实验内容学生信息管理系统请根据工程模板,应用MVC模式,采用jdbc+jsp+servlet实现学生信息管理管理系统。要求通过“”输入学生的学号与姓名,交给“studentLogin”SerVlet在数据库验证后,把该生的班级信息发给“dispStudents”这个SerVleI去抽取该班的所有学生,然后再交给去显示抽取出来的该班的所有学生。!-学号:inputtype=textuname=stuldPIaCehQlder=靖学号姓名:(inputtyp