Presentation is loading. Please wait.

Presentation is loading. Please wait.

Java Web 开发 授课人:张鸽. 第三讲 JSP 内置对象  JSP 有以下九种内置对象,包括:  ·request ,请求对象  ·response ,响应对象  ·pageContext ,页面上下文对象  ·session ,会话对象  ·application ,应用程序对象.

Similar presentations


Presentation on theme: "Java Web 开发 授课人:张鸽. 第三讲 JSP 内置对象  JSP 有以下九种内置对象,包括:  ·request ,请求对象  ·response ,响应对象  ·pageContext ,页面上下文对象  ·session ,会话对象  ·application ,应用程序对象."— Presentation transcript:

1 Java Web 开发 授课人:张鸽

2 第三讲 JSP 内置对象  JSP 有以下九种内置对象,包括:  ·request ,请求对象  ·response ,响应对象  ·pageContext ,页面上下文对象  ·session ,会话对象  ·application ,应用程序对象  ·out ,输出对象  ·config ,配置对象  ·page ,页面对象  ·exception ,例外对象

3 重点介绍  request ,请求对象  session ,会话对象  application ,应用程序对象

4 综述  有几种对象看起来和 ASP 的内置对象差 不多,功能也类似,这是因为这些内置 对象的构建基础是标准化的 HTTP 协议。 如果使用过 ASP ,那么对这几种 JSP 内 置对象的使用应该能迅速掌握。需要注 意的问题是对象名的写法,包括这些对 象方法的调用时也要书写正确,因为 Java 语言本身是大小写敏感的。

5 request 和 response  “request” 对象代表的是来自客户端的请求,例如我们在 FORM 表单中填写的信息等,是最常用的对象。关于它 的方法使用较多的是 getParameter 、 getParameterNames 和 getParameterValues ,通过调用这几个方法来获取请求对 象中所包含的参数的值  “response” 对象代表的是对客户端的响应,也就是说可以 通过 “response” 对象来组织发送到客户端的数据。但是由 于组织方式比较底层,所以不建议使用,需要向客户端 发送文字时直接使用 “out” 对象即可。

6 request 对象示例 <html><body> 姓名 <input type="text" 姓名 <input type="text" name="UserName"> name="UserName"> <input type="submit" <input type="submit" value=" 提交 "> value=" 提交 "> </body></html>

7 request 对象示例( Hello_req.jsp <HTML> 你好, 你好, <% <% Name=request.getParameter("UserName"); Name=request.getParameter("UserName"); %> %>,, 今天是 今天是 <% <% Date today=new Date(); Date today=new Date(); %> %> 号,星期 号,星期 </HTML>

8 request 对象示例(输出结果) <HTML> 你好, 你好, 独孤求败, 今天是 今天是 9 号,星期 1 9 号,星期 1 </HTML>

9 session 对象  “session” 对象代表服务器与客户端所建 立的会话,当需要在不同的 JSP 页面中 保留客户信息的情况下使用,比如在线 购物、客户轨迹跟踪等。 “session” 对象 建立在 cookie 的基础上,所以使用时应 注意判断一下客户端是否打开了 cookie 。 常用的方法包括 getId 、 getValue 、 getValueNames 和 putValue 等。

10 session 对象  概要  Web Server 对每一个客户端请求都没有历史记忆;  Session 用来保存客户端状态信息;  由 Web Server 写入;  存于客户端;  客户端的每次访问都把上次的 session 记录传递给 Web Server ;  Web Server 读取客户端提交的 session 来获取客户 端的状态信息;

11 session 对象示例 (Form 表单 -Logon_session.html) <html><body> 姓名 姓名 </body></html>

12 session 对象示例 Logon_session.jsp <HTML> <% <% String Name=request.getParameter("UserName"); String Name=request.getParameter("UserName"); session.putValue("LogName", Name); session.putValue("LogName", Name); %> %> 你的名字 " " 已经写入 session 你的名字 " " 已经写入 session check check </HTML>

13 session 对象示例 (Check_session.jsp) <HTML><BODY> <% <% String yourName=(String)session.getValue("LogName"); String yourName=(String)session.getValue("LogName"); if (yourName= =null) if (yourName= =null) { %> 您还未登录 %> 您还未登录 <% <% }else }else { %> %> " " 已经登录 " " 已经登录 <% <% } %> %></BODY></HTML>

14 application 对象  “application” 对象负责提供应用程序 在服务器中运行时的一些全局信息, 常用的方法有 getMimeType 和 getRealPath 等。 MIME 表示多用途 Internet 邮件扩允协议。 MIME 扩允了基本的面向 文本的 Internet 邮件系统,以便可以在消息中包含二进制附件。 MIME 类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型, 当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。

15 out  “ out ” 对象代表了向客户端发送数据的对象,与 “ response ” 对象不同,通过 “ out ” 对象发送的内容将是浏 览器需要显示的内容,是文本一级的,可以通过 “ out ” 对 象直接向客户端写一个由程序动态生成 HTML 文件。常用 的方法除了 pirnt 和 println 之外,还包括 clear 、 clearBuffer 、 flush 、 getBufferSize 和 getRemaining ,这是因为 “ out ” 对 象内部包含了一个缓冲区,所以需要一些对缓冲区进行 操作的方法。

16 config 、 page 、 exception  “config” 对象提供一些配置信息,常用的方法有 getInitParameter 和 getInitParameterNames ,以 获得 Servlet 初始化时的参数。  “page” 对象代表了正在运行的由 JSP 文件产生的 类对象,不建议一般读者使用。  “exception” 对象则代表了 JSP 文件运行时所产 生的例外对象,此对象不能在一般 JSP 文件中直 接使用,而只能在使用了 “ ” 的 JSP 文件中使用

17 request 请求对象  1 . getAttribute getAttribute(String name) :获得指定名字的 属性,如果该属性不存在,将会返回 null 。

18 request 请求对象  如果所给名称的属性不存在将返回空值。  属性名应该遵循和包命名方式同样的约 定,不要采用如 “java.*” 、 “ javax.*” 及 “sun.*”. 这样的命名。  参数: name 一个标示属性名的字符串  返回值:一个包含属性值的对象,当属性 不存在是为空。

19 request 对象使用示例( test3.1.jsp ) <html><head><title>request</title></head><body> 用户登录 用户登录 用户名: 密码: 密码:

20 浏览器类型 : IE Netscape Netscape 资料选项: 资料选项: 标题 标题 详细 详细 </form></body></html>

21 Post.jsp 代码 <html><head><title>test</title></head><body><% out.println(" 用户名: "+request.getParameter("User")+" "); out.println(" 密码: "+request.getParameter("pwd")+" "); out.println(" 浏览器: "+request.getParameter("radio")+" "); out.println(" 标题: "+request.getParameter("check1")+" "); out.println(" 详细: "+request.getParameter("check2")+" "); out.println(" 隐含: "+request.getParameter("hidden")+" "); out.println("getContentLength()="+request.getContentLength()+"<br>");

22 out.println("getContentType()="+request.getContentType()+"<br>");out.println("getRequestURI()="+request.getRequestURI()+"<br>");out.println("getServerPort()="+request.getServerPort()+"<br>");out.println("getServerName()="+request.getServerName()+"<br>");out.println("getProtocol()="+request.getProtocol()+"<br>");out.println("getRemoteAddr()="+request.getRemoteAddr()+"<br>");out.println("getHeaderNames()="+request.getHeaderNames()+"<br>");out.println("getMethod()="+request.getMethod()+"<br>");out.println("getServletPath()="+request.getServletPath()+"<br>"); out.println("isRequestedSessionIdValid()="+request.isRequestedSessionIdVa lid()+ " "); " ");%></body></html>

23 运行结果

24

25 session 对象示例 <html><head><title>session</title></head><body> 请输入您的姓名: </body></html>

26 post1.jsp <html><head><title>post.jsp</title></head><body> <p><% name = request.getParameter("username"); // 将 username 存入 session session.putValue("username", name); %> 您的姓名是: 您的姓名是: 您最喜欢的娱乐是: </form></body></html>

27 post11.jsp <html><head><title>post1.jsp</title></head><body> <%amuse=request.getParameter("amuse"); String user=(String)session.getValue("username"); %> 您的姓名是: 您的姓名是: 您喜欢的娱乐是: 您喜欢的娱乐是: </body></html>

28 运行结果

29 提交后

30 输入值

31 再次提交(保存名字)

32 application 对象运行示例 <html><head><title>application</title><head><body> <% out.println("Java Servlet API Version "+application.getMajorVersion() +"."+application.getMinorVersion()+"<br>"); out.println(“test3.3.jsp's MIME type is:"+application.getMimeType(“test3.3.jsp") +"<br>"); out.println("URL of ‘test3.3.jsp' is: "+application.getResource(“/test3.3.jsp")+" "); out.println("getServerInfo()="+application.getServerInfo()+"<br>"); out.println(application.getRealPath(" ")); application.log("Add a Record to log_file"); %> </body></html>

33 运行结果

34 application 对象实现网页计数器 <html> 网页计数器 网页计数器 <body> <% if (application.getAttribute("counter")==null) application.setAttribute("counter","1");else{ String strnum=null; strnum=application.getAttribute("counter").toString(); int icount=0; icount=Integer.valueOf(strnum).intValue();icount++;application.setAttribute("counter",Integer.toString(icount)); } %> 您是第 位访问者! </body></html>

35 运行结果 ( 第一次访问 )

36 刷新一次

37 内置对象小结  全面介绍了 JSP 的几种内置对象。熟练使 用这些内置对象是开发 JSP 应用程序的基 本要求,尤其是对于 request 、 session 和 application 对象更是必须要掌握的。  会使用对象所具有的方法,能熟练使用每 一种对象的几种常用方法。

38 参考: HTML 表单  复习 Web 运行原理  HTML 表单的概念  表单元素介绍  HTML 表单的客户端确认  客户端表单确认实例

39 Web 运行原理- 1  客户端同 Web 服务器之间的协议为 http  HTTP 为超文本传输协议  HTPP 协议为 “ 请求和响应 ” 协议  客户端请求包括:请求行、头、信息体  客户端请求的方法  GET 、 POST 、 HEAD  DELETE 、 TRACE 、 PUT  提交表单的方法: GET 、 POST

40 Web 运行原理- 2  服务器接收到请求后,返回 HTTP 响应  每个响应:状态行、头、信息体  常见状态  404 所请求的文件不存在  500 服务器程序出错  200 OK 成功  信息体用于浏览器显示

41 页面访问失败

42 HTML 表单  表单是具有输入域、文本域的页面  用于客户端同服务器端交互  用户在客户端填写表单,然后 “ 提交 ”  表单中的信息发送到服务器  服务器返回处理情况

43 HTML 表单标记  表单主标记    表单中的标记    是表单开始标记, 结束

44 表单的例子 <html> 表单 表单 <body> 用户登录 用户登录 用户名: 密码: 密码: </form></body></html>

45 运行结果

46 form 标记  描述表单的特性,语法  method 表单传输方法  GET 方法将表单信息在 URL 后传输  POST 方法将表单信息作为信息体传输  action 为表单处理方式,通常为一个 URL  enctype 为编码方式

47 标记 标记  表单中输入信息的区域  属性  type 类型  name 名称  id 标识  maxlength 最大字符数  size 输入域宽度  value 域的初始值  button 按钮 用 javascript 响应

48 的类型 的类型  text 文本  passwowrd 口令方式  checkbox 多选框 name 相同  radio 单选按钮 name 相同  image 图片  hidden 隐藏表单 发送数据  submit 提交按钮 向服务器提交表单  reset 复位按钮 将表单充置为初始状态

49 文本框: TEXTAREA  多行文本域:  多行文本域:  参数  COLS :宽度  ROWS :高度  NAME :名称 CPU PIV 1500 Memory 512M

50 下拉框: SELECT  定义列表框:  定义列表框:  参数  MULTIPLE 可同时选取多行  NAME 名称  SIZE 可见项目数  每个项目用 option 标记  属性 SELECTED 出现在 option 表示选中

51 select 的例子 北京 北京 天津 天津 上海 上海 重庆 重庆 </select>

52 表单提交  提交方式:  submit 类型按钮提交表单  通过普通按钮的 javascript 函数  传输方法依据 中的 method  推荐使用 POST  传输编码依据 中的 enctype  处理方式依据 中的 action

53 表单清除  reset 按钮重置表单为初始值

54 综合例子 <html> 表单 表单 <body> 用户注册 用户注册 用户名: 密码: 密码: 你喜欢: 你喜欢: 足球 足球 篮球 篮球

55 性别: 男 男 女 女 你的计算机 你的计算机 CPU PIV 1500 Memory 512M 你计算机的操作系统 你计算机的操作系统

56 你所在地: 北京 北京 天津 天津 上海 上海 重庆 重庆 </select> </form></body>

57 运行结果

58 表单的确认  客户端确认  减少服务器负载  缩短用户等待时间  兼容性难  服务器端确认  统一确认  兼容性强  服务器负载重

59 客户端确认  采用 javascript 进行确认  常用函数  isBetween  isDate  isTime  isDigit  isEmail  isEmpty  isInt  isReal

60 客户端确认例子 <html> 客户端确认 客户端确认 <body> 用户登录 用户登录 用户名: 密码: 密码: </form>

61 function checkform(frm){ var flag=true; if(frm.name.value==""){ alert(" 姓名不能为空,请输入值! "); alert(" 姓名不能为空,请输入值! "); frm.name.focus(); frm.name.focus(); flag=false; flag=false;} return flag; }</SCRIPT></body></html>

62 运行结果

63 2.3.4 JSP 与客户机的交互  从表单中获得参数  返回参数  表单的服务器端确认

64 从表单中获得参数  JSP 通过 request 内置对象获取表单信息  用不同的方法获取不同种类的信息  获取参数的主要方法:  getParameter() 获取参数的值  getParameterNames() 获取参数的名称  getParameterValues() 获取多个值

65 getParameter()  可以获得文本框、文本区域、单选、多选 的值  表单中各元素的 NAME 属性是它的唯一标 识,用它获取参数。  参考 peixun2.11.jsp 及 post.jso request.getParameter("User");

66 向客户端输出  使用内置对象 out out.println(content)  使用 “=”

67 表单的服务器端确认  在客户端不能用 JSP 进行确认  分工:数据处理在服务器端  实效性:客户端得到服务器确认后表明数 据已经到达服务器  客户端兼容性好  缺点:加大服务器负载和用户等待时间

68 服务器端确认方法  采用 Java 类对表单数据进行复杂的检查  采用 JSP 进行确认

69 服务器端确认的例子 <html> 服务器端确认 服务器端确认 <body> 用户登录 用户登录 用户名: 密码: 密码: </form></body></html>

70 loginAction.jsp <html> 确认 JSP 确认 JSP <body><% String name=request.getParameter("name"); String pwd=request.getParameter("pwd"); if((name!=null)&&(!name.equals(""))){ name=new String(name.getBytes("ISO8859_1"), "gb2312"); out.println(" 用户名: " +name+" "); out.println(" 密码: "+pwd+" "); }else{%>

71 用户名不能为空 用户名不能为空 用户登录 用户登录 用户名: "> 密码: "> 密码: "> </form><%}%></body></html>

72 运行结果( TOMCAT )

73 ( 未输入姓名 ) 直接提交

74 输入用户名

75 输入用户名后提交

76 JSP 的汉字问题的原理  客户端和服务器用 gb2312  HTTP 传输编码用 ISO8859_1  服务器需要指示客户端文档的编码方式 ISO8859_1 gb2312

77 JSP 的汉字问题出现环节  客户端显示文档时的编码方式(由服务器 中的 JSP 、 Servlet 指明)  客户端发送汉字时自动转换为 iso8859_1  服务器中采用 gb2312 对汉字编码,接收到 客户端汉字需要转换为 gb2312  服务器端将 JSP 转换为 Servlet 时自动将汉 字转换为 iso8859_1  服务器端应该告诉客户端汉字的编码方式

78 JSP 汉字问题的范围  JSP 文件的汉字问题  表单处理的汉字问题  Servlet 的汉字问题(以后讲解)  JDBC 的汉字问题(以后讲解)

79 JSP 文件的汉字问题  JSP 中的汉字字符串在服务器端用 gb2312  在编译为 Servlet 时自动转换为 iso8859_1  汉字在传输中是正确的  在没有特别指示下,浏览器中无法正确显示  在 HTML 中指示浏览器文档的编码( myJSP\index.html )    在 JSP 中指示 JSP 引擎文档的编码    每个要显示汉字的 JSP 文档都应该包含该语句

80 JSP 文件的汉字问题 ( JSPhanzi.jsp ) JSP 中的汉字问题 <% String HelloMsg=" 你好 "; out.println(HelloMsg); %> JSP 中的汉字问题 你好

81 JSP 中增加编码指示后 <%@ page contentType="text/html; charset=gb2312"%> JSP 中的汉字问题 <% String HelloMsg=" 你好 "; out.println(HelloMsg); %> JSP 中的汉字问题 你好

82 表单处理中的汉字问题  表单处理涉及到客户端和服务器的完整交 互过程  在客户端和服务器是 gb2312 ,传输用 ISO8859_1  在服务器端接收到客户端数据时需要转换 为 gb2312 后进行处理,方法 name=new String(name.getBytes("ISO8859_1"), "gb2312");  服务器端指示客户端汉字的显示编码

83 表单处理的汉字问题 (hanzi.jsp) 表单处理的汉字问题 <form method="POST" name="frm1" action="hanziAction.jsp"> 用户登录 用户名: 表单处理的汉字问题 <form method="POST" name="frm1“ action="hanziAction.jsp"> 用户登录 用户名:

84 处理过程 <%@page contentType="text/html; charset=gb2312"%> 表单中汉字的处理 <% String name=request.getParameter("name"); //name=new String(name.getBytes("ISO8859_1"), "gb2312"); out.println(" 用户名: " +name+" "); %> 表单中汉字的处理 用户名: ????

85 处理过程(修改后) <%@page contentType="text/html; charset=gb2312"%> 表单中汉字的处理 <% String name=request.getParameter("name"); name=new String(name.getBytes("ISO8859_1"), "gb2312"); out.println(" 用户名: " +name+" "); %> 表单中汉字的处理 用户名:测试

86 综合练习 综合练习:我的网上商店 myshop ,具有以下功能 综合练习:我的网上商店 myshop ,具有以下功能  用户登录、注册  口令空转向 loginError.jsp (采用 )  建立 web 应用 myshop ,参考 softshop 目录结构  体会表单的两种发送方法 页面设计:  完成首页、用户登录、注册( index.jsp 、 login.jsp 、 registor.jsp )  首页 index.jsp 包括简介、商品分类、新注册用户、登录用户计数, 按钮:用户登录、注册  用户计数采用 application 对象  login.jsp 包括输入用户名、口令的表单,用户名是否为空由服务 器端确认,口令是否为空由客户端确认,处理表单的 jsp 为 check.jsp ,当口令为空时转向显示错误页面,登录成功时显示用 户名和口令(表单采用 GET 方法发送)

87 实践:练习 JSP 编程- 综合练习  registor.jsp 中录入用户信息,综合使用表单的功能: form 标记(表单采用 POST 方法发送) text :用户名、口令 radio 按钮:性别 select :出生年月、所在地、行业 其中会使用到 option 标记 checkbox :选择兴趣 textarea :自我介绍 按钮:提交和重新输入  处理 registor.jsp 的 jsp 为 record.jsp , record.jsp 接收 text 、 textarea 、 radio 、 select 的数据,并显示出来(注意汉字问题)。  record.jsp 中用 session 存储新注册的用户名。  record.jsp 包含返回首页 index.jsp 的超链接  index.jsp 中用 session 提取新注册用户并显示


Download ppt "Java Web 开发 授课人:张鸽. 第三讲 JSP 内置对象  JSP 有以下九种内置对象,包括:  ·request ,请求对象  ·response ,响应对象  ·pageContext ,页面上下文对象  ·session ,会话对象  ·application ,应用程序对象."

Similar presentations


Ads by Google