本科生实验报告(二)姓名:学院:专业:班级:实验课程名称:实验日期:2014年04月03日指导教师及职称:实验成绩:开课时间:2014-2015学年第二学期甘肃政法学院实验管理中心印制实验题目JSP内置对象小组合作否姓名班级学号一、实验目的1.熟练掌握怎样在JSP页面中使用request内置对象;2.熟练掌握怎样在JSP页面中使用response对象动态响应用户的请求;3.熟练掌握怎样在JSP页面中使用session对象存储和用户有关的数据;4.进一步熟悉其他JSP内置对象的用法;二.实验环境jdk1.6+tomcat6.0+MyEclipse8三、实验内容与步骤1.编写一个JSP页面inputNumber.jsp该页面提供一个表单,用户可以通过表单输入两个数和四则运算符提交给该页面。用户提交表单后,JSP页面将计算任务交给一个Tag文件Computer.tag去完成。inputNumber.jsp的具体要求:inputNumber.jsp页面提供一个表单,要求表单中提供两个text输入框,供用户输入数字;提供一个人select下拉列表,该下拉列表有加、减、乘、除四个选项。供用户选择运算符号。用户在表单中输入的数字、选择运算符号提交给inputNumber.jsp页面。inputNumber.jsp使用Tag标记调用Tag文件Computer.tag,并将表单提交的数字和运算符传递给Computer.tag。Computer.tag的具体要求:要求Computer.tag使用attribute指令得到JSP页面传递过来的值,使用variable指令将计算结果,并将计算结果返回JSP页面。具体步骤:(1)打开MyEclipse8新建一个webproject命名为pro3,在pro3下面的WebRoot新建一个JSP文件,命名为inputNumber.jsp,然后输入程序代码,实验截图如下:代码:%@pagecontentType=text/html;charset=GB2312%%@taglibtagdir=/WEB-INF/tagsprefix=computer%HTMLBODYbgcolor=yellowFontsize=5FORMaction=method=postname=form输入运算数、选择运算符号:brInputtype=textname=numberOnesize=6Selectname=operatorOptionvalue=++Optionvalue=--Optionvalue=**Optionvalue=///SelectInputtype=textname=numberTwosize=6BRINPUTTYPE=submitvalue=提交你的选择name=submit/FORM%Stringa=request.getParameter(numberOne);Stringb=request.getParameter(numberTwo);Stringoperator=request.getParameter(operator);if(a==null||b==null){a=;b=;}if(a.length()0&&b.length()0){%computer:ComputernumberA=%=a%numberB=%=b%operator=%=operator%/计算结果:%=a%%=operator%%=b%=%=result%%}%/Font/BODY/HTML分析:在如上图所示的代码里,tablib是标签文件,而tagdir是便签文件所在的路径,也就是便签文件应该创建中WEB-INF下的tags下(即在接下来的一步创建)而prefix是标签前缀;上图所示答代码则是用taglib里的前缀引入标签文件;上图中的method属性有get和post两个值,当使用get是会暴露在URL地址栏中,比较危险,而使用post时,不会暴露在URL地址栏中,比较安全;上图中的request.getParameter方法是为了获取客户端传给服务器端的参数值;(2)接着再在WebRoot下的WEB-INT下新建一个Folder文件,命名为tags,再在tags下新建一个Files文件,命名为Computer.tag文件,最后输入代码;%@tagpageEncoding=gb2312%%@attributename=numberArequired=true%%@attributename=numberBrequired=true%%@attributename=operatorrequired=true%%@variablename-given=resultscope=AT_END%%try{doublea=Double.parseDouble(numberA);doubleb=Double.parseDouble(numberB);doubler=0;if(operator.equals(+)){r=a+b;}elseif(operator.equals(-)){r=a-b;}elseif(operator.equals(*)){r=a*b;}elseif(operator.equals(/)){r=a/b;}jspContext.setAttribute(result,String.valueOf(r));}catch(Exceptione){jspContext.setAttribute(result,发生异常:+e);}%(3)接着进行部署和启动服务器的操作;(4)最后进行实验结果的测试,实验结果如下所示:错误地分析与解决:在这次实验过程中,出现了如下图所示的错误在这次实验中,在代码被输入后就出现了这一错误,但是在这一错误上我烦了两次错误,首先是result哪一行报错,但是检查却没有错误,然后我使用引号将result引起来(如上第一幅图),结果是实验的确没有错误了,但是却在进行测试的时候又发现了问题,就是无论你输入什么数值,在最后的结果中结果都是result(如上图第二幅图),由此我意识到引号也是错误的,最后经过老师和同学的帮助成功解决了问题,代码本身并没有问题,只是可能软件或什么的问题,最后我将那段代码复制,删除,再粘贴就好了(如上第三幅图所示),这次也能的出实验结果了(如上第四幅图所示);2.编写两个JSP页面input.jsp和result.jsp。input.jsp页面提交一个数字给result.jsp页面,result.jsp页面使用response对象作出动态响应。input.jsp的具体要求:input.jsp提供表单,用户在表单中输入一个数字,提交给result.jsp页面。result.jsp的具体要求:result.jsp页面首先使用request对象获得input.jsp页面提交的数字,然后根据数字的大小作出不同的响应。如果数字小于0,response对象的调用setContentType(Strings)方法将contentType属性的值设置为text/plain,同时输出数字的平方;如果数字大于等于0并且小于100,response对象的调用setContentType(Strings)方法将contentType属性的值设置为application/msword,同时输出数字的立方;如果数字大于等于100,response对象的调用setStatus(intn)方法将状态行的内容设置为404;如果用户在input.jsp页面输入了非数字,response对象调用sendRedirct(URLurl)方法将用户的重定向到input.jsp页面。(1)在pro3的WebRoot下新建一个jsp文件,命名为input.jsp,然后在其中输入代码,实验截图如下:%@pagecontentType=text/html;charset=GB2312%HTMLBODYbgcolor=yellowFontsize=2FORMaction=result.jspmethod=postname=form输入数字:Inputtype=textname=numbersize=6INPUTTYPE=submitvalue=提交name=submit/FORM/Font/BODY/HTML分析:在input.jsp中主要的就是如上图的代码,也就是在页面显示“输入数字”,然后一个文本框,最后在设置一个按钮;(2)接着再新建一个jsp文件,命名为result.jsp,实验截图如下:%@pagecontentType=text/html;charset=GB2312%HTMLBODYbgcolor=cyanFontsize=3%Stringstr=request.getParameter(number);try{doublenumber=Double.parseDouble(str);if(number0){response.setContentType(text/plain;charset=GB2312);out.println(number+的平方:+(number*number));}elseif(number=0&&number100){response.setContentType(application/msword;charset=GB2312);out.println(number+的立方:+(number*number*number));}else{response.setStatus(404);}}catch(Exceptione){response.sendRedirect(input.jsp);}%/FONT/BODY分析:在这段代码中,首先使用request.getParameter方法接收服务器端输入数字,然后再将数字转化为double型,再对数字进行判断,数字小于零,大于零且小于一百,或者其他各自作出不同的反应;(2)最后进行代码的调试,结果如下:(因为之前对pro3进行过部署,所以这里不需要再进行部署)3.编写四个JSP页面inputGuess.jsp、result.jsp、small.jsp、large.jsp和success.jsp实现猜数字游戏。具体要求如下:inputGuess.jsp的具体要求:用户请求inputGuess.jsp是,随机分配给用户一个1到100之间的数。该页面同时负责将这个数字存在用户session对象中。该页面提供表单,用户可以使用该表单输入自己的猜测,并提交给result.jsp页面。result.jsp的具体要求:result.jsp页面负责判断inputGuess.jsp提交的猜测是否和用户的session对象中存放的那个数字相同,如果相同就将用户重定向到success.jsp;如果不相同就将用户重定向到large.jsp或small.jsp。small.jsp和large.jsp的具体要求:smal.jsp和large.jsp页面提供表单,用户可以使用该表单继续输入自己的猜测,并提交给result.jsp页面。success.jsp的具体要求:success.jsp页面负责显示用户成功的消息,并负责输出用户session对象中的数据。(1)新建一个webproject文件,命名为pro3.3,在pro3。3下新建的webRoo下新建一个jsp文件,命名为inputGuess.jsp,并输入代码,实验截图如下:%@pagecontentType=text/html;charset=GB2312%HTMLBODYbgcolor=cyanFONTSize=2P随机分给了你一个1到100之间的数,请