Presentation is loading. Please wait.

Presentation is loading. Please wait.

第4章第4章 第4章第4章 JSP 内置对象. 本课教学内容  认识 JSP 内置对象  out 对象  request 对象  response 对象  Cookie 操作  利用 session 开发购物车  session 其他 API  application 对象.

Similar presentations


Presentation on theme: "第4章第4章 第4章第4章 JSP 内置对象. 本课教学内容  认识 JSP 内置对象  out 对象  request 对象  response 对象  Cookie 操作  利用 session 开发购物车  session 其他 API  application 对象."— Presentation transcript:

1 第4章第4章 第4章第4章 JSP 内置对象

2 本课教学内容  认识 JSP 内置对象  out 对象  request 对象  response 对象  Cookie 操作  利用 session 开发购物车  session 其他 API  application 对象

3 认识 JSP 内置对象  内置对象:指在 JSP 页面中内置的不需要定义 就可以在网页中直接使用的对象  内置对象预定义的原因 : 因为这些内置对象有些能够存储参数,有些能够提 供输出,还有些能提供其他的功能, JSP 程序员 一般情况下使用这些内置对象的频率比较高

4 认识 JSP 内置对象  内置对象特点 内置对象是自动载入的,因此它不需要直接实例化 内置对象是通过 Web 容器来实现和管理的 在所有的 JSP 页面中,直接调用内置对象都是合 法的

5 认识 JSP 内置对象  JSP 规范中定义了九种内置对象,本章主要 介绍前五种 out 对象:负责管理对客户端的输出 request 对象:负责得到客户端的请求信息 response 对象:负责向客户端发出响应 session 对象:负责保存同一客户端一次会话过程 中的一些信息 application 对象:表示整个应用的环境的信息

6 认识 JSP 内置对象 exception 对象:表示页面上发生的异常,可以 通过它获得页面异常信息 page 对象:表示的是当前 JSP 页面本身,就像 Java 类定义中的 this 一样 pageContext 对象:表示的是此 JSP 的上下文 config 对象:表示此 JSP 的 ServletConfig

7 out 对象  out 对象,对应的类型是 javax.servlet.jsp.JspWriter  out 对象的作用 用来向客户端输出各种数据类型的内容 对应用服务器上的输出缓冲区进行管理

8 out 对象  out 输出的主要有 2 个方法: void print() void println()

9 out 对象  out 对象一些常用的与管理缓冲区有关的函数: void close() :关闭输出流,从而可以强制终止当 前页面的剩余部分向浏览器输出 void clearBuffer() :清除缓冲区里的数据,并且 把数据写到客户端去 void clear() :清除缓冲区里的数据,但不把数据 写到客户端去

10 out 对象  out 对象一些常用的与管理缓冲区有关的函数: int getRemaining() :获取缓冲区中没有被占用 的空间的大小 void flush() :输出缓冲区的数据。 out.flush() 函 数也会清除缓冲区中的数据,但是此函数先将之前 缓冲区的数据输出至客户端,然后再清除缓冲区的 数据 int getBufferSize() :获得缓冲区的大小

11 request 对象  request 对应类型是 javax.servlet.http.HttpServletRequest  request 包含的方法 String getMethod() :得到提交方式 String getRequestURI() :得到请求的 URL 地址 String getProtocol() :得到协议名称

12 request 对象  request 包含的方法 String getServletPath() :获得客户端请求服务器 文件的路径 String getQueryString() :得到 URL 的查询部分, 对 post 请求来说,该方法得不到任何信息

13 request 对象  request 包含的方法 String getServerName() :得到服务器的名称 String getServerPort() :得到服务器口号 String getRemoteAddr() :得到客户端的 IP 地址 * 具体代码示例见课本

14 request 对象  request 对象获取客户端得参数常用的是通过 2 个方法: String getParameter(String name) :获得客户 端传送给服务器的 name 参数的值。当传递给此 函数的参数名没有实际参数与之对应时,则返回 null String[] getParameterValues(String name) :以 字符串数组的形式返回指定参数所有值

15 response 对象  response 与 reuqest 是一对相对应的内置对象, response 可以理解为客户端的响应, request 可以理 解为客户端的请求,二者所表示范围是相对应的 2 个 部分,具有很好的对称性。 response 对应的类 ( 接口 ) 是: javax.servlet.http.HttpServletResponse 。可以通 过查找文档中 javax.servlet.http.HttpServletResponse 来了解 response 的 API

16 利用 response 对象进行重定向  重定向:就是跳转到另一个页面  重定向方法为: response.sendRedirect( 目标页面路径 );

17 两种重定向方法的不同  从浏览器的地址显示上来看 forward 方法属于服务器端去请求资源,服务器 直接访问目标地址,并对该目标地址的响应内容进 行读取,再把读取的内容发给浏览器,因此客户端 浏览器的地址不变

18 两种重定向方法的不同  从浏览器的地址显示上来看 redirect 是告诉客户端,使浏览器知道去请求哪 一个地址,相当于客户端重新请求一 遍。所以地 址显示栏会变

19 两种重定向方法的不同  从数据共享来看 forward 转发的页,以及转发到的目标页面能够 共享 request 里面的数据 redirect 转发的页以及转发到的目标页面不能共享 request 里面的数据

20 两种重定向方法的不同  从功能来看 redirect 能够重定向到当前应用程序的其他源, 而且还能够重定向到同一个站点上的其他应用程序 中的资源,甚至是使用绝对 URL 重定向到其他站 点的资源

21 两种重定向方法的不同  从功能来看 forward 方法只能在同一个 Web 应用程序内的资 源之间转发请求,可以理解为服务器内部的一种操 作

22 两种重定向方法的不同  从效率来看 forward 效率较高,因为跳转仅发生在服务器端 redirect 相对较低,因为类似于再进行了一次请求

23 使用频率不是很高的一种重定向  sendError() :向客户端发送 HTTP 状态码的 出错信息

24 使用频率不是很高的一种重定向  常见的错误代码有: 400 : Bad Request ,请求出现语法错误 401 : Unauthorized ,客户试图未经授权访问受 密码保护的页面 403 : Forbidden ,资源不可用 404 : Not Found ,无法找到指定位置的资源 500 : Internal Server Error ,服务器遇到了无法 预料的情况,不能完成客户的请求

25 利用 response 设置 HTTP 头  HTTP 头一般用来设置网页的基本属性  response 的 setHeader() 方法来进行设置 response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no- cache"); response.setDateHeader("Expires",0); 以上都是表示在客户端缓存中不保存页面的拷贝

26 Cookie 操作  Cookie 是一个小的文本数据,由服务器端生 成,发送给客户端浏览器,客户端浏览器如 果设置为启用 Cookie ,则会将这个小文本数 据保存到某个目录下的文本文件内。下次登 录同一网站,客户端浏览器则会自动将 Cookie 读入之后,传给服务器端。一般情下, Cookie 中的值是以 key-value 的形式进行表 达的

27 Cookie 操作  Cookie 操作主要用到以下几个方法: response.addCookie(Cookie c) :通过该方法, 将 Cookie 写入客户端 Cookie.setMaxAge(int second) :通过该方法, 设置 Cookie 的存活时间。参数表示存活

28 Cookie 操作  从客户端获取 Cookie 内容,主要通过以下方 法: Cookie[] request.getCookies() :读取客户端传 过来的 Cookie ,以数组形式返回

29 Cookie 的盗取  盗取的方法: 利用跨站脚本技术,将信息发给目标服务器;为了 隐藏 URL ,甚至可以结合 Ajax( 异步 Javascript 和 XML 技术 ) 在后台窃取 Cookie

30 Cookie 的盗取 通过某些软件,窃取硬盘下的 Cookie 。一般说来, 当用户访问完某站点后, Cookie 文件会存在机器 的某个文件夹下,因此可以通过某些盗取和分析软 件来盗取 Cookie

31 Cookie 的盗取 利用客户端脚本盗取 Cookie 。在 Javascript 中 有很多 API 可以读取客户端 Cookie ,可以将这些 代码隐藏在一个程序 ( 如画图片 ) 中,很隐秘地得到 Cookie 的值

32 Cookie  Cookie 在 Web 编程中应用很广的原因: Cookie 的值能够持久化,即使客户端机器关闭, 下次打开还是可以得到里面的值 Cookie 可以帮助服务器端保存多个状态信息,但 是不用服务器端专门分配存储资源 Cookie 可以持久保持一些和客户相关的信息

33 解决 Cookie 安全的方法  方法有以下几种 替代 Cookie 。将数据保存在服务器端,可选的是 session 方案 及时删除 Cookie

34 解决 Cookie 安全的方法 要删除一个已经存在的 Cookie ,有以下几种方法:  给一个 Cookie 赋以空置  设置 Cookie 的失效时间为当前时间,让该 Cookie 在当 前页面的浏览完之后就被删除了  通过浏览器删除 Cookie 。如在 IE 中,可以选择 " 工具 "— —"Internet 选项 "—— " 常规 " ,在里面点击 " 删除 Cookies" ,就可以删除文件夹中的 Cookie

35 解决 Cookie 安全的方法 禁用 Cookie 。很多浏览器中都设置了禁用 Cookie 的方法,如 IE 中,可以在 " 工具 " ——"Internet 选项 "——" 隐私 " 中,将隐私级别设 置为禁用 Cookie

36 利用 session 开发购物车  购物车需求例子 想象用户去购物超市买东西时,都会推一个购物 车,购物车中包含了用户所需要购买的商品,用户 可以将商品添加到购物车,也可将商品从购物车中 取出或删除。用户可以推着购物车从这个专柜走到 那个专柜,用户也不用担心别人的购物车里面的东 西算到自己账上,这在生活中已经成为常识

37 利用 session 开发购物车  购物车的特点 同一个用户使用的是同一个购物车 不同的用户使用的是不同的购物车。否则,别人 买的东西就会算到自己的账上 在不同货架 ( 页面 ) 之间进行访问时,购物车中的内 容可以保持

38 如何用 session 开发购物车  一些 session 常用的 API 将内容放入购物车  void session.setAttribute(String name,Object obj); * 针对放入的提醒:  如果两次调用 setAttribute(String name,Object obj); 并 且 name 相同,那么后面放进去的内容将会覆盖以前放 进去的内容  setAttribute(String name,Object obj); 的第二个参数是 Object 类型,即可以放入 session 的不仅仅是一些简单字 符串,还可以是 Object

39 如何用 session 开发购物车  一些 session 常用的 API 读取购物车中的内容  Object session.getAttribute(String name); * 具体代码示例见课本

40 session 其他 API -session 的其他操作  移除 session 中的内容 session 有一个函数: void session.removeAttribute(String name);  移除 session 中的全部内容 void session.invalidate();  预防 session 内容丢失

41 sessionId  sessionId 的原理图

42 sessionId  问题: 客户在访问多个页面时,多个页面用到 session , 服务器如何知道该客户的多个页面使用的是同一个 session ?  答案 对于每一个 session ,服务器端都有一个 sessionId 来标识它 String session.getId();

43 利用 session 保存登录信息  例子 假如用户登录学生管理系统,登录后用户可能要 做很多操作,访问很多页面,在访问这些页面的过 程中,各个页面如何知道用户的账号呢? 答案很简单,在登录成功后,用户的账号可以 保存在 session 中。后面的各个页面都可以访问 session 内的内容

44 application 对象  application 原理图

45 application 对象  问题:购物车能用 application 实现吗? 很明显,购物车是不能用 application 实现的。因 为不同客户在服务器端访问的是同一个对象,如果 使用 application 实现购物车,客户 1 向购物车中 放了一种物品,客户 2 也可以看到,那样是不允 许的

46 application 对象  原理 对于一个 Web 容器而言,所有的用户都共同使用 一个 application 对象,服务器启动后,就会自动 创建 application 对象,这个对象会一直保存,直 到服务器关闭为止 对应的类 ( 接口 ) 是: javax.servlet.ServletContext

47 application 对象  application 对象的 API 主要有以下几个: 将内容放入 application  void application.setAttribute(String name,Object obj); 读取 application 中的内容  Object application.getAttribute(String name); 将内容从 application 中移除  void application.removeAttribute(String name);

48 本章结束  本章总结 JSP 中的内置对象 Cookie 的使用方法 JSP 中内置对象 session 和 application 购物车的开发  上机习题


Download ppt "第4章第4章 第4章第4章 JSP 内置对象. 本课教学内容  认识 JSP 内置对象  out 对象  request 对象  response 对象  Cookie 操作  利用 session 开发购物车  session 其他 API  application 对象."

Similar presentations


Ads by Google