JSP纸制教案(5)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第五章JSP内置对象5.1request对象当客户访问服务器页面时,会提交一个HTTP请求。reauest对象就是对HTTP请求包的封装。因此,使用request对象的方法,可以获取客户端和服务器端信息。如客户端主机名、IP地址、传递参数名、参数值、服务器主机名和IP地址等等。1.HTTP请求包一般说来,一个HTTP请求包括三个部分:一个请求行、多个请求头、信息体。请求行:规定了请求的方法(get、post、head、delete、put等)、请求的资源、使用的HTTP协议版本号。请求头:一个HTTP请求可以包括多个头。头主要说明请求客户的主机(IP)、信息体的附加信息。信息体:请求正文。如,表单数据被封装为信息体。下面是一个简单的HTTP请求包的组成:get/hello.htmHTTP/1.1:请求行Host::请求头Name邓小平(数据组件接受的信息):信息体(表单中的数据信息)2.request对象的常用方法getProtocol()客户向服务器提交使用的通讯协议。比如http/1.1等。getServletPath()获取客户请求的JSP页面文件的目录.getContentLength()获取客户提交的整个信息的长度.getMethod()获取客户提交信息的方式.比如post或get.getHeader(Strings)获取HTTP头文件中由参数S指定的头名字的值。getHeaderNames()获取头名字的一个枚举。getHeaders(Strings)获取头文件中指定头名字的全部值的一个枚举。getRemoteAddr()获取客户的IP地址。getRemoteHost()获取客户机的名称(如果获取不到,就获取IP地址)。getServerName()获取服务器的名称。getServerPort()获取服务器的端口号。getParameterNames()获取客户提交的信息体部分的name参数值的一个枚举。3.客户向服务器提交信息客户通常使用HTML表单向服务器的某个JSP页面提交信息。HTML表单的一般格式是:FORMmethod=get|postaction=”接受信的页面文件”[接受数据的组件(0~n个)]数据提交控件/FORM5.1.1获取客户提交的信息[例子5.1]从客户端获取信息,并在另一窗口输出这些信息问题分析:在一个页面创建表单,提供信息输入窗口,在另一页面,使用request对象获取表单信息。程序结构:ex5_1.jsp页面创建表单(信息输入窗口),用户提交信息后,页面定向到outInfo.jsp页面。页面交互关系如图5-1所示程序算法:ex5_1.jsp:创建一表单,包含一个文本控件和一个提交控件outInfo.jsp1.获取文本框和提交控件的值2.输出文本框和提交控件的值5.1.2获取用户提交数据1.获取表单提交的数据[例子5.2]网上单选问答题问题分析:由一个页面输出单选试题,由另一页面获取用户选择,统计考生得分。程序结构:ex5_2.jsp页面将用户选择的答案提交给answer.jsp页面。程序算法:ex5_2.jsp:创建一表单,包含两组单选按钮。answer.jsp1.获取用户提交的答案,if(s1==null){s1=;}2.与正确答案比较,统计得分3.输出考试结果关键代码:request.getParamter(“表单组件名称”);2.获取地址栏变量值request.getParameter(“变量名称”);通常以链接或表单提交时附加变量。第一个变量前要使用“?”,以后的变量之间要使用“&“。=123&age=23&name=张三5.1.3用户注册[例子5.3]使用散列表,保存注册的用户名,实现用户注册问题分析:由一个页面创建一个接受用户名输入的窗口;另一页面获取用户名,实现用户注册。程序结构:本程序由两个JSP页面文件构成。ex5_3.jsp页面将用户名提交给login.jsp页面,login.jsp实现用户注册。两页面的交互关系如图5-3所示。程序算法:ex5_3.jsp:创建一表单,包含一个文本框,客户在此文本框中输入用户名。login.jsp:1.创建一空的散列对象(hashtable)2.定义一方法putName(Strings),该方法以s为属性名和属性值,插入到散列对象(hashtable)中。3.从表单中获取用户名,若散列对象中没有注册过此用户名,则将(name,name)插入到散列对象中(表示实现了用户注册),否则,提示用户换个名字注册。关键代码:%!Hashtablehashtable=newHashtable();publicsynchronizedvoidputName(Strings){hashtable.put(s,s);}%%Stringname=request.getParameter(name);if(name==null)name=;byteb[]=name.getBytes(ISO-8859-1);name=newString(b);if(!(hashtable.containsKey(name))){putName(name);out.print(br+你已注册成功);out.print(br+你注册的名字是+name);}elseout.print(br+该名字已存在,请换个名字);%5.1.4获取客户环境信息[例子5.4]获取客户和服务器有关信息程序结构:本程序由两个页面构成,ex5_4.jsp页面提交客户信息给getInfo.jsp页面。两页面的交互关系如图5-4所示。程序算法:ex5_4.jsp创建一表单,包含一文本框。getInfo.jsp1.输出环境信息2.输出表单信息5.2response对象客户访问服务器使用的是HTTP请求包,系统将HTTP请求包封装为request对象。服务器响应客户时,即向客户发送信息时,使用的是HTTP响应包,系统将HTTP响应包封装为response对象。在JSP页面中,可以使用response对象的方法动态控制响应方式,向客户端发送数据。HTTP响应包与HTTP请求包结构类似。1.HTTP响应包一般说来,一个HTTP响应包由三个部分组成:一个状态行、多个响应头、信息体。状态行:描述服务器处理HTTP请求的成功与否。比如,是否收到请求包、请求被拒绝、请求超时、服务器发生错误等等。响应头:HTTP响应包发送的目标地址(IP)信息体:发送到服务器端的正文。如,在客户端显示的信息。2.response对象常用的方法addHeader(Stringhead,Stringvalue)向包里添加一个头(head)及对应值(value)sendRedirect(URLurl)实现客户重定向setStatus(intn)设置响应的状态代码。3.响应包的状态行服务器响应客户时,它发送到客户端的首行被称为状态行。状态行由3位数的状态代码和描述状态代码的文字组成。下面是对状态代码的分类描述:1xx:1开头的3位数字,主要用于实验。2xx:2开头的3位数字,表明客户端的请求已成功。3xx:3开头的3位数字,表明处理客户的请求以前,应做一些别的处理。4xx:4开头的3位数字,表明浏览器请求是非法的或无效的。5xx:5开头的3位数字,表明服务器出现了问题。我们一般不需要修改状态行,在出现问题时,服务器会自动响应,发送相应的状态代码到客户端。也可以使用setStatus(intn)方法来增加状态行的内容。4.状态代码表//见书(略)5.2.1不支持请求的HTTP版本[例子5.5]向客户端输出word类型的文件问题分析:本题实际上要求设置page指令contentType属性的值为:application/msword程序结构:程序代码:ex5_5.jsp程序算法:1.创建表单2.获取表单提交按钮的值3.若提交按钮的值是”保存”,则将page指令的contentType属性的值设为:application/msword;charset=GB2312,即改变文件输出类型为msword。关键代码:response.setContentType(application/msword;charset=GB2312);5.2.2控制网页的刷新频率[例子5.6]在页面中,实时显示当前时间问题分析:要实时显示当前时间,必须每秒钟刷新一次页面,这就要求向客户输出的响应包中,必须含有响应头”Refresh”,其值为1,单位是秒。程序结构:程序名:ex5_6.jsp程序算法:1.输出当前时间2.添加响应头”Refresh”,其值是1。关键代码:response.setHeader(Refresh,1;URL=test.jsp);5.3.3网页重定向[例子5.7]实现从一个网页到另一个网页的重定向程序结构:本程序由两个JSP页面文件构成。ex5_7.jsp页面向redirect.jsp页面提供姓名信息。两个页面的交互关系如图5-5所示。程序算法:ex5_7.jsp:创建一表单,包含用于输入姓名的文本框。redirect.jsp1.获取表单的姓名信息2.对姓名进行编码3.如果姓名为空字符串,则重新定向到ex5_7.jsp页面,否则输出相应的信息。关键代码:%Stringstr=null;str=request.getParameter(boy);if(str==null)str=;byteb[]=str.getBytes(ISO-8859-1);str=newString(b);if(str.equals())response.sendRedirect(ex5_7.jsp);else{out.print(str+:);out.println(欢迎您来到本网页!);}%5.2.4显示通讯状态[例子5.8]设置响应的状态行程序结构:本程序由三个JSP页面文件构成。页面ex5_8.jsp通过超级链接,分别链接到status1.jsp页面、staus2.jsp页面、staus3.jsp页面。5.3session对象客户与服务器的通讯是通过HTTP协议完成的。但是,HTTP协议是一种无状态协议。即,一个客户向服务器发送请求(request),然后服务器返回响应(response),连接就关闭了。服务器端不保留客户与服务器每一次连接的信息,因此,服务器无法判断上下两次连接是否是同一客户。要想记住客户的连接信息,必须使用会话对象(session)。session对象记录了每个客户与服务器的连接信息。1.会话从一个客户打开浏览器连接到服务器的某个服务目录(这其间,客户访问的是同一web目录中的网页),到客户关闭浏览器,这一过程称为一个会话。这时,在服务器端,系统为该客户创建了一个session对象。在客户端,系统为该客户创建了Cookie对象。一个客户对同一服务目录中不同网页的访问属于同一会话。2.客户的session对象与服务目录当一个客户首次访问服务目录中的一个JSP页面时,JSP引擎为该客户创建一个session对象。同一客户访问的服务目录不同,JSP引擎为该客户创建不同的session对象。从时间上看,若客户离开先前的服务目录,连接到其它服务器或者服务目录,当再次回到先前服务目录时,JSP引擎不再给客户分配新的session对象,而是使用先前的session对象。只有当客户关闭浏览器或这个session对象达到了最大生存时间,该客户的session对象才被取消,这时服务器与客户的会话关系消失。3.Session对象与Cookie当JSP引擎为客户创建一个session对象后,这个session对象被分配了一个String类型的ID号,JSP引擎同时将此ID号发送到客户端,存放在Cookie中.这样,代表同一客户会话的session对象和Cookie对象建立了一一对应关系.即,每一

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功