温故而知新! 2017年3月4日.

Slides:



Advertisements
Similar presentations
Power point 制作 耿祥义 张跃平 配合 例子源代码一起使用. 第 4 章 内 置 对 象 有些成员变量不用声明就可以在 JSP 页 面的脚本( Java 程序片和 Java 表达式) 中使用,这就是所谓的内置对象。 内置对象有: resquest 、 response 、 session.
Advertisements

第 4 章 配合 例子源代码一起使用 Power point 制作:耿祥义 张跃平 普通高等教育 “ 十一五 ” 国家级规划教材 JSP 内置对象.
第 4 章 JSP 内置对象 本章主要内容:  内置对象的概念  内置对象的作用域和生命期  内置对象的作用和关系  内置对象的使用方法.
网络应用程序设计 2014 JavaBean. JavaBean 及其属性 JavaBean 就是一种 Java 的组件技术 JavaBean 是 Java 类 JavaBean 通过约定的方法名实现属性功能 简单属性 void setXxx(Type value) Type getXxx() boolean.
1 JSP 内置对象 返回 request request 对象的类型是一个执行 javax.servlet.http.HttpServletRequest 界面的 类。当客户端请求一个 JSP 网页时,客户端的请求信息将被 JSP 引擎封装在 这个 request 对象中。那么该对象调用相应的方法可以获取用户提交的信息。
第五章 jsp 内置对象 1. request 对象 在 jsp 中,内置对象 request 封装了用户提交的信息, 那么该对象调用相应的方法可以获取封装的信息, 即使用该对象可以获取用户提交的信息。 客户一般使用 html 表单向服务器的某个 jsp 页面提 交信息,表单的一个格式 提交手段.
第 2 章 JSP 应用基础(三).  page 对象、 config 对象、 out 对象  response 对象  request 对象  session 对象  application 对象  pageContext 、 exception 对象 教学目标 :
第二章 JSP 编译指令. 课程目标  JSP 编译指令  JSP 页面的表达式  JSP 页面的注释  JSP 页面的声明  Scriptlets.
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
第4章第4章 第4章第4章 JSP 内置对象. 本课教学内容  认识 JSP 内置对象  out 对象  request 对象  response 对象  Cookie 操作  利用 session 开发购物车  session 其他 API  application 对象.
第五章 JSP 的内置对象 西南科技大学网络教育系列课程 动态网页设计( JSP ). 动态网页设计( JSP ) 内置对象概述 特点 request :得到客户端的信息。 (HttpServletRequest) session :保存单个用户访问时的一些信息。
Java Web 开发 授课人:张鸽. 第三讲 JSP 内置对象  JSP 有以下九种内置对象,包括:  ·request ,请求对象  ·response ,响应对象  ·pageContext ,页面上下文对象  ·session ,会话对象  ·application ,应用程序对象.
动态页面设计 长沙民政职业技术学院 ☆ WEB 应用开发精品课程. 案例导入 项目 结合 JDBC 技术和 JSP 技术,实现考生登录验证 任务 用户登陆页面与后台验证实现 。 技术要点 ( 关键字 ) 1.JSP 标签和动作应用。 2.JSP 的内置对象 request , response 3.JSP.
LOGO 第 9 章 Java Servlet 和 JSP 编程 孙焘. 重点: servlet 编程原理 1 servlet 的基础类与编程实现 2 JSP 编程原理 3 JSP 的常用语法 4.
动态Web开发技术--JSP.
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
第五章 JSP内置对象 第4章学习了页面组成元素和使用方法。本章学习JSP内置对象的使用。使用JSP内置对象,可以方便操作页面,访问页面环境,实现页面内、页面间、页面与环境之间的通讯。 学习目标 熟悉主要内置对象的概念 理解主要内置对象的作用域和生命期 理解主要内置对象的作用和关系 熟悉主要内置对象的使用方法.
7.5 其他对象 JSP 视频教学课程.
基于JSP搭建Web应用程序.
上节课我们是讲解了request, response, session, application 等内置对象,有了它们,我们就可以编写一个完整的应用程序了。 我们来看ebank这个小应用程序的编写。
第8讲 HTML与PHP基础 静态网页 vs. 动态网页.
张孝祥IT课堂 -深入体验Java Web开发内幕
Oracle数据库 Oracle 子程序.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
移动开发的灵便迭代之道 黄凯.
Hello World 體驗實作第一個JSP程式.
第四章 網頁表單與資料傳遞.
专题4:JSP脚本和指令.
JSP自定义标签技术的分析与应用 ----Custom Tag 的分析与应用
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
第二讲 搭建Java Web开发环境 主讲人:孙娜
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
進階 WWW 程式設計 -- PHP Regular Expression 靜宜大學資訊管理學系 蔡奇偉副教授 2004
第六讲 JSP中的文件操作(2) 教学目的 本讲继续讲述JSP中使用Java输入、输出流实现文件的读写操作 。 1 文件上传 2 文件下载
走进编程 程序的顺序结构(二).
辅导课程六.
网络常用常用命令 课件制作人:谢希仁.
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
供应商登录CJLR SRM系统入口 CJLR供应商仅可以在互联网上访问SRM系统,无法在CJLR内网登录SRM系统.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
任务1-3 使用Dreamweaver创建ASP网页
Java语言程序设计 清华大学出版社 第8章 输入输出流(1).
HTML 103 互動式網頁.
SOA – Experiment 2: Query Classification Web Service
第3章 Java語法的JSP程式 3-1 Java語言的基礎 3-2 JSP程式的基本架構 3-3 Java的變數與資料型態
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
Ch09 在網頁之間傳遞資訊 網頁程式設計.
JSP程序设计 第9章 Servlet简介.
Drupal Dev 我想知道:什么时候、什么变化.
VB与Access数据库的连接.
HTML 103 互動式網頁 助教:黃毓瑩.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
项目二:HTML语言基础.
第4章 Excel电子表格制作软件 4.4 函数(一).
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
3.16 枚举算法及其程序实现 ——数组的作用.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
PHP程式設計 五、程式流程控制結構 建國科技大學 資訊管理學系 饒瑞佶.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
HTML表单 JSP借由标签所构成的表单区块中,取得用户在其中特定字段输入的数据內容 。 JSP 动态网页新技术.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
第5章 表达式语言.
表单页面 表单是用户利用浏览器对Web站点网络数据库进行查询的一种界面,用户利用表单可以输入信息或选择选项等,然后将这些信息提交给服务器进行处理。通过表单,既可以将浏览器的信息发送到Internet服务器上,同时表单也可以使用户与站点的浏览者交互或从浏览者那里收集信息。它是网页的设计者和使用者相互交流的工具。表单对象包括文本域(单行、多行、密码)、列表、菜单、复选框、单选框、按钮等。
Presentation transcript:

温故而知新! 2017年3月4日

第4章 JSP基础知识 4.1 JSP页面的基本结构 4.2 JSP三种常用注释 4.2.1 隐藏注释及其应用实例 4.2.1 隐藏注释及其应用实例 4.2.2 HTML注释及其应用实例 4.2.3 Java注释及其应用实例 4.3 JSP常用脚本元素 4.3.1 变量和方法的声明及其应用实例 4.3.2 表达式和脚本及其应用实例 4.4 JSP常用指令 4.4.1 page指令及其应用实例 4.4.2 include指令及其应用实例 4.4.3 taglib指令及其应用实例 2017年3月4日

4.5.2 <jsp:include>动作及其应用实例 4.5.3 <jsp:useBean>动作及其应用实例 4.5.1 <jsp:param>动作 4.5.2 <jsp:include>动作及其应用实例 4.5.3 <jsp:useBean>动作及其应用实例 4.5.4 <jsp:setProperty>动作及其应用实例 4.5.5 <jsp:getProperty>动作及其应用实例 4.5.6 <jsp:forward>动作及其应用实例 4.6 常见问题及解决方案 2017年3月4日

第5章 JSP的常用内置对象 5.1 out对象 5.2 request对象 5.3 response对象 5.4 session对象 5.5 pageContext对象 5.6 exception对象 5.7 application对象 5.8 常见问题及解决方案 2017年3月4日

5.1 out对象 5.1.1 out对象的基础知识 5.1.2 out对象应用实例 2017年3月4日

在JSP页面中不需要预先声明和创建这些对象就能直接使用。 编写JSP的人员不需要对这些内部对象进行实例化,只要调用其中的方法就能实现特定的功能,这给Java Web编程带来很大的方便。 2017年3月4日

5.1.1 out对象的基础知识 out对象主要用来向客户输出各种数据类型的内容,并管理应用服务器上的输出缓冲区(buffer)。缓冲区默认值是8KB,可以通过page指令来改变缓冲区的大小。 2017年3月4日

out对象能把结果输出到网页上,用来控制管理输出缓冲区和输出流。 out对象的主要方法如下: 2017年3月4日

newLine()方法:用于输出一个换行字符。 print()/println():用于输出数据。Out对象是JSP中使用最为频繁的对象,它的print()和println()方法最常用。print()方法把Java对象原始数据类型输入到客户端的缓冲区,而println()方法除了把内容输出到客户端,还在后面添加一个空行。 newLine()方法:用于输出一个换行字符。 2017年3月4日

flush():用于输出缓冲区里的数据。此方法会先将之前缓冲区中的数据输出至客户端,然后再清除缓冲区中的数据。 clearBuffer():用于清除缓冲区里的数据,并把数据输出到客户端。 clear():用于清除缓冲区里的数据,但不会把数据输出到客户端。 getBufferSize():用于获得缓冲区的大小。 getRemaining():用于获得缓冲区中没有被占用的空间的大小。 isAutoFlush():返回布尔值,如果AutoFlush为真,则返回true,反之,返回false。 close():关闭输出流.可以强制终止当前页面的剩余部分向浏览器输出。 2017年3月4日

5.1 out对象 5.1.1 out对象的基础知识 5.1.2 out对象应用实例 2017年3月4日

【例5-1】out对象应用实例1(out1.jsp) <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>out对象应用实例1</title> </head> <body> 2017年3月4日

for(int i=0;i<3;i++) <% for(int i=0;i<3;i++) out.println("<h3>我的理想是什么...</h3>"); String str="我一定学好JSP程序设计课程!"; out.print(str+"<br>"); out.println("加油"); %> </body> </html> 2017年3月4日

运行效果 2017年3月4日

【例5-2】out对象应用实例2(out2.jsp) <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>out对象应用实例2</title> </head> <body> 以下是out对象其它常用方法的使用: <hr> 获取缓存大小:<%=out.getBufferSize()%> <br> 获取剩余缓存区大小:<%=out.getRemaining()%> 判断是否自动刷新:<%=out.isAutoFlush()%> 2017年3月4日

out.print("知识改变命运,技术改变生活!<br>"); <% out.print("知识改变命运,技术改变生活!<br>"); out.print("当前可用缓冲区大小:"+out.getRemaining()+"<br>"); out.flush(); out.print("当前可用缓冲区空间大小:"+out.getRemaining()+"<br>"); out.clearBuffer(); out.print("当前可用缓冲区空间大小:"+ out.getRemaining()+"<br>"); %> <hr> </body> </html> 2017年3月4日

运行效果 2017年3月4日

第5章 JSP的常用内置对象 5.1 out对象 5.2 request对象 5.3 response对象 5.4 session对象 5.5 pageContext对象 5.6 exception对象 5.7 application对象 5.8 常见问题及解决方案 2017年3月4日

5.2 request对象 5.2.1 request对象的基础知识 5.2.2 request对象应用实例 2017年3月4日

5.2.1 request对象的基础知识 当用户请求一个JSP页面时, JSP页面所在的Tomcat服务器将用户的请求封装在内置对象request中。request内置对象代表了客户端的请求信息,主要用于接收客户端通过HTTP协议传送给服务器端的数据。在客户端的请求中如果有参数,则该对象就有一个参数列表。 2017年3月4日

getAttribute(String name):用于返回name指定的属性值,若不存在指定的属性,就返回null。 request对象的主要方法如下: getAttribute(String name):用于返回name指定的属性值,若不存在指定的属性,就返回null。 getAttributes():用于返回request对象的所有属性的名字集合,结果集是一个Enumeration(枚举)类的实例。 getCookies() :用于返回客户端的所有Cookie对象,结果是一个Cookie数组。 getCharacterEncoding(): 返回请求中的字符编码方式。 getContentLength():以字节为单位返回客户端请求的大小。如果无法得到该请求的大小,则返回-1。 getHeader(String name):用于获得HTTP协议定义的文件头信息。 getHeaders(String name) :用于返回指定名字的request Header的所有值,其结果是一个Enumeration类的实例。 getHeaderNames():用于返回所有request Header的名字 ,其结果是一个Enumeration类的实例。 2017年3月4日

getInputStream():用于返回请求的输入流,获得请求中的数据。 getMethod():用于获得客户端向服务器端传送数据的方法,如GET,POST,HEADER,TRACE等。 getParameter(String name) :用于获得客户端传送给服务器端的参数值。获取表单提交的信息,以字符串形式返回客户端传来的某一个请求参数的值,该参数名由name指定。当传递给此方法的参数名没有实际参数与之对应时,返回null。 getParameterNames():用于获得客户端传送给服务器端的所有参数名字,其结果是一个Enumeration类的实例。 getParameterValues(String name) :用于获得指定参数的所有值。返回客户端传送给服务器端的所有参数名,结果集是一个Enumeration类的实例。当传递给此方法的参数名没有实际参数与之对应时,返回null。 getProtocol():用于获取客户端向服务器端传送数据所依据的协议名称。 getQueryString():用于获得查询字符串,该字符串是由客户端以GET方式向服务器端传送的。 getRequestURI():用于获取发出请求字符串的客户端地址。 2017年3月4日

getRemoteAddr():用于获取客户端IP地址。 getRemoteHost():用于获取客户端名字。 getSession([Boolean create]) :用于返回和请求相关的session。create参数是可选的。当有参数create且这个参数值为true时,如果客户端还没有创建session,那么将创建一个新的session。 getServerName():用于获取服务器的名字。 getServletPath():用于获取客户端所请求的脚本文件的文件路径。 getServerPort():用于获取服务器的端口号。 removeAttribute(String name) :用于删除请求中的一个属性。 setAttribute(String name, java.lang.Object obj) :用于设置request的参数值。 2017年3月4日

5.2 request对象 5.2.1 request对象的基础知识 5.2.2 request对象应用实例 2017年3月4日

【例5-3】request对象应用实例1(request1.jsp和requestHandle.jsp) 本实例使用request对象获取客户端提交的信息。本例包括两个文件:request1.jsp(主界面)和requestHandle.jsp(数据处理页面)。在request1.jsp页面中输入数据并单击“提交”按钮后,页面跳转到requestHandle.jsp页面,该页面对提交的数据进行处理,并将数据输出到该页面中。 request1.jsp代码如下: 2017年3月4日

<%@page contentType="text/html" pageEncoding="UTF-8"%> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>request对象应用实例1</title> </head> <body> <form action="requestHandle.jsp" method="get"> 请输入数据:<input type="text" name="name"/> <input type="submit" name="submit" value="提交"/> </form> </body> </html> 2017年3月4日

requestHandle.jsp代码如下: <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>数据处理页面</title> </head> <body> <% String textContent= request.getParameter("name"); String buttonName= request.getParameter("submit"); %> 获取到客户端提交的文本和按钮信息如下: <hr> 文本框输入的信息:<%=textContent%> <br> 按钮信息:<%=buttonName%> </body> </html> 2017年3月4日

运行效果 运行效果 2017年3月4日

【例5-4】request对象应用实例2(request2.jsp和requestHandle2.jsp) 本实例模拟在线考试系统。本例包括两个文件:request2.jsp(主界面)和requestHandle2.jsp(数据处理页面)。request2.jsp页面是输出单选题页面,题目答完后点击“考试完成”,页面跳转到requestHandle2.jsp页面,该页面对提交的数据进行处理,并将数据输出到页面中,即本次测试成绩。 request2.jsp代码如下: 2017年3月4日

<%@page contentType="text/html" pageEncoding="UTF-8"%> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>request对象应用实例2_考试系统</title> </head> <body> <h3>第5章测试题</h3> <hr> <form action="requestHandle2.jsp" method="get"> 1.response对象的setHeader(String name,String value)方法的作用是 ( )。<br> <input type="radio" name="1" value="A">添加HTTP文件头<br> <input type="radio" name="1" value="B"> 设定指定名字的HTTP文件头的值<br> <input type="radio" name="1" value="C"> 判断指定名字的HTTP文件头是否存在<br> <input type="radio" name="1" value="D"> 向客户端发送错误信息()<br> 2017年3月4日

2.设置session的有效时间(也叫超时时间)的方法是( )。<br> <input type="radio" name="2" value="A"> setMaxInactiveInterval(int interval)<br> <input type="radio" name="2" value="B">getAttributeName()<br> <input type="radio" name="2" value="C"> set AttributeName(String name,Java.lang.Object value)<br> <input type="radio" name="2" value="D">getLastAccessedTime()<br> 3.能清除缓冲区中的数据,并且把数据输出到客户端是out对象中的方法是( )。<br> <input type="radio" name="3" value="A">out.newLine()<br> <input type="radio" name="3" value="B">out.clear()<br> <input type="radio" name="3" value="C">out.flush()<br> <input type="radio" name="3" value="D">out.clearBuffer()<br> 2017年3月4日

4.pageContext对象的findAttribute()方法作用是( )。<br> <input type="radio" name="4" value="A"> 用来设置默认页面的范围或指定范围之中的已命名对象<br> <input type="radio" name="4" value="B"> 用来删除默认页面范围或指定范围之中已命名的对象<br> <input type=“radio” name=“4” value=“C”>按照页面请求、会话 以及应 用程序范围的顺序实现对某个已命名属性的搜索<br> <input type="radio" name="4" value="D"> 以字符串的形式返回一个对异常的描述<br> <input type="submit" value="考试完成"> </form> </body> </html> 2017年3月4日

<%@page contentType="text/html" pageEncoding="UTF-8"%> requestHandle2.jsp代码如下: <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>考试成绩</title> </head> <body> <% int examResults=0;//测试成绩 String str1=request.getParameter("1");//获取单选按钮 String str2=request.getParameter("2"); String str3=request.getParameter("3"); String str4=request.getParameter("4"); 2017年3月4日

<h3>您本次测试成绩是:</h3> <%=examResults/4*100%>分 if(str1==null) str1=""; if(str2==null) str2=""; if(str3==null) str3=""; if(str4==null) str4=""; if(str1.equals("B")) examResults++; if(str2.equals("A")) if(str3.equals("D")) if(str4.equals("C")) %> <h3>您本次测试成绩是:</h3> <%=examResults/4*100%>分 </body> </html> 2017年3月4日

运行效果 2017年3月4日

2017年3月4日

【例5-5】request对象应用实例3(request3.jsp 和requestHandle3.jsp) 本例包括两个文件:request3.jsp(主界面)和requestHandle3.jsp(数据处理页面)。在request3.jsp页面中输入数据后单击“提交”按钮,页面跳转到requestHandle3.jsp页面,该页面对提交的数据进行处理,并将数据输出到页面中。 request3.jsp代码如下: 2017年3月4日

<%@page contentType="text/html" pageEncoding="UTF-8"%> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>request对象应用实例3</title> </head> <body> <form action="requestHandle3.jsp" method="post"> <p>文本内容<input type="text" name="text"></p> <p>整数类型<input type="text" name="integer"></p> <p>复选框:</p> <p> 1.<input type="checkbox" name="checkbox1" value="1"><br> 2.<input type="checkbox" name="checkbox2" value="1"> </p> 2017年3月4日

<select name="select"> <option value="1">1</option> 下拉列表: <select name="select"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> </select> </p> <p><input type="submit" name="submit" value="提交"></p> </form> </body> </html> 2017年3月4日

2017年3月4日

requestHandle3.jsp代码如下: <%@page import="java.util.Vector"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>数据处理页面</title> </head> <body> <% String strText,strInteger,strCheckbox1,strCheckbox2; String strSelect,strOut,errOut; Integer intInteger; int errsCount; Vector errs =new Vector(); 2017年3月4日

if(strText.length()==0){ //向错误信息库中添加信息 strText=request.getParameter("text"); //得到并处理名为text的文本输入 if(strText.length()==0){ //向错误信息库中添加信息 errs.addElement(new String("文本内容域没有值输入")); } strInteger=request.getParameter("integer"); //得到名为integer的输入并转化为integer,同时检查是否为数值 try{ intInteger=Integer.valueOf(strInteger); }catch(NumberFormatException e){ errs.addElement(new String("整数类型需要输入数字!")); intInteger=new Integer(0); 2017年3月4日

strCheckbox1=request.getParameter("checkbox1"); if(strCheckbox1==null){ strCheckbox1="没有被选中"; }else{ strCheckbox1="被选中"; } if(strCheckbox2==null){ strCheckbox2="没有被选中"; strCheckbox2="被选中"; 2017年3月4日

strSelect=request.getParameter("select"); strOut="文本内容的值是:"+strText; strOut+="<br>整数类型的值是:"+intInteger; strOut+="<br>复选框1"+strCheckbox1; strOut+="<br>复选框2"+strCheckbox2; strOut+="<br>下拉列表的值是:"+strSelect+"<br>"; //输出结果 errsCount=errs.size(); errOut=new String(""); //输出错误 for(int i=0;i<errsCount;i++){ errOut+=errs.elementAt(i).toString(); errOut+="<br>"; } 2017年3月4日

out.println("数据处理结果<br>"); out.println(strOut); //输出结果 if(errsCount!=0){ out.println("错误原因<br>"); out.println(errOut); } %> </body> </html> 2017年3月4日

运行效果 2017年3月4日

【例5-6】request对象应用实例4(request4.jsp) 本例综合使用了20多个request对象中的方法。 <%@page import="java.util.Enumeration"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>request对象应用实例4</title> </head> <body> 2017年3月4日

request.setAttribute("Name", "小强"); <% request.setAttribute("Name", "小强"); request.setAttribute("Password", "123456"); request.setAttribute("Email", "sanz@163.com"); request.removeAttribute("Password"); Enumeration e=request.getAttributeNames(); String attrName; while(e.hasMoreElements()) { attrName = e.nextElement().toString(); out.print(attrName + " = " + request.getAttribute(attrName) + "<br>"); } request.setCharacterEncoding("ISO-8859-1"); %> 2017年3月4日

<%= request.getCharacterEncoding() %> Content Length : <%= request.getContentLength() %><br> Content Type : <%= request.getContentType() %><br> <%= request.getContextPath() %> 服务器地址:<%= request.getLocalAddr() %><br> 服务器名称:<%= request.getLocalName() %><br> <%= request.getMethod() %> <%= request.getProtocol() %><br> 客户端地址:<%= request.getRemoteAddr()%><br> 客户端名称:<%= request.getRemoteHost() %><br> 客户端端口:<%= request.getRemotePort() %><br> 验证用户名:<%= request.getRemoteUser() %><br> 2017年3月4日

获取SessionId<%= request.getRequestedSessionId() %><br> 请求URI:<%= request.getRequestURI() %><br> 请求URL:<%= request.getRequestURL() %><br> 服务器名字:<%= request.getServerName() %><br> 服务器端口:<%= request.getServerPort() %><br> <%= request.getServletPath() %><br> <%= request.getSession().getId() %><br> 2017年3月4日

<%= request.isSecure() %> <hr> </body> </html> 请求的会话ID是否通过Cookie传入:<%= request.isRequestedSessionIdFromCookie() %><br> 请求的会话ID是否通过URL传入:<%= request.isRequestedSessionIdFromURL() %><br> 请求的会话ID是否仍然有效:<%= request.isRequestedSessionIdValid() %><br> <%= request.isSecure() %> <hr> </body> </html> 2017年3月4日

运行效果 2017年3月4日

第5章 JSP的常用内置对象 5.1 out对象 5.2 request对象 5.3 response对象 5.4 session对象 5.5 pageContext对象 5.6 exception对象 5.7 application对象 5.8 常见问题及解决方案 2017年3月4日

5.3 response对象 5.3.1 response对象的基础知识 5.3.2 response对象应用实例 2017年3月4日

5.3.1 response对象的基础知识 response对象将服务器端数据发送到客户端。response对象的生命周期 由JSP容器自动控制。当服务器向客户端传送数据时,JSP容器就会创建response对象并将请求信息包装到response对象中;当JSP容器处理完请求后,response对象就会被销毁。 2017年3月4日

containsHeader(String name):用于判断指定名称的Header是否已经存在,存在返回true,否则返回false。 response对象包含了响应客户请求的有关信息,它封装了JSP产生的响应,然后被发送到客户端以响应客户的请求。response对象的主要方法如下: addCookie(Cookie cook):用于给用户添加一个Cookie对象,保存客户端的相关信息。可使用request的getCookies()方法获取该Cookie对象。 addHeader(String name,String value):用于添加带有指定名称和字符串的HTTP文件头信息,该Header信息将传达到客户端,如果不存在就添加,存在则覆盖。 addDateHeader(String name,String value):用于添加带有指定名称和日期值的HTTP文件头信息,该Header信息将传达到客户端,如果不存在就添加,存在则覆盖。 containsHeader(String name):用于判断指定名称的Header是否已经存在,存在返回true,否则返回false。 2017年3月4日

flushBuffer():用于强制把当前缓冲区所有内容发送到客户端。 getBufferSize():用于获取实际缓冲区的大小,如果没使用缓冲区则返回0。 getCharacterEncoding():用于获取响应的字符编码方式。 getContentType():用于获取响应的内容MIME类型。 getOutputStream():用于获取到客户端的输出流。 sendError():用于向客户端发送错误信息。如:404指网页找不到错误。 2017年3月4日

sendRedirect():用于重新定向客户端的请求。 setCharacterEncoding():用于设置响应的字符编码方式。 setContent():用于设置响应的内容MIME类型。 setContentLength():用于设置响应内容的长度(字节数。) setHeader():用于设置指定名称和字符串的HTTP文件头信息,该Header信息将传达到客户端,如果不存在就设置,存在则覆盖。 setDateHeader():用于设置指定名称和日期值的HTTP文件头信息,该Header信息将传达到客户端,如果不存在就设置,存在则覆盖。 2017年3月4日

5.3 response对象 5.3.1 response对象的基础知识 5.3.2 response对象应用实例 2017年3月4日

【例5-7】response对象应用实例1(response1.jsp) <%@page contentType="text/html" pageEncoding="UTF-8" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>response对象实例演示</title> </head> <body> <h3>现在时间是:</h3> <hr> <%=new java.util.Date()%> <%response.setHeader("refresh","1");/*每一秒,重新对refresh赋值.*/ %> </body> </html> 2017年3月4日

运行效果 2017年3月4日

【例5-8】response对象应用实例2(response2.jsp和responseHandle.jsp) 本例包括两个文件:response2.jsp与responseHandle.jsp。response2.jsp页面综合使用了response对象的多个方法,点击“确定”后页面跳转到responseHandle.jsp页面,该页面根据选择的数据调用sendRedirect()方法进行页面重定向。 response2.jsp代码如下: 2017年3月4日

<%@page contentType="text/html" pageEncoding="UTF-8"%> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>response对象应用实例2</title> </head> <body> <hr> <% response.setBufferSize(10240); %> <%=response.getBufferSize()%> <br> response.setCharacterEncoding("UTF-8"); <%=response.getCharacterEncoding()%> 2017年3月4日

<form action="responseHandle.jsp" method="post"> 网站友情链接: <hr> <form action="responseHandle.jsp" method="post"> <select name="link"> <option value="qhdxcbs" selected>清华大学出版社</option> <option value="jyb" >中华人民共和国教育部</option> </select> <input type="submit" name="submit" value="确定"> </form> </body> </html> 2017年3月4日

responseHandle.jsp代码如下: <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>数据处理页面</title> </head> <body> <% String address =request.getParameter("link"); if(address!=null) { if(address.equals("qhdxcbs")) response.sendRedirect("http://www.tup.tsinghua.edu.cn/"); else response.sendRedirect("http://www.moe.edu.cn/"); } %> </body> </html> 2017年3月4日

2017年3月4日

2017年3月4日

第5章 JSP的常用内置对象 5.1 out对象 5.2 request对象 5.3 response对象 5.4 session对象 5.5 pageContext对象 5.6 exception对象 5.7 application对象 5.8 常见问题及解决方案 2017年3月4日

5.4 session对象 5.4.1 session对象的基础知识 5.4.2 session对象应用实例 2017年3月4日

5.4.1 session对象的基础知识 session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。session对象用来保存每个用户的信息,以便跟踪每个用户的操作状态。其中,session信息保存在容器里,session的ID保存在客户机的Cookie中。一般情况下,用户首次登录系统时容器会给此用户分配一个唯一的标识的session id用于区别其他的用户。当用户退出系统时,这个session就会自动消失。 2017年3月4日

当一个用户首次访问服务器上的一个JSP页面时, JSP引擎产生一个session对象,同 时分配一个String类型的ID号, JSP引擎同时将这个ID号发送到用户端,存放在Cookie 中,这样session对象和用户之间就建立了一一对应的关系。当用户再访问连接该服务器的其它页面时,不再分配给用户新的Session对象。直到关闭浏览器后,服务器端该用户的 Session对象才取消,和用户的对应关系也一并消失。当重新打开浏览器再连接到该服务器时,服务器会为该用户再创建一个新的Session对象。 2017年3月4日

getAttribute(String name):用于获取与指定名字相联系的属性,如果属性不存在,将会返回null。 session对象的主要方法如下: getAttribute(String name):用于获取与指定名字相联系的属性,如果属性不存在,将会返回null。 getAttributeNames():用于返回session对象中存储的每一个属性对象,结果集是一个Enumeration类的实例。 getCreateTime():用于返回session对象被创建时间,单位为毫秒(千分之一秒)。 getId():用于返回Session对象在服务器端的编号。每生成一个session对象,服务器为其分配一个唯一编号,以根据编号来识别session,并且正确地处理某一特定的session及其提供的服务。 2017年3月4日

getLastAccessedTime():用于返回和当前session对象相关的客户端最后发送的请求时间。 getMaxInactiveInterval():用于返回session对象的生存时间,单位为秒。 setAttribute(String name,java.lang.Object value):用于设定指定名字的属性值,并且把它存储在session对象中。 setMaxInactiveInterval(int interval):用于设置session的有效时间,单位为秒。 invalidate():用于销毁session对象,使得与其绑定的对象都无效。 removeAttribute(String name):用于删除指定的属性(包含属性名、属性值)。如果在有效时间内,用户做出了新的请求,那么服务器就会将其看作一个新的用户,此时,服务器将创建一个新的session,旧的session信息将会丢失。 isNew():用于判断目前session是否为新的Session,若是则返回ture,否则返回false。 2017年3月4日

5.4 session对象 5.4.1 session对象的基础知识 5.4.2 session对象应用实例 2017年3月4日

【例5-9】session对象应用实例1(session1.jsp) 本例实现的功能是获取页面访问次数,页面每被访问一次数值加1。 <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>session对象应用实例1</title> </head> <body> 2017年3月4日

//从session对象获取number Object obj = session.getAttribute("number"); <% int number =10000; //从session对象获取number Object obj = session.getAttribute("number"); if(obj==null){ //设定session对象的变量的值 session.setAttribute("number",String.valueOf(number)); } else { //取得session对象中的number变量 number=Integer.parseInt(obj.toString()); //统计页面访问次数 number+=1; //设定session对象的number变量值 %> 你是第<%=number%>个用户访问本网站。 </body> </html> 2017年3月4日

2017年3月4日

【例5-10】session对象应用实例2(session2.jsp) <%@page import="java.util.Date"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>session对象应用实例2</title> </head> <body> <hr> session的创建时间是:<%=session.getCreationTime()%>&nbsp <%=new Date(session.getCreationTime())%> <br> session的Id号:<%=session.getId()%> 2017年3月4日

客户最近一次访问时间是:<%=session.getLastAccessedTime()%>&nbsp <%=new java.sql. Time(session.getLastAccessedTime())%> <br> 两次请求间隔多长时间session将被取消(ms): <%=session.getMaxInactiveInterval()%> 是否是新创建的session:<%=session.isNew()?"是":"否"%> <hr> <% session.setAttribute("name", "传说中的小强"); session.setAttribute("password", "1008610001"); %> 姓名:<%= session.getAttribute("name") %> 密码:<%= session.getAttribute("password") %> 2017年3月4日

ID号:<%= session.getId() %> <br> <% session.setMaxInactiveInterval(500); %> 最大有效时间:<%= session.getMaxInactiveInterval() %> session.removeAttribute("name"); 姓名:<%= session.getAttribute("name") %> <hr> </body> </html> 2017年3月4日

2017年3月4日

【例5-11】session对象应用实例3(session3Login.jsp、shop.jsp、account.jsp) 本例包括三个文件:session3Login.jsp、shop.jsp、account.jsp。本实例模拟网上购物系统功能,客户登录(登录页面session3Login.jsp)后方可在网上购物(购物页面shop.jsp),购物完成后进行结账(结账页面account.jsp)。 session3Login.jsp代码如下: 2017年3月4日

<%@page contentType="text/html" pageEncoding="UTF-8"%> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>session对象应用实例3——登录页面</title> </head> <body> <% session.setAttribute("customer", "客户");//为customer变量传值“客户” %> <h3>请先登录后购物:</h3> <hr> <form action="shop.jsp" method="get"> 客户名:<input type="text" name="loginName"> <input type="submit" value="登录"> </form> </body> </html> 2017年3月4日

<%@page contentType="text/html" pageEncoding="UTF-8"%> shop.jsp代码如下: <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>session对象应用实例3——购物</title> </head> <body> <% String na=request.getParameter("loginName"); session.setAttribute("name",na); %> <h3>请输入想购买的商品:</h3> <hr> <form action="account.jsp" method="get"> 要购买的商品:<input type="text" name="goodsName"> <input type="submit" value="购物"> </form> </body> </html> 2017年3月4日

<%@page contentType="text/html" pageEncoding="UTF-8"%> account.jsp代码如下: <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>session对象应用实例3——结账</title> </head> <body> <% String gn=request.getParameter("goodsName"); session.setAttribute("goods",gn); String 客户=(String)session.getAttribute("customer"); String 姓名=(String)session.getAttribute("name"); String 商品=(String)session.getAttribute("goods"); %> <h3>结账信息:</h3> <hr> <%=客户%>的姓名是:<%=姓名%> <br> 你购买的商品是:<%=商品%> </body> </html> 2017年3月4日

2017年3月4日

2017年3月4日

2017年3月4日

第5章 JSP的常用内置对象 5.1 out对象 5.2 request对象 5.3 response对象 5.4 session对象 5.5 pageContext对象 5.6 exception对象 5.7 application对象 5.8 常见问题及解决方案 2017年3月4日

5.5 pageContext对象 5.5.1 pageContext对象的基础知识 5.5.2 pageContext对象应用实例 2017年3月4日

5.5.1 pageContext对象的基础知识 pageContext对象提供了对JSP页面所有的对象及命名空间的访问,如访问out对象、request对象、response对象、session对象、application对象,即使用pageContext对象获取其它内置对象中的值。 pageContext提供了对JSP页面内使用到的所有对象及名字空间的访问,提供了对几种页面属性的访问,并且允许向其它应用组件转发request对象。它的创建和初始化都是由容器来完成的。pageContext对象提供的方法可以处理与JSP容器有关的信息以及其它对象的属性。 2017年3月4日

pageContext对象的主要方法如下: setAttribute(String name,Object attribute):用于设置指定属性及属性值 setAttribute(String name,Object obj,int scope):用于在指定范围内设置属性及属性值 getAttribute(String name,int scope) :用于指定范围内获取属性的值 getAttribute(String name):用于获取指定属性的值 getOut():用于返回当前的out对象 getPage():用于返回当前的page对象 getRequest():用于返回当前的request对象 getResponse():用于返回当前的response对象 2017年3月4日

getSession():用于返回当前页面的session对象 getServletConfig():用于返回当前的config对象 getException():用于返回当前的exception对象 getServletContext():用于返回当前页application对象 findAttribute():用于按照页面、请示、会话以及应用程序范围的顺序实现对某个已经命名属性的搜索,寻找一属性,返回其属性值或null forward(java.lang.String relativeUrlPath):用于把页面重定向到另一个页面或者Servlet组件上 moveAttribute():用于删除默认页面范围或特定对象范围之中的已命名对象 release():用于释放pageContext所占资源 include(String relativeUrlPath):用于在当前位置包含另一文件 2017年3月4日

5.5 pageContext对象 5.5.1 pageContext对象的基础知识 5.5.2 pageContext对象应用实例 2017年3月4日

【例5-12】pageContext对象应用实例(pageContext.jsp) <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>pageContext对象应用实例</title> </head> <body> <h3>使用pageContext对象获取其它内置对象中的值:</h3> <hr> 2017年3月4日

request.setAttribute("name", "Java程序设计与项目实训教程 (清华大学出版社)"); <% request.setAttribute("name", "Java程序设计与项目实训教程 (清华大学出版社)"); session.setAttribute("name", "JSP程序设计技术教程 application.setAttribute("name", "Struts2+Hibernate框架技术教程 %> request对象中的值:<%=pageContext.getRequest().getAttribute("name")%> <br> session对象中的值:<%=pageContext.getSession().getAttribute("name")%> application对象中的值: <%=pageContext.getServletContext().getAttribute("name")%> </body> </html> 2017年3月4日

2017年3月4日

第5章 JSP的常用内置对象 5.1 out对象 5.2 request对象 5.3 response对象 5.4 session对象 5.5 pageContext对象 5.6 exception对象 5.7 application对象 5.8 常见问题及解决方案 2017年3月4日

5.6 exception对象 5.6.1 exception对象的基础知识 5.6.2 exception对象应用实例 2017年3月4日

5.6.1 exception对象的基础知识 exception对象用来处理JSP文件在执行时发生的错误和异常。exception对象可以配合page指令一起使用,在page指令中isErrorPage属性应设为true,否则无法编译。 通过exception对象的方法指定某一个页面为错误处理页面,把所有的错误都集中该页面进行处理,可以使得整个系统的健壮性得到加强,也使得程序的流程更加简单明晰。 2017年3月4日

getMessage():用于返回描述异常错误的提示信息。 getlocalizedMessage():用于获取本地化错误信息。 exception对象的主要方法如下: getMessage():用于返回描述异常错误的提示信息。 getlocalizedMessage():用于获取本地化错误信息。 printStackTrace():用于输出异常对象及其堆栈跟踪信息。 toString():返回关于异常的简短描述消息。 2017年3月4日

5.6 exception对象 5.6.1 exception对象的基础知识 5.6.2 exception对象应用实例 2017年3月4日

【例5-13】exception对象应用实例(exception.jsp) <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>exception对象应用实例</title> </head> <body> <h3>以下是异常信息:</h3> <hr> <% int x = 9, y = 0, z; try{ z = x / y; }catch(Exception e){ out.println(e.toString()+"<br>"); } finally{ out.println("产生了除以0的错误!"); %> </body> </html> 2017年3月4日

2017年3月4日

第5章 JSP的常用内置对象 5.1 out对象 5.2 request对象 5.3 response对象 5.4 session对象 5.5 pageContext对象 5.6 exception对象 5.7 application对象 5.8 常见问题及解决方案 2017年3月4日

5.7 application对象 5.7.1 application对象的基础知识 5.7.2 application对象应用实例 2017年3月4日

5.7.1 application对象的基础知识 application对象保存Web应用程序中公有的数据,可存放全局变量。服务器启动后自动创建application对象,此对象将一直有效,直到服务器关闭。不同用户可以对该对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此对象的访问。 application对象和session对象的区别是:在使用session对象时,各个客户端共享一个session对象,而使用Application对象时,为多个应用程序保存信息,对于一个容器而言,在同一个服务器中的JSP文件中共享一个application对象。 2017年3月4日

application对象的主要方法如下: getAttribute(String name):用于返回给定application对象的属性的值 getAttributeNames():用于以Enumeration类型返回application对象的某个属性的初始值 getServerInfo():用于返回servlet编译器的当前版本信息 getContext(String uripath):用于返回指定WebApplication的application对象 2017年3月4日

getMimeType(String file):用于返回application对象指定文件的MIME类型 getResource(String path):用于返回application对象指定资源(文件及目录)的URL路径 getServlet(String name):用于返回application对象指定的Servlet setAttribute(String name,Object obj):用于设定application对象的属性及其属性值 removeAttribute(String name):用于删除application对象属性及其属性值 log(String msg):用于指定application对象消息写入Servlet的日志文件 2017年3月4日

5.7 application对象 5.7.1 application对象的基础知识 5.7.2 application对象应用实例 2017年3月4日

【例5-14】application对象应用实例1(application1.jsp) <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>application对象应用实例1</title> </head> <body> <% //获取一个Object对象 String strNum = (String)application.getAttribute("count"); int count =0; //如果一个Object对象存在说明有用户访问 if(strNum!=null) //类型转化后值加1 count = Integer.parseInt(strNum) + 1; //人数值加1后重新对count赋值 application.setAttribute("count", String.valueOf(count)); %> 您是第<%=application.getAttribute("count")%>位访问者! </body> </html> 2017年3月4日

2017年3月4日

【例5-15】application对象应用实例2(application2.jsp) <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>application对象应用实例2</title> </head> <body> <br> JSP引擎名及Servlet版本号:<%=application.getServerInfo()%> <% application.setAttribute("name","Java程序设计与项目实训教程"); out.print(application.getAttribute("name")+"<br>"); application.removeAttribute("name"); %> </body> </html> 2017年3月4日

2017年3月4日

总结与回顾! 2017年3月4日

第5章 JSP的常用内置对象 5.1 out对象 5.1.1 out对象的基础知识 5.1.2 out对象应用实例 5.2 request对象 5.2.1 request对象的基础知识 5.2.2 request对象应用实例 5.3 response对象 5.3.1 response对象的基础知识 5.3.2 response对象应用实例 5.4 session对象 5.4.1 session对象的基础知识 5.4.2 session对象应用实例 2017年3月4日

5.5 pageContext对象 5.5.1 pageContext对象的基础知识 5.5.2 pageContext对象应用实例 5.6 exception对象 5.6.1 exception对象的基础知识 5.6.2 exception对象应用实例 5.7 application对象 5.7.1 application对象的基础知识 5.7.2 application对象应用实例 5.8 常见问题及解决方案 2017年3月4日

请复习已学知识! 预习后面章节的内容 并完成第7章项目的 部分功能! 2017年3月4日