Web数据库学生实验报告JDBC部分版.docx
Web数据库技术教师实验指导手册及评分标准院系:信息科学与技术学院专业:信息管理与信息系统班级:信A1321/22任课教师:张海实验报告(二)院系:信息学院课程名称:Web数据库技术日期:班级信息A1321姓名邹文强专业信息管理与信息系统学号16实验室607实验名称Servlet应用成绩评定教师签名实验目的1、掌握SerVlet的配置方法2、掌握Web服务器的配置过程3、掌握Servlet类的用法4、掌握SeSSiOn等对象的用法5、掌握请求转发功能的应用6、掌握SerIVetConfig上下文的用法实验内容SerVIet配置、SerVIet设计、会话管理、请求流转、上下文应用1、请建立一个SerVlet类用于显示当前的系统时间。写出它的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应/回窗Dpackageservlecl;-*importjava.io.IOException;|publicclassMFirstServletextendsHttpServlecpublicvoiddoGet(HttpServletRecjuestrequest,HrtpservletResponseresponse)throwsServletExceptionrIOExceptionrequest.SecCharaccerEncoding(tutf-8w);response.SecCharacterEncoding(utf-8");response.gerWrter().wHixe(系统当前时间:w÷newDare().();publicvoiddoPosc(HttpServletRequesrrequest,HtrpservletResponseresponse)throwsServletExceptionrIOExceptiondoGet(request,response);实验结果:文件(D娓或回至看Ql改藏天住)工具烈助(三)现在的时间:2015402710:27:29rl配置:<servlet-mapping><servlet-name>MyFirstServlet<servlet-nane><url-pattern>servletMyFirstServlet<url-pattern><servlec-mapping>2、领会多用户并发访问的机制,请建立一个ServletwServletUsersw类,在该类的成员代码如下:publicclassServeltUsersextendsServletprivateIntegerx=l;publicvoiddoGet(ServletRequestrequest,ServletResponseresponse)throwsServletExceptionzIOExceptionthis.doPost(request,response);publicvoiddoPost(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOExceptionresponse.SetContentType(,texthtml");response.SetCharacterEncoding(,utf-8n);PrintWriterout=response.getWriter();out.println(',<!DOCTYPEHTMLPUBLIC-W3CDTDHTML4.01TransitionalEN">");out.printin(n<HTML>");out.printin(,<HEAD><TITLE>AServlet<TITLE><HEAD>);out.println("<BODY>);OUt.printin("当前X的值是”+x);out.flush();synchronized(x)x+;Threadthread=Thread.CurrentThread();try(thread.sleep(1000*5);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();)OUt.printin("当前SerIVet实例阻塞5秒后,当前X的值是“+x);out.printin(,'<BODY>);out.printin(,'<HTML>);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文件查看收藏工具÷COQlocalhostOvQ中Io收藏厘手机收蕨夫丁谷默密网址大全Q好搜圄百度产九江学院»器扩展用银国用译,ft三O缁好帆IAServlet+当前X的值是2当前SerIVet实例阻塞5秒后,当前X的值是3原因:多线程并发问题,在第一次浏览器中当前X的值被赋值为1,经过运行锁定子句:synchronized(x)和i+子句后,而经过5秒睡眠后,在输出X的值会变成2;在第二次浏览器中由于是定义的是全局变量x=l,本来经过正常运行最终效果会和浏览器去1一样输出的最终值是3,但是中间有了锁定子句:SynChr<mized(x)这就使得输出的值发生了变化,当在运行浏览器1时,此时的浏览器二其实也在开始运行,它获得了浏览器一中的输出值x=2,而在开始运行输出浏览器二中的值时,因为浏览器一中已经使得变量X的值为2啦,所以浏览器二中的X初始化值也就变成了2,所以经过5秒睡眠后,输出的当前值变成了3。3、请设计一个SerVle3当连续三次访问该SerVIet是分别向客户输出:第1次:用户浏览器中显示:蓝色颜色的”联系访问中的第1次”第2次:用户浏览器中显示:红色颜色的“联系访问中的第2次”第3次:用户浏览器中显示:黑色颜色的“联系访问中的第3次”答:packageservlet2;importjava.io.IOException;importjava.io.PrintWriter;importetException;Servlet;ServletRequest;ServletResponse;importjavax.servlet.importjavax.servlet.importjavax.servlet.publicclassYanSeextendsServletprivateIntegerx=0;publicvoiddoGet(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOExceptionthis.doPost(request,response);)ptblicvoiddoPost(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOExceptionresponse.SetContentType(,texthtml);response.SetCharacterEncoding(,utf-8u);PrintWriterout=response.getWriter();out.printin(,<!DOCTYPEHTMLPUBLIC,-W3CDTDHTML4.01TransitionalEN',>);out.printin(',<HTML>);out.printin(<HEAD><TITLE>AServlet<TITLE><HEAD>n);out.printin(<BODY>m);out.flush();synchronized(x)x+;if(x=l)(out.printin(,<fontcolor=blue>,');)if(x=2)out.printin(',<fontcolor=red>,');if(x=3)out.printin(,<fontcolor=black>);)OUt.println("联系访问中的第”+x+“次”);out.printin(',<BODY>);out.printin(',<HTML>');out.flush();out.close();)4、请将提供的工程解压后添加到myeclipse工作区中,打开mysql将工程中的db目录下的”导入到InySql数据库中。在工程的ServiceDao包中有一个StudentServicesDao,请根据代码中注释的功能结合jdbc中da。模式的设计要求将publicstudentlogin(Stringstuld,Stringname)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-generatedmethodstubreturnnul1;补充完整。20分。5、现在在webroot下有index.jsp用来展现学生的登录,现在要求学生输入学号、姓名后交给login这个servlet去处理,login的功能要求如下:(1)判断用户输入的学号和姓名在学生基本表中是否存在,如果存在提前该学生信息,并将这个学生信息交给另外一个SerVIetrtdiSpStudent,去显示。(2)如果用户输入的学号和姓名在学生基本表中不存在,就直接给用户反馈”找不到输入姓名的学生”。DispStudent这个servlet的功能:显示请求转发过来的学生所有信息。代码:核心代码的设计:<B¾><formaction="login,method="Get">学号inputtype="text"name=,'stuld',PlacehOlder="Z学号"><br>姓名<inputtype="text"name="name"PIaCehOIder="清妙名”><br><inputtype=',submit"value=><form><0>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 publicclassIOginextendspublicvoiddoGet(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOExceptionrequest.SetCharacterEncoding(,UTF-8);response.SetContentType("text/html;charset=UTF-8");PrintWriterOUt=response.getWriter();StudentServicesDaostudao=newStudentServicesDao();Stringstuld=request.getParameter(stuld);Stringname=request.getParameter(name);1.ist<student>stu=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()+servletdispStudent).forward(request,response);elseresponse.getWriter().write("找不到输入姓名的学生");)publicvoiddoPost(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOExceptionthis.doPost(request,response);)packageServiceDao;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.Enumeration;importjava.util.List;importjavax.servlet.ServletException;Servlet;ServletRequest;ServletResponse;extends Servlet importjavax.servlet.importjavax.servlet.importjavax.servlet.importpojo.student;publicclassdispStudentpublicvoiddoGet(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOExceptionrequest.SetCharacterEncoding(,UTF-8);response.SetContentType(texthtml;charset=UTF-8);PrintWriterOUt=response.getWriter();1.ist<student>StU=(LiSt<student>)request.getAttribute("stu");Enumeration<String>enumeration=request.getParamete:TNameS();while(enumeration.hasMoreElements()Stringname=enumeration.nextElement();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,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.Servlet;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;publicclassColmtSerVletextendsServletpublicvoiddoGet(ServletRequestreq,ServletResponseresp)throwsServletException,IOException(ServletContextcontext=getServletContext();Integercount=null;synchronized(context)(count=(Integer)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(',<html><head>);out.printin页面访问统计/title)“);out.printin(',<head><body>);OUjPrintIn(“该页面已被访问了"+,<b>,'+count+<b>+“次”);out.printin(“<body><html>");out.close();ServletResponsepublicvoiddoPost(ServletRequestrequest,response)throwsServletException,IOExceptionthis.doGet(request,response);)结果:该页面已被访问了 1次7、CoOkie使用,当用户输入用户名是张三,密码是1234时,请在SerVIet中创建一个有效时间是300秒的cookie对象,并回传到用户浏览器,浏览器再访问另外一个servlet,查看该cookie是否存在。代码:packagecookie;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(ServletRequestrequest,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")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 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)throwsServletException,IOExceptionresponse.SetCharacterEncoding(,UTF-8u);response.SetContentType(texthtml;charset=UTF-8u);PrintWriterout=response.getWriter();Cookiecookies=request.getCookies();for(inti=0;cookies!=null&&i<cookies.length;i+)if(cookies(i.getName().equals(,cook)out.print("cook已存在");)publicvoiddoPost(ServletRequestrequest,response)throwsServletException,IOExceptionServletResponsethis.doGet(request,response);8、请设计一种过滤器实现权限控制机制。如果用户进入Web应用没有登入时,要求用户必须进入登入页面。20分代码:packagefilter;importimportimportimportimportimportimportimportimportimportpublicjava.io.IOException;javax.servlet.Filter;javax.servlet.FilterChain;javax.servlet.FilterConfig;javax.servlet.ServletException;javax.servlet.ServletRequest;javax.servlet.ServletResponse;javax.servlet.javax.servlet.javax.servlet.classloginfilterServletRequest;ServletResponse;Session;implementsFilterpublicvoiddestroy()/TODOAuto-generatedmethodstub)publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletExceptionServletRequesthreq=(ServletRequest)request;Sessionsession=hreq.getSession();Booleanislogin=(Boolean)session.getAttribute(,islogin);if(islogin!=null&&islogin=true)chain.doFilter(request,response)/将请求交给客户端真正请求的资源elseServletResponsehrs=(ServletResponse)response;(ServletRequest)hrs).getRequestDispatcher(hreq.getContextPath()+sessionlogin.htm).forward(ServletRequest)hrs,(ServletResponse)response);)publicvoidinit(FilterConfigarg)throwsServletException实验报告(三)院系:信息学院课程名称:Web数据库技术日期:班级信A1321姓名邹文强专业信息管理与信息系统学号16实验室实验楼607实验名称JSP及EL技术成绩评定教师签名实验目的掌握JSP与SerVIet的区别与联系、掌握JSP的常用内置对象的使用、掌握EL表达式的使用实验内容JSP与SerlVet的区别与联系、JSP的常用内置对象、EL表达式1、请在网页中传入参数COUnt,当COUm=O时显示“对不起,没有符合您要求的记录。”否则显示“符合您要求的记录共有*条<%tagiibprefix=,curi="rjava.sunjspjstlcore"%><%pagecontentType="text/html;charset=gb2312"%><c:setvalue="Sparam.count,var=countt>pageContext(count,2)答案:核心代码:<MI><c:setvalue=',?(param,countvar="count"><c:choose><c:whentest=',5count=0,>对不起,没有符合您要求的记录。<c:when><c:otherwise>符合您要求的记录共有$count条.<c:otherwise><c:choose>2、已有类publicclassBookprivateStringid;privateStringname;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=newLinkedHashMapO;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()returnmap;请在网页中以表格形式显示所有图书的相关信息。代码:<EB><%Collectionusers=newArrayListO;for(inti=0;i<5;i+)(UserBeanuser=newUserBean();UserName(user+i);user.setpassword(guest+i);users.add(user);)session.SetAttribute(users,users);%><divstyle=,text-align:center,>表格形式显示所有图书的相关信息<tableborder=,1"><tr><td>id<td><td>name<td><td>author<td><td>price<td><td>description<td><tr>< c:forEachvar="user"items=*?users,*VarStatus="sta"begin="1step=,2'l><tr>< td>$user.id)<td><td>5user.name<td>< td>$sta.author</tdxtd>$sta.price<td>< td>$sta.description<td><tr><c:forEach><table><div>实验报告(四)院系:信息学院课程名称:Web数据库技术日期:班级信A1321姓名邹文强专业信息管理与信息系统学号16实验室实验楼607实验名称MVC模式应用成绩评定教师签名实验目的1、掌握MVC模式的设计理念2、掌握各层的设计方法实验内容学生信息管理系统请根据工程模板,应用MVC模式,采用jdbc+jsp+servlet实现学生信息管理管理系统。要求通过“”输入学生的学号与姓名,交给“studentLogin”SerVlet在数据库验证后,把该生的班级信息发给“dispStudents”这个SerVleI去抽取该班的所有学生,然后再交给去显示抽取出来的该班的所有学生。<!DOCTYPEHTMLPUBLIC',-W3CDTDHTML4.01Transitional/EN><html><head><title><title><meta-equiv="keywords"content="keywordlfkeyword2fkeyword3,><meta-equiv="description"content="thisismypage"><meta-equiv="content-type"content=texthtml/charset=UTF-8"><!-<linkrel="stylesheet"type=,textcss,*href=./styles.cssn>-><head><body><formaction="login"method=,Get,>学号:inputtype="textuname="stuld"PIaCehQlder="靖学号"><br>姓名:(inputtyp