Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 JSP 内置对象 返回. 2 3.1 request request 对象的类型是一个执行 javax.servlet.http.HttpServletRequest 界面的 类。当客户端请求一个 JSP 网页时,客户端的请求信息将被 JSP 引擎封装在 这个 request 对象中。那么该对象调用相应的方法可以获取用户提交的信息。

Similar presentations


Presentation on theme: "1 JSP 内置对象 返回. 2 3.1 request request 对象的类型是一个执行 javax.servlet.http.HttpServletRequest 界面的 类。当客户端请求一个 JSP 网页时,客户端的请求信息将被 JSP 引擎封装在 这个 request 对象中。那么该对象调用相应的方法可以获取用户提交的信息。"— Presentation transcript:

1 1 JSP 内置对象 返回

2 2 3.1 request request 对象的类型是一个执行 javax.servlet.http.HttpServletRequest 界面的 类。当客户端请求一个 JSP 网页时,客户端的请求信息将被 JSP 引擎封装在 这个 request 对象中。那么该对象调用相应的方法可以获取用户提交的信息。 下面我们介绍一下 request 对象中的常用方法。 getCookies() :返回客户端的 cookie 对象,结果是一个 cookie 数组。 getHeader(String name) :获得 http 协议定义的传送文件头信息,如: request.getHeader("User-agent") 返回客户端浏览器的版本号、类型等信息。 getAttribute(String name) :返回 name 指定的属性值,若不存在指定的属性, 就返回空值 (null) 。 getattributeNames() :返回 request 对象所有属性的名字,结果集是一个 Enumeration (枚举)类的实例。

3 3 getHeaderNames() :返回所有请求标头( request header )的名字, 结果集是一个 Enumeration (枚举)类的实例。 getHeaders(String name) :返回指定名字的请求标头( request header ) 的所有值,结果集是一个 Enumeration (枚举)类的实例。 getMethod() :获得客户端向服务器端传送数据的方法(如 GET 、 POST 和 PUT 等类型)。 getParameter(String name) :获得客户端传送给服务器端的参数值,该 参数由 name 指定。 get parameterNames() :获得客户端传送给服务器端的所有的参数名, 结果集是一个 Enumeration (枚举)类的实例。 getParameterValues(String name) :获得参数 name 所包含的值(一个或 多个)。 getQueryString() 获得由客户端以 GET 方式向服务器端传送的字符串。 getRequestURI() :获得发出请求字符串的客户端地址。 getServletPath() :获得客户端所请求的脚本文件的文件路径。 setAttribute(String strname , Java.lang.Object obj) :设定名字为 strname 的 request 参数值,该值由 Object 类型的 obj 指定。

4 4 getServerName() :获得服务器的名字。 getServerPort() :获得服务器的端口号。 getRemoteAddr() :获得客户端的 IP 地址。 getRemoteHost() :获得客户端电脑的名字,若失败,则返回客户端电 脑的 IP 地址。 getProtocol() :获取客户端向服务器端传送数据所使用的协议名称(如 http/1.1 ) 通常用户向 JSP 页面提交信息是借助于表单来实现的。表单中包含文本框、 列表、按钮等输入标记。当用户在表单中输入完信息后,按 Submit 按钮 这些信息将被提交。客户端可以使用 post 以及 get 两种方法实现提交。它 们的区别是 get 方法提交的信息会显示在 IE 浏览器的地址栏中,而 post 方 法不会显示。提交后的信息就被封装在 request 对象中。通常 request 对象 调用 getParameter() 方法获取用户提交的信息。下面我们给出利用 request 对象获取客户提交页面信息的例程,其源程序如下。

5 5 ex5-1.jsp 请输入您的尊姓大名: 该程序通过表单向 do51.jsp 提交信息。 do51.jsp 通过 request 对象获取用户提交 页面的信息。 do51.jsp 的源程序如下。

6 6 do51.jsp <% out.println(" 客户协议 : " + request.getProtocol()); out.println(" "); out.println(" 服务器名 : " + request.getServerName());out.println(" "); out.println(" 服务器端口号 : " + request.getServerPort()); out.println(" "); out.println(" 客户端 IP 地址: " + request.getRemoteAddr()); out.println(" "); out.println(" 客户机名 : " + request.getRemoteHost()); out.println(" "); out.println(" 客户提交信息长度 : " + request.getContentLength());out.println(" "); out.println(" 客户提交信息类型 : "+ request.getContentType());out.println(" "); out.println(" 客户提交信息方式 : " + request.getMethod()); out.println(" "); out.println("Path Info: " + request.getPathInfo());out.println(" "); out.println("Query String: " + request.getQueryString());out.println(" "); out.println(" 客户提交信息页面位置 : " + request.getServletPath()); out.println(" "); out.println("HTTP 头文件中 accept-encoding 的值 : " + request.getHeader("Accept-Encoding")); out.println(" "); out.println("HTTP 头文件中 User-Agent 的值 : " + request.getHeader("User-Agent")); out.println(" "); %> 您的名字是:

7 7 程序运行效果如下图所示 在文本框中输入名字 “ 孙悟空 ” 后,按 “ 我要提交 ” 按钮,效果 如下图所示

8 8 如果 do51.jsp 提交英文字符能正确显示,如果提交中文 时就会出现乱码。原因:浏览器默认使用 UTF-8 编码方 式来发送请求,而 UTF- 8 和 GB2312 编码方式表示字符 时不一样,这样就出现了不能识别字符。 解决办法 : 通过 request.seCharacterEncoding ("gb2312") 对 请求进行统一编码,就实现了中文的正常显示。

9 9 3.2 response response 对象的类型为 javax.servlet.http.HttpServletResponse 类。当用户向服务器端提 交了 HTTP 请求后,服务器将会根据用户的请求建立一个默认的 response 对象,然后传入 - jspService() 函数中,给客户端提供响应的信息。下面介绍 response 对象中所包含的方法。 setContentType(String s) :该方法可以改变 contentType 的属性值。当用户访问一个 contentType 属性值是 “ text/html ” 的 jsp 页面时, jsp 引擎将按照 ContentType 属性的值来响 应客户的请求信息。 Response 对象可以调用该方法来设置 contentType 的值,其中参数 s 可取 “ text/html ” 、 “ application/x-msexcel ” 和 “ application/msword ” 等。 sendRedirect(URL) :该方法将实现客户的重定向。即在处理客户请求的过程中,可能 会根据不同事件的将客户重新引导至另一个页面。其中参数 URL 的值为重定向页面所在的 相对路径。 addCookie(Cookie cookie) :该方法将实现添加 1 个 Cookie 对象。 Cookie 可以保存客户 端的用户信息。通过 request 对象调用 getcookies() 方法可获得这个 Cookie 。 addHeader(String name,String value) :该方法将实现添加 http 文件头。该 header 将会 传到客户端,若同名的 header 存在,原来的 header 会被覆盖。其中参数 name 指定 http 头 的名字,参数 value 指定 http 头的值。 containsHeader(String name) :该方法判断参数 name 所指名字的 HTTP 文件头是否存在, 如果存在返回 true ,否则为 false 。

10 10 sendError(int ernum) :该方法实现向客户端发送错误信息。其中参数 ernum 表示错误代码。 比如当 ernum 为 404 时,表示网页找不到错误。 setHeader(String name,String value) :该方法将根据 HTTP 文件头的名字来设定它的值。如果 HTTP 头原来有值,则它将会被新值覆盖。其中参数 name 表示 http 头的名字,参数 value 指定 http 头的值。 下面我们给出利用 response 对象实现自动刷新客户页面的例程,源程序如下 ex4-3.jsp 本例将给大家演示该页面每隔 1 秒钟的自动刷新过程 现在的时间是: <% response.setHeader("refresh","1"); out.println(new Date().toLocaleString()); %>

11 11 程序运行效果如下图所示

12 12 3.3 session Session 对象在第一个 jsp 页面被装载时自动创建,完成会话期管理。当用户第一次登陆网 站时,服务器端的 JSP 引擎将为该用户生成一个独一无二的 Session 对象。用以记录该用 户的个人信息,一旦该用户退出网站,那么属于他的 Session 对象将会注销。 Session 对 象可以绑定若干个人信息或者 Java 对象。如果不同 Session 对象内部定义了相同的变量名, 那么这些同名变量是不会相互干扰的。需要说明的是, session 对象中所保存和检索的信 息不能是基本数据类型,必须是 Java 语言中相应的 Object 对象。下面我们给大家介绍 session 对象中所包含的方法。 setAttribute(String key, Object obj) :该方法实现将参数 obj 所指定的对象添加到 session 对象中,并为添加的对象指定一个索引关键字。索引关键字的指由参数 key 确定。 getAttribute(String name) :该方法实现从 session 对象中提取由参数 name 指定的对象。 若该对象不存在,将返回 null 。 getattributeNames() : 该方法返回 session 对象中存储的第一个对象,结果集是一个 Enumeration 类的对象。我们可以使用 nextElements() 来遍历 session 中的全部对象。 getCreationTime() :该方法将返回创建 session 对象的时间,以毫秒为单位从 1970 年 1 月 1 日起计数。

13 13 getId() :每生成一个 session 对象,服务器都会给其分配一个独一无二的编号,该 方法将返回当前 session 对象的编号。 getLastAccessedTime() :该方法将实现返回当前 session 对象最后 1 次被操作的时 间,即 1970 年 1 月 1 日起至今的毫秒数。 getMaxInactiveInterval() :该方法将获得 session 对象的生存时间,单位为秒。 removeAttribute(String name) :该方法将实现从 session 中删除由参数 name 所指定 的对象。 isNew(): 该方法判断是否是一个新的用户。如果是返回 true ,否则为 false 。 为了说明 session 对象的具体应用,下面我们用三个页面模拟一个多页面的 Web 应用。用户 访问 ex5-4.jsp 时所输入的姓名在 do54.jsp 中被保存在 session 对象中,它对其后继的页面 newdo54.jsp 一样有效。它们的源程序如下。 ex5-4.jsp 请输入您的尊姓大名: ex5-4.jsp 的源程序

14 14 do54.jsp <% username=request.getParameter("user"); session.putValue("name",username); %> 很高兴认识 ! 请输入您最欣赏的歌星的名字: do54.jsp 的源程序

15 15 newdo54.jsp 的源程序 newdo54.jsp <% String name; singername=request.getParameter("singer"); name=(String)session.getValue("name"); %> 最欣赏的歌星是

16 16 运行效果如下图所示 输入姓名 “ 孙梨花 ” ,按 “ 提交 ” 按钮屏幕效果如下图所示 输入歌星名 “ 张学友 ” ,按 “ 提交 ” 按钮屏幕效 果如图所示

17 17 JSP 表单处理 返回

18 18 4.1 表单 下面我们给出表单实例 ex7-1.html ,介绍一些常用标记的应用技巧。 表单 用户注册 您的尊姓大名: 您的密码: 你最喜欢的运动: 足球 排球 您的性别: 男 女 请填写您的计算机配置:

19 19 CPU PIV 2700 Memory 256M DDR 您的计算机操作系统图标 您的家庭所在地: 福州 厦门 泉州 三明 程序运行效果如下图所示

20 20

21 21 4.2 表单在客户端确认的实例 以下程序将在客户端实现对表单的确认,防止用户输入的密码为空 。 表单 function formcheck(Fm) { var flag=true; if(isEmpty(Fm.pwd.value)) { alert(" 您没有输入密码,请重新输入! "); Fm.pwd.focus(); flag=false; } return flag; } 密码:

22 22 程序运行下效果如下图所示

23 23 4.3 从表单中提取参数 我们通过一个实例来讲述 JSP 是如何提取客户端表单中的数据。首先我们建立一个 HTML 表单如下所示: 用户注册网页 用户注册 您的尊姓大名: 您的密码: 您的性别: 男 女 您最喜欢的颜色: 红色 黄色 蓝色 白色 黑色

24 24 网页的效果如下图所示

25 25 下面编写服务器端的表单信息提取程序 formget.jsp ,其源代码如下 用户注册网页信息提取 <% String username=request.getParameter("user"); String pwdinfo=request.getParameter("pwd"); String sexinfo=request.getParameter("sex"); String colorinfo=request.getParameter("likecolor"); out.println(" "); out.println(" 您的姓名: "); out.println(username); out.println(" "); out.println(" 您的密码: "); out.println(pwdinfo); out.println(" "); if(sexinfo==null) out.println(" 很抱歉,您没有选择性别! "); else { out.println(" "); out.println(" 您的性别: "); out.println(sexinfo); out.println(" "); }

26 26 if(colorinfo==null) out.println(" 很抱歉,您没有选择您喜欢的颜色! "); else { out.println(" "); out.println(" 您喜欢的颜色: "); out.println(colorinfo); } %> 当我们输入完整的个人信息时,结果显示如图 A 所示,当我们输入信息不完 整时(例如没有输入喜欢的颜色或者没有选择性别),结果显示如图 B 所示

27 27 图A图A 图B图B


Download ppt "1 JSP 内置对象 返回. 2 3.1 request request 对象的类型是一个执行 javax.servlet.http.HttpServletRequest 界面的 类。当客户端请求一个 JSP 网页时,客户端的请求信息将被 JSP 引擎封装在 这个 request 对象中。那么该对象调用相应的方法可以获取用户提交的信息。"

Similar presentations


Ads by Google