JSP实用教程(第三版)配合《JSP实用教程(第三版)》例子源代码一起使用PowerPoint制作张跃平耿祥义第3章JSP内置对象2019/11/112本章主要内容3.1request对象3.2response对象3.3session对象3.4application对象3.5out对象2019/11/113概述有些对象不用声明就可以在JSP页面的Java程序片和表达式部分使用,这就是JSP的内置对象。JSP的常用内置对象有resquest、response、session、application和out。response和request对象是JSP内置对象中较重要的两个,这两个对象提供了对服务器和浏览器通信方法的控制。HTTP协议被称作“请求和响应”协议。浏览器请求有某种结构,HTTP请求包括一个请求行、头域和可能的信息体。最普通的请求类型是对页面的一个简单请求,如:GET/hello.htmHTTP/1.1Host:这是对网站:请求的例子。首行是请求行,规定了请求的方法、请求的资源及使用的HTTP协议的版本。2019/11/1143.1request对象HTTP通信协议是用户与服务器之间一种提交(请求)信息与响应信息(request/response)的通信协议。在JSP中,内置对象request封装了用户提交的信息,那么该对象调用相应的方法可以获取封装的信息,即使用该对象可以获取用户提交的信息。2019/11/1153.1.1获取用户提交的信息用户通常使用HTML表单向服务器的某个JSP页面提交信息,表单的一般格式是:formaction=“JSP页面”method=get|post提交手段/formJSP页面可以让request对象使用getParameter(Strings)方法获取表单提交的信息.2019/11/116例子3_1例子1中,example3_1.jsp通过表单向example3_1_computer.jsp提交三角形三边的长度,example3_1_computer.jsp负责计算并显示三角形的面积。example3_1.jsp和example3_1_computer.jsp的效果如图3.1(a),3.1(b)所示。2019/11/117例子3_2例子2中,example3_2.jsp通过表单向自己提交一串用#号分隔的数字,然后计算这些数字的算术和。如果表单中的action请求的页面是当前页面,可以用双引号:代替当前页面,注意双引号中不能含有空格。example3_2.jsp效果如图3.2所示.2019/11/1183.1.2处理汉字信息1.对信息重新编码request将获取的信息重新编码,即用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化为字符串。如下列所示:Stringstr=request.getParameter(message);byteb[]=str.getBytes(ISO-8859-1);str=newString(b);2.request设置编码request在获取信息之前使用setCharacterEncoding方法设置自己的编码为gb2312:request.setCharacterEncoding(gb2312);使用两种方式避免request对象获取的信息出现乱码。2019/11/119例子3_3例子3使用上述的第2种方式避免乱码问题。例子3中,example3_3.jsp通过表单向自己提交一份通信费账单,然后计算出消费总额。example3_3.jsp效果如图3.3所示.2019/11/11103.1.3常用方法举例内置对象request常用方法如下:getProtocol()获取用户向服务器提交信息所使用的通信协议,比如http/1.1等。getServletPath()获取用户请求的JSP页面文件的目录。getContextPath()获取用户请求的当前Web服务目录。getRemoteAddr()获取用户的IP地址。getRemoteHost()获取用户机的名称(如果获取不到,就获取IP地址)。getServerName()获取服务器的名称。getServerPort()获取服务器的端口号。2019/11/1111例子3_4例子4使用了request的一些常用方法。example3_4.jsp的效果如图3.4所示。2019/11/11123.1.4处理HTML标记1.form标记1.form标记formaction=提交信息的目的地页面method=get|postname=表单的名字数据提交手段部分/form其中form……/form是表单标记,其中的method属性取值get或post。get方法和post方法的主要区别是:使用get方法提交的信息会在提交的过程中显示在浏览器的地址栏中,而用post方法提交的信息不会显示在地址栏中。提交手段包括:文本框、列表、文本区等,例如:formaction=tom.jspmethod=postinputtype=textname=boyvalue=okinputtype=submitvalue=送出name=submit/form2019/11/11132.input标记2.input标记inputtype=输入对象的GUI类型name=名字GUI类型(1)文本框textinputtype=textname=mevalue=himaxlength=30(2)单选框radioinputtype=radioname=radvalue=redalgin=topchecked=java(3)复选框checkboxInputtype=checkboxname=chvalue=pinkalgin=topchecked=java(4)口令框passwordinputtype=passwordtname=mesize=12maxlength=30(5)隐藏hiddeninputtype=hiddenname=hvalue=123request对象调用getParemeter方法,通过name的名字来获取由value指定的值。(6)提交键submit(7)重置键:resetinputtype=reset2019/11/1114例子3_5例子5中JSP页面example3_5.jsp用表单向example3_5_receive.jsp页面提交数据.example3_5_receive.jsp页面使用request对象获得example3_5.jsp提交的数据。用户在example3_5.jsp页面单击表单的submit提交键提交信息,所提交的信息包括通过radio选择的是否打开背景音乐的信息、通过checkbox选择的球队信息、通过hidden隐藏的信息。调试例子5时,需要将名字是back.mp3的mp3文件存放到Web服务目录ch3的子目录sound中。example3_5.jsp和example3_5_receive.jsp的效果如图3.5(a)和3.5(b)。2019/11/11153.select、option标记下拉式列表和滚动列表通过select和option标记来定义,经常作为form的子标记为表单提供选择数据的GUI。select标记将option作为子标记,形成下拉列表或滚动列表。下拉列表的基本格式是:selectname=myNameoptionvalue=item1optionvalue=item2…/select在select中增加size属性的值就变成滚动列表,size的值是滚动列表的可见行的数目。滚动列表的基本格式是:selectname=myNamesize=正整数optionvalue=item1optionvalue=item2…/selectrequest对象通过name获取滚动列表中被选中的option的值(参数value指定的值)。2019/11/1116例子3_6例子6中,用户通过下拉列表为当前页面选择一首背景音乐、通过滚动列表为当前页面选择一幅图像。example3_6的效果如图3.6所示。2019/11/11174.textArea标记textArea是一个能输入或显示多行文本的文本区,在表单中使用textArea作为子标记可以提交多行文本给服务器。textArea的基本格式为:textAreaname=名字rows=文本可见行数cols=文本可见列数/textArea2019/11/11185.table标记表格以行列形式显示数据,不提供数据输入功能。经常将某些数据或GUI放置在表格的单元格中,让界面更加简练、美观。表格由table标记定义,一般格式是:tabletrwidth=该行的宽度thwidth=单元格的宽度单元格中的数据/th…tdwidth=单元格的宽度单元格中的数据/td…/tr…/table其中tr…/tr定义表格的一个行,th或td标记定义这一行中的表格单元。二者的区别是th定义的单元着重显示,td称为普通单元,不着重显示。一行中的着重单元和普通的单元可以交替出现,也可以全是着重单元或普通单元。table中增加选项border可指明该表格是否带有边框。2019/11/1119例子3_7在例子7中,用户通过example3_7.jsp提供的表单输入表格的行数和列数,然后example3_7.jsp按着用户输入的行数和列数创建相应的table。example3_7.jsp效果如图3.7所示。2019/11/11206.image标记使用image标记可以显示一幅图像,image标记的基本格式为:imagesrc=图像文件的URL描述文字/image如果图像文件和当前页面在同一Web服务目录中,图像的文件的地址就是该图像文件的名字;如果图像文件在当前Web服务目录的一个子目录中,比如image子目录中,那么“图像文件的URL”就是“image/图像文件的名字”image标记中可以使用width和height属性指定被显示的图像的宽为和高,如果省略width和height属性,image标记将按图像的原始宽度和高度来显示图像。2019/11/11217.embed标记使用embed标记可以播放音乐和视频,当浏览器执行该标记时,会把浏览器所在机器上的默认播放器嵌入到浏览器中,以便播放音乐或视频文件。embed标记的基本格式为:embedsrc=音乐或视频文件的URL描述文字/embed如果音乐或视频文件和当前页面在同一Web服务目录中,embed标记中src属性的值就是该文件的名字;如果视频文件在当前Web服务目录一个子目录中,比如avi子目录中,那么embed标记中src属性的值就是“avi/视频文件的名字”。embed标记中经常使用的属性及取值如下:autostart属性,取值true或false,autostart属性的值用来指定音乐或视频文件传送完毕后是否立刻播放。该属性的默认值是false,loop属性,取值为正整数指定音乐或视频文件重复播放的次数,取值为-1则无限循环播放。width和height属性,取值均为正整数,用width和height属性的值指定播放器的宽和高。如果省略width和height属性,将使用默认值。2019/11/1122例子3_8例子8中页面使用了image和embed标记。用户通过example3_8.jsp页面使用image标记显示一幅图像,用户使用下拉列表选择要播放视频,exam