第五讲Request和Response-Session对象授课课时:4课时(180分钟)授课班级:软件101主讲教师:刘志成主要内容•本讲目标•新课引入与项目展示•案例1–out对象和request对象的用法•案例2–response对象的用法•案例3–session对象的用法•课堂实践•巩固与提高本讲目标知识目标掌握JSP中out对象的使用方法掌握JSP中request对象的使用方法(重点)掌握JSP中Response对象的使用方法(重点)掌握JSP中Session对象的使用方法(重点、难点)技能目标能使用out对象向客户端输出内容能使用request对象处理表单信息等能使用Response对象响应各种信息能使用session对象实现多个程序或用户之间共享数据素质目标严谨认真的工作态度语言表达和与人沟通能力团队合作精神项目展示项目展示处理程序处理程序点击发出请求Request处理后响应请求Response页面间传递信息Session任务1-应用out对象out对象被封装成javax.servlet.JspWriter接口,用来向客户端输出内容。out是专门为向客户端发送输出而设计的,out对象的作用域是page。htmlheadtitleout对象应用实例/title/headbody%out.println(out对象应用实例:brhr);out.println(br输出布尔型数据:);out.println(true);out.println(br输出字符型数据:);out.println('l');out.println(br输出字符数组数据:);out.println(newchar[]{'l','z','c'});out.println(br输出双精度数据:);out.println(5.66d);out.println(br输出单精度数据:);out.println(36.8f);out.println(br输出整型数据:);out.println(8);out.println(br输出长整型数据:);out.println(123456789123456L);out.println(br输出对象:);out.println(newjava.util.Date());out.println(br输出字符串:);out.println(liuzc@hnrpc);out.println(br输出新行:);out.newLine();out.println(br缓冲区大小:);out.println(out.getBufferSize());out.println(br缓冲区剩余大小:);out.println(out.getRemaining());out.println(br是否自动刷新:);out.println(out.isAutoFlush());out.flush();out.println(br调用out.flush());out.close();out.println(5.66d);%/body/html任务1-应用out对象代码分析:第7行—第20行:输出各种类型的数据;第21行—第22行:输出日期对象;第23行—第24行:输出字符串数据;第25行—第26行:输出新行;第27行—第30行:输出当前缓冲区大小及剩余的缓冲区大小;第31行—第32行:判断是否自动刷新。在浏览器中输入,outdemo.jsp文件的运行界面如图所示。任务1-应用out对象任务2-应用Reqest对象request对象是和请求相关的HttpServletRequest类的一个对象,该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以查看请求参数的配置情况(调用getParameter来实现)、请求的类型(如Get、Post、Head等)和已经请求的HTTP头(如cookie、Referer等)。request对象获取该表单提交的信息文件名:input.htmlhtmlbodybgcolor=whitefontsize=1formaction=requestdemo1.jspmethod=postname=forminputtype=textname=boyinputtype=submitvalue=Entername=submit/form/font/body/html文件名:requestdemo1.jsp:%@pagecontentType=text/html;charset=GB2312%htmlbodybgcolor=whitefontsize=4p获取文本框提交的信息:%StringstrContent=request.getParameter(boy);%%=strContent%p获取按钮的名字:%StringstrButtonName=request.getParameter(submit);%%=strButtonName%/font/body/htmlrequest对象获取该表单提交的信息request对象空值处理%@pagecontentType=text/html;charset=GB2312%htmlbodybgcolor=cyanfontsize=5formaction=method=postname=forminputtype=textname=numinputtype=submitvalue=entername=submit/form%StringstrContent=request.getParameter(num);doublenumber=0,r=0;if(strContent==null){strContent=;}try{number=Double.parseDouble(strContent);if(number=0){r=Math.sqrt(number);out.print(br+String.valueOf(number)+的平方根:);out.print(br+String.valueOf(r));}else{out.print(br+请输入一个正数);}}catch(NumberFormatExceptione){out.print(br+请输入数字字符);}%/font/body/html使用request对象获取信息要格外小心,要避免使用空对象,否则会出现NullPointerException异常,所以我们经常对空对象(null)进行处理,以增强程序的健壮性。文件名:requestdemo2.jsprequest对象汉字处理信息文件名:requestdemo3.jsp%@pagecontentType=text/html;charset=GB2312%htmlbodybgcolor=whitefontsize=4p获取文本框提交的信息:%StringstrContent=request.getParameter(boy);%%=strContent%p获取按钮的名字:%StringstrButtonName=request.getParameter(submit);bytec[]=strButtonName.getBytes(ISO-8859-1);strButtonName=newString(c);%%=strButtonName%/font/body/html学生模仿-1设计一个简单的“JSP程序设计网上测试系统”,如下图所示。要求提交后能够对特定的测试者的操作进行评判,如图所示。学生模仿-1%@pagecontentType=text/html;charset=GB2312%htmlbodyfontsize=3%intn=0;StringstrName=request.getParameter(name);StringstrClass=request.getParameter(class);StringstrTemp=strClass+的+strName;Strings1=request.getParameter(t1);Strings2=request.getParameter(t2);if(s1==null){s1=;}if(s2==null){s2=;}if(s1.equals(b)){n++;}if(s2.equals(a)){n++;}%%=strTemp%P您的得分为:%=n%分/font/body/html任务3-应用Response对象Response是和应答相关的HttpServletResponse类的一个对象,它封装了服务器对客户端的响应,然后被发送到客户端以响应客户请求。Response对象产生的对客户的请求做出动态的响应,并向客户端发送数据。HttpServletResponse对象具有页面作用域。应用Response对象设置响应头属性%@pagecontentType=text/html;charset=GB2312%htmlheadtitleresponse对象的setContentType方法演示/title/headbodybgcolor=cyanfontsize=2P将当前页面保存为Word文档吗?FORMaction=method=getname=formINPUTTYPE=submitvalue=yesname=submit/FORM%Stringstr=request.getParameter(submit);if(str==null){str=;}if(str.equals(yes)){response.setContentType(application/msword;charset=GB2312);}%/font/body/html应用Response对象刷新页面%@pagecontentType=text/html;charset=gb2312language=javaimport=java.util.*%htmlheadtitleresponse页面刷新/title/headbody%response.setHeader(refresh,2);out.println(newDate().toLocaleString());%/body/html学生模仿-2编写一个“友情链接”程序,在选择指定链接,实现单击【go】按钮后,就会打开指定的网站(在Internet连通情况下),如图所示。response.sendRedirect();任务4-应用Session对象Session对象是和请求相关的HttpSession对象,它封装了属于客户会话的所有信息。Session在第一个JSP页面被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要session对象。Session对象的Id是指当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个字符类型的Id号,JSP引擎同时将这个Id号发送到客户端,存放在cookie中