第2章JSP页面与JSP标记(实验)第2章共有3个实验。要求将Tomcat服务器的端口号恢复为默认设置,即端口号为8080。要求在webapps目录下新建一个Web服务目录:practice2。除特别要求外,本章实验中涉及的JSP页面均保存在practice2中。实验1JSP页面的基本结构1.相关知识点一个JSP页面可由普通的HTML标记、JSP标记、成员变量和方法的声明、Java程序片以及Java表达式组成。JSP引擎把JSP页面中的HTML标记交给用户的浏览器执行显示;JSP引擎负责处理JSP标记、变量和方法声明;JSP引擎负责运行Java程序片、计算Java表达式,并将需要显示的结果发送给用户的浏览器。JSP页面中的成员变量是被所有用户共享的变量。Java程序片可以操作成员变量,任何一个用户对JSP页面成员变量操作的结果,都会影响到其他用户。如果多个用户访问一个JSP页面,那么该页面中的Java程序片就会被执行多次,分别运行在不同的线程中,即运行在不同的时间片内。运行在不同线程中的Java程序片的局部变量互不干扰,即一个用户改变Java程序片中的局部变量的值不会影响其他用户的Java程序片中的局部变量。2.实验目的本实验的目的是让学生掌握怎样在JSP页面中使用成员变量,怎样使用Java程序片、Java表达式。3.实验要求编写两个JSP页面,分别为inputName.jsp和people.jsp。(1)inputName.jsp的具体要求该页面有一个表单,用户通过该表单输入自己的姓名并提交给people.jsp页面。(2)people.jsp的具体要求该页面有名字为person、类型是StringBuffer以及名字是count、类型为int的成员变量。该页面有publicvoidjudge()方法。该方法负责创建person对象,当count的值是0时,judge()方法创建person对象。该页面有publicvoidaddPerson(Stringp)方法,该方法将参数p指定的字符串添加到成员变量person末尾,同时将count作自增运算。该页面在程序片中获取inputName.jsp页面提交的姓名,然后调用judge()创建person对象、调用addPerson方法将用户的姓名添加到成员变量person末尾。如果inputName.jsp页面没有提交姓名,或姓名含有的字符个数大于10,就使用jsp:forwardpage=要转向的页面/标记将用户转到inputName.jsp页面。通过Java表达式输出person和count的值。4.JSP页面效果示例inputName.jsp(效果如图2-1所示)图2-1输入姓名people.jsp(效果如图2-2所示)图2-2显示姓名和人数5.参考代码代码仅供参考,学生可按照实验要求,参考本代码编写代码。JSP页面参考代码inputName.jsp%@pagecontentType=text/html;charset=GB2312%HTMLBODYbgcolor=cyanFONTsize=3FORMaction=people.jspmethod=getname=form请输入姓名:INPUTtype=textname=nameBRINPUTTYPE=submitvalue=送出name=submit/FORM/BODY/HTMLpeople.jsp%@pagecontentType=text/html;charset=GB2312%HTMLBODYBGCOLOR=yellowFONTSize=3%!intcount;StringBufferperson;publicvoidjudge(){if(count==0)person=newStringBuffer();}publicvoidaddPerson(Stringp){if(count==0){person.append(p);}else{person.append(,+p);}count++;}%%Stringname=request.getParameter(name);bytebb[]=name.getBytes(iso-8859-1);name=newString(bb);if(name.length()==0||name.length()10){%jsp:forwardpage=inputName.jsp/%}judge();addPerson(name);%BR目前共有%=count%人浏览了该页面,他们的名字是:BR%=person%/FONT/BODY/HTML实验2JSP指令标记1.相关知识点page指令%@page属性1=属性1的值属性2=属性2的值…%用来定义整个JSP页面的一些属性和这些属性的值。比较常用的两个属性是contentType和import。page指令只能为contentType指定一个值,但可以为import属性指定多个值。include指令标记%@includefile=文件的URL%的作用是在JSP页面出现该指令的位置处,静态插入一个文件。被插入的文件必须是可访问和可使用的,如果该文件和当前JSP页面在同一Web服务目录中,那么“文件的URL”就是文件的名字;如果该文件在JSP页面所在的Web服务目录的一个子目录中,比如fileDir子目录中,那么“文件的URL”就是“fileDir/文件的名字”。include指令标记在编译阶段就处理所需要的文件,被处理的文件在逻辑和语法上依赖于当前JSP页面,其优点是页面的执行速度快。2.实验目的本实验的目的是让学生掌握怎样在JSP页面中使用page指令设置contentType的值;使用include指令在JSP页面中静态插入一个文件的内容。3.实验要求编写三个JSP页面:first.jsp、second.jsp和third.jsp。另外,要求用“记事本”编写一个TXT文件hello.txt。hello.txt的每行有若干个英文单词,单词之间用空格分隔,每行之间用“BR”分隔,如下所示:hello.txtpackageapplevoidbackpublicBRprivatethrowclasshellowelcome(1)first.jsp的具体要求first.jsp使用page指令设置contentType属性的值是text/plain,使用include指令静态插入hello.txt文件。(2)second.jsp的具体要求second.jsp使用page指令设置contentType属性的值是application/vnd.ms-powerpoint,使用include指令静态插入hello.txt文件。(3)third.jsp的具体要求third.jsp使用page指令设置contentType属性的值是application/msword,使用include指令静态插入hello.txt文件。4.JSP页面效果示例first.jsp(效果如图2-3所示)图2-3contentType的值是text/plainsecond.jsp(效果如图2-4所示)图2-4contentType的值是application/vnd.ms-powerpointthird.jsp(效果如图2-5所示)图2-5contentType的值是application/msword5.参考代码代码仅供参考,学生可按照实验要求,参考本代码编写代码。JSP页面参考代码first.jsp%@pagecontentType=text/plain%HTMLBODYFONTsize=4color=blule%@includefile=hello.txt%/FONT/BODY/HTMLsecond.jsp%@pagecontentType=application/vnd.ms-powerpoint%HTMLBODYFONTsize=2color=blule%@includefile=hello.txt%/FONT/BODY/HTMLthird.jsp%@pagecontentType=application/msword%HTMLBODYFONTsize=4color=blule%@includefile=hello.txt%/FONT/BODY/HTML实验3JSP动作标记1.相关知识点include动作标记jsp:includepage=文件的URL/是在JSP页面运行时才处理加载的文件,被加载的文件在逻辑和语法上独立于当前JSP页面。include动作标记可以使用param子标记向被加载的JSP文件传递信息。forward动作标记jsp:forwardpage=要转向的页面/的作用是:从该指令处停止当前页面的继续执行,而转向执行page属性指定的JSP页面。forward标记可以使用param动作标记作为子标记,以便向要转向的JSP页面传送信息。2.实验目的本实验的目的是让学生掌握怎样在JSP页面中使用include标记动态加载文件;使用forward实现页面的转向。3.实验要求编写四个JSP页面:one.jsp、two.jsp、three.jsp和error.jsp。one.jsp、two.jsp和three.jsp页面都含有一个导航条,以便让用户方便地单击超链接访问这三个页面,要求这三个页面通过使用include动作标记动态加载导航条文件head.txt。导航条文件head.txt的内容如下所示:head.txt%@pagecontentType=text/html;charset=GB2312%tablecellSpacing=1cellPadding=1width=60%align=centerborder=0trvalign=bottomtdAhref=one.jspfontsize=3one.jsp页面/font/A/tdtdAhref=two.jspfontsize=3two.jsp页面/font/A/tdtdAhref=three.jspfontsize=3three.jsp页面/font/A/td/tr/Font/table(1)one.jsp的具体要求要求one.jsp页面有一个表单,用户使用该表单可以输入一个1~100之间的整数,并提交给该页面;如果输入的整数在50~100之间(不包括50)就转向three.jsp,如果在1~50之间就转向two.jsp;如果输入不符合要求就转向error.jsp。要求forward标记在实现页面转向时,使用param子标记将整数传递到转向的two.jsp或three.jsp页面,将有关输入错误传递到转向的error.jsp页面。(2)two.jsp、three.jsp和error.jsp的具体要求要求two.jsp和three.jsp能输出one.jsp传递过来的值,并显示一幅图像,该图像的宽和高刚好是one.jsp页面传递过来的值。error.jsp页面能显示有关的错误信息和一幅图像。4.JSP页面效果示例one.jsp(效果如图2-6所示)图2-6使用include动作标记加载导航条two.jsp(效果如图2-7所示)图2-7得到param子标记传递来的值three.jsp(效果如图2-8所示)图2-8得到param子标记传递来的值error.jsp(效果如图2-9所示)图2-9显示错误信息5.参考代码代码仅供参考,学生可按照实验要求,参考本代码编写代码。JSP页面参考代码one.jsp%@pagecontentType=text/html;charse