Java开发技术.pdf_第1页
Java开发技术.pdf_第2页
Java开发技术.pdf_第3页
Java开发技术.pdf_第4页
Java开发技术.pdf_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java 开发技术 1 第一章第一章 WEB 开发基础开发基础 1.1 HTML 客户端要访问 Web 资源,需要通过浏览器发送一个 HTTP(超文本传输协议)请求, Web 服务器接收到此请求之后会调用相应的文件系统, 找到文件, 之后将信息通过 HTTP 协议返回给客户端浏览器进行显示。浏览器中所显示的信息,主要是使用 HTML 语言编 写完成的。 HTML(Hypertext Markup Language), 文本标记语言, 是用于描述网页文档的一种标记 语言,该语言是由若干标签构成,不同的标签表示不同的网页元素,当用户打开一个网 页时,由浏览器负责将这些标签解释成用户可以直接识别的网页元素。例如若要实现图 1.1 的效果,需要编写的 HTML 代码为: html 学习范例 认识 html 标签. 图 1.1 范例图 将以上代码保存成扩展名为.html 的文件,并用浏览器打开,就会显示出图 1.1 的效 果。 HTML 的标签基本都是成对出现的,需要相互嵌套完成不同的效果显示。其中最外 层的标签是,分别代表 html 网页文件的开始点和结束点。位于 之间的是两对级别平行的标签和。标 签之间的文本是用来表述头信息的,头信息不会显示在浏览器主窗口中,例如图 1.1 中 的标题栏的文字就是由嵌套在标签内的标签来描述的。标签之间的 文本内容是显示在浏览器主窗口中的,也是用户主要浏览的区域。 HTML 的每个标签根据作用的不同,分别定义了不同的属性,例如标签就有 一个 bgcolor 属性, 用来描述页面的背景颜色。 默认为白色, 如果需要更改, 就要给 bgcolor 属性赋予不同的值,如,此时页面的背景颜色就会变为黄色。不 同的标签,其所具有的属性也不相同,但每个标签都会有 id 和 name 这两个属性,这两 个属性也是开发网页文件的时候使用最多,最重要的属性。 HTML 的标签在使用上较为简单,本章节只对常用的 HTML 的标签进行简要的说明。 1.1.1 字体字体 标题文字 说明 #代表 16 中的一个数字,数字越小,字号越大;该文字独立成行。 常用属性 align 水平位置, Java 开发技术 2 样例 标题 1 标题 2 样例截图 文字 说明 用来描述一般文字的颜色,大小等属性 常用属性 align 水平位置 color 颜色 size 字体大小,取值可为:16 或-1-6 或+1+6 face 字体 样例 这是红色黑体字 样例截图 文字其它修饰效果 说明 加粗 样例 加粗 样例截图 说明 斜体 样例 斜体 样例截图 说明 下划线 样例 下划线 样例截图 说明 将文字列表显示 样例 第一步:XXXX 第二步:XXXX 样例截图 说明 上标 样例 X2 样例截图 说明 下标 样例 H2O 样例截图 Java 开发技术 3 1.1.2 图像图像 说明 用来描述图片大小等属性,此标签不是成对的 常用属性 src 图片文件所在路径和文件名 height 高度 width 宽度 样例 1.1.3 表格表格 说明 表格的最外层标签,标签内还必须嵌套、等其它标签 常用属性 align 水平位置 width 宽度 height 高度 border 边框宽度 cellpadding 表格内部空白 cellspacing 表格间隙 说明 行标签,标签内还必须嵌套标签 常用属性 align 水平位置 valign 垂直位置 width 宽度 height 高度 说明 单元格标签,每行被分割的列 常用属性 align 水平位置 valign 垂直位置 width 宽度 height 高度 rowspan 单元格所占行数 colspan 单元格所占列数 样例 1,1 1,2 1,3 2,1 2,2 rowspan=“2“ colspan=“2“ Java 开发技术 4 样例截图 1.1.4 表表单单 表单控件中的每一个标签都必须要给 name,id 属性赋值,这两个属性在进行表单数 据提交的时候,对传递表单数据、判断表单数据合法性等操作起到作用作用。 说明 表单,所有的表单控件必须要嵌入此标签内 常用属性 action 将表单数据提交的目的地址 method 表单提交方式, 取值可以是 post 或者 get, 默认为 get target 提交表单数据的时,目的地址页面的开发方式 样例 说明 单行文本框 常用属性 value 文本框里输入的文字 maxlength 文本框最大允许输入的字符个数 样例 样例截图 说明 密码框 常用属性 value 文本框里输入的文字 maxlength 文本框最大允许输入的字符个数 样例 样例截图 说明 单选按钮,只能选一项,同一组选项,name 属性的值应相同 常用属性 value 值 checked 选中项 样例 男 女 样例截图 说明 复选按钮,可多选,同一组选项,name 属性的值应相同 常用属性 value 值 checked 选中项 样例 电视 网络 报纸 样例截图 说明 按钮 Java 开发技术 5 常用属性 value 值 样例 样例截图 说明 带有提交功能的按钮 常用属性 value 值 样例 样例截图 说明 重置按钮,可将表单恢复成初始状态 常用属性 value 值 样例 样例截图 说明 重置按钮,可将表单恢复成初始状态 样例 样例截图 说明 隐藏按钮,此控件页面不显示 常用属性 value 值 样例 样例截图 说明 文本域 常用属性 cols 字符宽度 rows 行数 样例 样例截图 说明 下拉列表,内部还需嵌套标签 常用属性 size 显示数量 multiple 是否可都多选 说明 下拉选项标签 常用属性 value 值 selected 选中项 样例 1 辽宁 吉林 黑龙江 北京 样例 2 辽宁 Java 开发技术 6 吉林 黑龙江 北京 样例 1 截图 样例 2 截图 1.1.5 框架框架 说明 框架页标签,内部需要嵌套标签 常用属性 cols 左右结构的框架页 rows 上下结果的框架页 说明 框架页标签,内部需要嵌套标签 常用属性 src 框架所对应的页面地址 样例 样例截图 1.1.6 其它标签其它标签 说明 超级链接 常用属性 href 链接地址 target 链接打开方式 样例 点击跳转 样例截图 说明 段落 Java 开发技术 7 说明 换行 说明 水平横线 常用属性 size 粗度 width 宽度 样例 样例截图 1.2 JavaScript JavaScript 是一种基于对象(Object)和事件驱动(Event Driven)的脚本语言。JavaScript 可以嵌套在 Web 页面中,用来改进界面设计、验证表单、检测浏览器、创建 cookies、 执行交互行为等。 JavaScript 功能非常强大, 但语法规则较为简单, 基本的流程语句与 Java 非常相似,本节只对 JavaScript 的语法进行简要说明。 1.2.1 JavaScript 代码嵌入代码嵌入 Web 页面页面 在 Web 页面中定义 JavaScript 的相关内容,有两种方式: (1) 将 JavaScript 的代码定义在标签内。例如: / javascript 代码 (2) 将 JavaScript 的代码定义在一个扩展名为.js 的文件中,然后在 Web 页面中引用 这个.js 文件。例如: 1.2.2 JavaScript 变量的定义变量的定义 (1) 使用关键字 var 定义变量 JavaScript 的变量在定义的时候不区分数据类型,定义的时候统一使用关键字 var。 对于变量的数据类型,需要在变量使用的时候,根据使用的情况来作决定。例如: var x=3; var str=”hello”; var flag=true; (2) 省略关键字 var 定义变量 因为 JavaScript 的变量的定义只能使用关键字 var,因此这个关键字可以省略不写。 例如: x=3; str=”hello”; flag=true; (3) 变量的作用域和生命周期 在函数中声明的变量只能在函数中使用。当退出函数时,变量就会被释放。这种变 量被称为局部变量。因为每个局部变量只在各自的函数中有效,所以可以在不同的函数 中使用名称相同的局部变量。 在函数之外声明的变量称作全局变量,页面中所有的函数都可以使用全局变量。在 全局变量被声明后,它们就开始生效了。在网页被关闭后,变量才会失效。 (4) 区分大小写 JavaScript 对大小写敏感,str 和 Str 是两个不同的变量。 1.2.4 数组数组 定义数组需要用到 Array 对象,无需考虑数组的长度。数组的元素的下标从 0 开始, Java 开发技术 8 可以直接给下标为 n 的元素赋值,数组长度等于 n。例如: 数组定义 元素初始化 数组的长度 备注 一维 数组 var x=new Array(); x0=20; x2=40; 3 x1是没有赋值的 元 素 , 其 值 为 undefined var x=new Array(2); x0=20; x1=30; 2 如果有 x2=30; 这样的语句, 那么数 组的长度为 3。 var x=new Array(“AABB“,“CC“,“DDD“); 3 二维 数组 var x=new Array(); x0=new Array(); x1=new Array(); x01=20; x02=30; x03=40; x10=50; 2 行 第一行 4列 第二行 1列 每一行的列宽可以 不相同 1.2.3 运算符运算符 (1) 算术运算符 运算符 说明 样例 样例结果 运算符 说明 样例 样例结果 + 加 x=6; y=5; x+y; 11 % 取余 x=6; y=5; x+y; 1 - 减 x=6; y=5; x-y; 1 + 自增 x=6; y=x+; x=7 y=6 * 乘 x=6; y=5; x*y; 30 - 自减 x=6; y=+x; x=7 y=7 / 除 x=6; y=5; x/y; 1.2 (2) 赋值运算符 赋值运算符的运算方向是自右向左的,运算符的左侧只能是一个变量,不能是表达 式或常量。 运算符 样例 样例等价于 运算符 样例 样例等价于 = x=5; *= x*=5; x=x*5 += x+=5; x=x+5 /= x/=5; x=x/5 -= x-=5; x=x-5 %= x%=5; x=x%5 (3) 关系运算符 运算符 说明 样例 结果 运算符 说明 样例 结果 = 值是否等于 x=5; y=5; x=y; true = 大于等于 x=10; y=5; x=y; true = 值和类型 是否都相等 x=5; y=5; x=y true 大于 x=10; y=5; xy; true (4) 逻辑运算符 参与逻辑运算的只能为 true 或者 false。 运算符 说明 运算规则 样例 样例结果 y=6; x5 y=6; x5|y5 true ! 非 非 true 为 false 非 false 为 true x=5; !(x5) true x=6; !(x=5) false (5) 其它运算符 运算符 说明 样例 样例结果 + 字符串连接符 x=“ABC“; y=“XYZ“; x=x+y “ABCXYZ“ ? : 条件运算符 x=50; y=(x=60?“及格“:“不及格“) “不及格“ 1.2.4 流程控制语句流程控制语句 (1) 选择结构语句 if 语句。 语法格式 样例 形式一 if(条件) 条件成立时执行代码; var nowhour=12; var message=“; if(nowhour Jsp脚本元素 JSP 文件运行 结果 JSP 转化后的 java 和 class 文件 转化后的 java 文件源 代码 package org.apache.jsp; import javax.servlet.*; import javax.servlet.http.*; Java 开发技术 16 import javax.servlet.jsp.*; public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent private static final javax.servlet.jsp.JspFactory _jspxFactory = javax.servlet.jsp.JspFactory.getDefaultFactory(); private static java.util.Map _jspx_dependants; private javax.el.ExpressionFactory _el_expressionfactory; private org.apache.tomcat.InstanceManager _jsp_instancemanager; public java.util.Map getDependants() return _jspx_dependants; public void _jspInit() _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext().getExpre ssionFactory(); _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfi g(); public void _jspDestroy() public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException final javax.servlet.jsp.PageContext pageContext; javax.servlet.http.HttpSession session = null; final javax.servlet.ServletContext application; final javax.servlet.ServletConfig config; javax.servlet.jsp.JspWriter out = null; final java.lang.Object page = this; javax.servlet.jsp.JspWriter _jspx_out = null; javax.servlet.jsp.PageContext _jspx_page_context = null; try response.setContentType(“text/html;charset=UTF-8“); pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true); _jspx_page_context = pageContext; application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out; out.write(“rn“); out.write(“rn“); out.write(“rn“); out.write(“ rn“); out.write(“ Jsp 脚本元素rn“); out.write(“trn“); out.write(“ rn“); out.write(“ rn“); out.write(“ “); out.print(“Jsp 脚本元素示例 “); out.write(“rn“); out.write(“ rn“); out.write(“rn“); catch (java.lang.Throwable t) Java 开发技术 17 if (!(t instanceof javax.servlet.jsp.SkipPageException) out = _jspx_out; if (out != null catch (java.io.IOException e) if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); finally _jspxFactory.releasePageContext(_jspx_page_context); 2.1.1 脚本元素脚本元素 JSP 文件主要是在 HTML 标签中穿插嵌入脚本元素来实现动态效果的。 脚本元素指的 是由嵌入在中的 java 语句构成,这些语句包括声明语句、定义语句、表达式语 句、流程控制语句、注释语句等; (1) 声明语句 使用“!”进行成员变量和成员方法的声明。 语法规则: 语法解释: 用“!”所声明的变量,转化成 java 类后,被转变成类的成员变量,该变量可以 在所声明的 jsp 页面的任何地方直接调用; “ ”的内容可以省略不写; 多个同种类型的变量可以一起声明, 彼此间用 “, ” 分隔, 例如: (2) 定义语句 用来定义局部变量和内类。 语法规则: 语法解释: “ ”的内容可以省略不写; 所定义的变量为方法的局部变量, 没有默认初始值, 使用该变量之前必须先正确 初始化; JSP 文件中所定义的类都为内类。 (3) 表达式语句 表达式就是位于之间的代码。这个代码的值会被直接显示在用户浏览的界 Java 开发技术 18 面中。如下面代码用户界面显示数字 19: (4) 流程控制语句 流程控制语句即为 java 中的 if-else 语句、 switch 语句、 for 语句、 while 语句、 do-while 语句、break 语句、continue 语句,语法规则与 java 语法一致。 (5) 注释语句 java 语句中提供的单行注释/、 多行注释/* */、 文档注释/* */在 JSP 文件依然适 用,另外还提供一种隐藏注释,语法规则如下: 这种隐藏注释同样只是用来对代码进行解释说明,不参与文件的编译和运行。 2.1.2 指令元素指令元素 指令元素通常用来给 JSP 文件提供一些配置信息,如果字符集信息、缓存信息等, 另外还可用来导入外部类和外部标签等。 语法格式: (1) 页面指令 页面指令的名字为 page,该指令用来定义 JSP 文件中的全局属性,一个 JSP 文件可 以包含多条 page 指令。page 指令的属性和属性的取值说明见表 2.2。 表 2.2 page 指令相关属性一览表 属性名 说明 默认值 可供选择的值 样例 language 定义要使用的脚本语言 java java language=“java“ import 导入外部包或类,多个包或类 之间用“,“分隔 java.lang.* import=“java.util.*, java.sql.*“ session 指定该页面是否支持 session 操作 true true|false session=“false“ buffer 缓冲区大小,与 autoFlush 属 性一起使用 8kb none|Xkb buffer=“128kb“ autoFlush 值为 true 时,当缓冲区满时, 将缓冲区内容送到客户端显 示; 值为 false 时, 当缓冲区满, 出现运行时异常,表示缓冲区 溢出 true true|false info JSP 页面的描述信息,可用 servlet.getServletInfo()方法获 得 空字符串 任意字符串 info=“用户注册“ isErrorPage 值为 true 时,可以直接使用 exception 内置对象, 值为 false 时,不可以使用 false true|false isErrorPage =“true“ errorPage 定义该页面抛出异常时调用的 页面 路径或文件名 errorPage=“/error.jsp“ isThreadSafe 值为 true,表示该 JSP 页面支 持多线程处理,一个 JSP 页面 能够同时处理多个用户请求, 值为 false,一个 JSP 只能一次 true true|false isThreadSafe =“true“ Java 开发技术 19 处理一个用户请求 contentType 定义字符编码和页面响应的 MIME 类型 text/html;ch arset=iso88 59-1 contentType=“text/html;ch arset=UTF-8“ pageEncoding 定义字符编码 ISO8859-1 contentType=“UTF-8“ isELIgnored 设置JSP页面是否支持EL表达 式,false 表示支持,true 不支 持 Servlet2.3 之前默认 true isELIgnored=“false“ page 指令需要定义在页面最开始的地方, 一个 JSP 页面可以定义多个 page 指令,但 除了 import 属性之外,其余属性只能出现一次。通常在 JSP 文件的第一行,都至少会声 明一条 page 指令,来说明该页面的脚本语言,字符编码等信息,如下代码: (2) include 指令 用来引入外部文件,该指令只有一个 file 属性,用来表示需要引入的外部文件的路 径和文件名,例如: 该指令可以引入 html 文件、文本文件、inc 文件、jsp 文件,是一种编译级别的引入, 即动态的脚本代码需要编译之后才会被包含到主 jsp 文件之中,因此被引入的文件在页 面运行的时候是不会发生变化的。include 指令可以放置在主 jsp 页面的任意位置,通常 用来将主页面分成若干个显示区域,不同的区域分别导入不同的 jsp 文件。如图 2.3,就 是一个典型的管理页面,该页面被分成 4 个显示区域,在头部、左部和底部分别导入一 个 jsp 文件,这三个区域的显示内容通常是不变化的,只有页面主体区域的内容是不断 变化的。 头部:head.jsp 左部: tree.jsp 页面主体:main.jsp 底部:foot.jsp 图 2.3 分区域显示页面结构 (2) taglib 指令 该指令用来定义 JSP 页面可以使用的标签库,主要有两个属性,prefix 和 uri 分别用 来定义标签的前缀和标签文件(.tld)所在路径或地址。例如: 上面这个代码段是在 jsp 文件中通过 taglib 指令引入了 struts2(uri=“/struts-tags“)的标 签库(struts2 的内容将在第 8 章介绍),通过前缀 s(prefix=“s“)就可以在页面中使用该标签 库的功能,如代码段中的是具有 if 判断功能的标签。 Java 开发技术 20 标签为开发者提供了很多实用的功能,利用标签的这些功能,将会减轻开发时的工 作强度, 同时也会使 jsp 文件中的代码结构更清晰合理。 现在较为常用的标签主要有 JSTL 标签、struts1.x 标签和 struts2.x 标签,使用时需要额外的.jar 文件和.tld 文件支持。标签 的内容在后续章节将会陆续介绍 2.1.3 动作元素动作元素 动作元素用来完成相关处理操作,比如页面跳转、对象定义、参数传递、属性设置 等。JSP 规范中定义了若干标准动作,这些动作都是用以“ 或者 (1) param 参数传递操作 用来向文件或者地址传递参数, 它不能单独使用, 必须配合、 等操作一起使用。语法格式如下: 语法说明: 参数值全部以字符串形式传递; 一条语句只能传递一个参数, 可以多次重复使用达到传递多个参数 的目的。 (2) include 包含操作 用来在主 jsp 文件中引入外部文件, 被引入的文件可以是静态页面也可 以是动态页面。 与指令相比, 属于运行级别的文件引入, 即被引入的动态文件的内容是在页面运行时根据参数的不同动态变化的,因此执行的效 率相对要低一些。语法格式如下: 或 语法说明: page 属性的值为被引入文件相对于主 JSP 文件的相对地址和文件名; flush 属性默认为 false,但因为被包含的页面的内容是动态变化的,因此建议将 该属性的值设置为 true,实时刷新缓冲区的内容。 (3) forward 跳转操作 用来完成页面的跳转、请求转发操作。该跳转具有两个特征: 跳转的过程是在服务器端直接进行的,因此跳转之后浏览器地址栏中的信息不 变,还为跳转之前的地址; 跳转前后的两个 jsp 页面可以共享 request 数据(request 的内容在 2.2 节介绍)。 语法格式如下: Java 开发技术 21 或 语法说明: page 属性的值为跳转到的目标文件相对于主 JSP 文件的相对地址和文件名, 不能 是网址形式的地址; 用所传递的参数,在跳转之后的 jsp 页面,可以使用 java 代码 request.getParameter(“参数名“);取得。 (4) setProperty 设置 JavaBean 实例对象简单属性操作 JavaBean 是一个具有一定规范的 java 类,这个类要求必须要有无参的构造函数、每 个成员变量必须要有相应的 getter 和 setter 方法(JavaBean 的详细内容将在第 3 章介绍)。 必须要配置一起使用,具体语法规则如下: 语法说明: name 属性是必填项,其值等价于对象名; property 属性是必填项,其值是这个对象所封装的某个成员变量的名字;支持通 配符“*”的使用,表示该对象所有的属性; value 属性的值是成员变量的值,该值会通过调用 setter 方法来给对应的成员变 量的赋值。 请参考例题 2.1 理解该动作元素的使用方法。 (5) getProperty 取得 JavaBean 实例对象属性值操作 必须要配置一起使用,具体语法规则如下: 语法说明: name 属性是必填项,其值等价于对象名; property 属性是必填项,其值是这个对象所封装的某个成员变量的名字;不支持 通配符的使用; 该操作会通过调用 getter 方法来取得对应的成员变量的值, 并将值显示在用户界 面中。 请参考例题 2.1 理解该动作元素的使用方法。 (5) useBean 创建 JavaBean 实例操作 用来在 JSP 页面中创建一个 JavaBean 实例对象,并指定它的名字及作 用范围,具体语法规则如下: 或者 Java 开发技术 22 语法说明: id 属性是必填项,其值等价于对象名; scope 属性的表示该对象的使用范围(对象的使用范围请见 2.2 节介绍), 其值可以 是 page、reqest、session、application 中的任意一个,默认为“page“。 例 2.1和使用,模拟模拟一个简单学生信息的注册,有如 下类的定义: 1 package domain; 2 public class Student 3 private String id;/学号 4 private String name;/姓名 5 private String pwd;/密码 6 public String getId() 7 return id; 8 9 public void setId(String id) 10 this.id=id; 11 12 public String getName() 13 return name; 14 15 public void setName(String name) 16 =name; 17 18 public String getPwd() 19 return pwd; 20 21 public void setPwd(String pwd) 22 this.pwd=pwd; 23 24 如果要创建该类的实例对象,java 代码应该写成: 1 Student stu=new Student(); 如果要给 stu 对象的 id、name、pwd 成员变量赋值,java 代码应该写成: 1 stu.setId(“12424001“); 2 stu.setName(“张三“); 3 stu.setPwd(“123456“); 但如果要在 JSP 页面中定义该对象,给该对象的成员变量赋值,则可以使用和来完成定义和赋值的操作,代码如下: 1 2 3 4 5 代码说明: 等价于 Student stu=new Student(); 等价于 stu.setId (“12424001“); 若注册页面 registe.html 中的 html 代码如下: 1 2 学 号: 3 姓 名: 4 密 码: 5 Java 开发技术 23 6 则 registe.jsp 文件中的也可以写成如下形式: 1 2 3 代码说明: 请注意代码第 2 行与之前的不同,这里使用了通配符“*”来简化 给 stu 对象的成员的赋值操作。因为 html 代码中每个控件的名字都与 Student 类中的成 员变量名相同,因此当用户点击“注册”按钮提交数据的时候,registe.html 页面中的每 个控件的值会自动的与 stu 这个对象的同名成员相匹配,完成对应的赋值操作。 另外在 registe.jsp 文件中可以用如下代码将提交的数据显示出来,提供给用户进行 数据确认。 1 学号: 2 姓名: 3 密码: 2.2 四种属性范围四种属性范围 所谓的属性范围, 就是指某个数据经过多少个 JSP 页面转发之后依然可以继续使用。 JSP 中的属性范围总共有四种,分别是 Page(页面范围)、Request(请求范围)、Session(会话 范围)、Application(全局范围)。每一种属性范围都包含 3 个重要方法: 设置属性 public void setAttribute(String name,Object value) 参数 name 表示属性名,参数是名字为 name 的属性的值,该值可以是 任意的数据类型(Object) 取得属性 public Object getAttribute(String name) 参数 name 表示属性名,返回值是名字为 name 的属性的值,该值的数 据类型是 Object,因此在使用的时候需要注意类型转换的问题 删除属性 public void removeAttribute(String name) 参数 name 表示属性名 这四种属性分别对应四个不同的对象: 属性范围 对象名 Page pageContext Request request Session session Application application 由不同的对象分别调用设置属性、取得属性、删除属性的方法,来达到在不同范围 内进行数据传递的目的。 2.2.1 Page 范围范围 一个 JSP 页面上设置的 Page 范围内的属性只能在这个页面取得,跳转到其它页面则 此属性消失。 如图 2.4 所示, 在 a.jsp 文件中设置的 pageContext 属性 attr1, 就只能在 a.jsp 内才能取到 attr1 属性的值 value1,其它文件无法取到。 2.2.2 Request 范围范围 request 可以把属性保存在一次服务器跳转范围之中。跳转可以是用 产生的、也可以是用 语句完成的跳转。如图 2.5 所示,在 a.jsp 文件中设置的 request 属性 attr1,可以在 a.jsp 跳转之后的文件 b.jsp 内取到 attr1 属性的值 value1,其它文件无法取到。 Java 开发技术 24 a.jsp pageContext.setAttribute(“attr1“,“value1“); String values=(String)pageContext.getAttribute(“attr1“); 图 2.4 Page 范围内的属性 a.jsp request.setAttribute(“attr1“,“value1“); b.jsp String values=(String)request.getAttribute(“attr1“); 1 : 跳转() 图 2.5 Request 范围内的属性 2.2.3 Session 范围范围 Session 属性范围无论页面怎样跳转,其属性都可以保存下来,但是只针对于同一个 浏览器打开的相关页面。 如图 2.6 所示, 在 a.jsp 文件中利用 session 对象设置的属性 attr1, 可以在 a.jsp 跳转之后的文件 b.jsp、c.jsp 内取到 attr1 属性的值 value1,也可以在 b.jsp 跳转之后的文件 d.jsp 中取到该值,其它文件无法取到。即在 a.jsp 中利用 session 对象设 置的属性,可以在所有跟 a.jsp 页面相关联的页面之间传递数据,不论这种关联是直接跳 转(b.jsp、c.jsp)产生的还是间接跳转(d.jsp)产生的。因此可以把 session 的作用域理解为一 个用户访问这个网站所打开的所有页面。 a.jsp session.setAttribute(“attr1“,“values1“); b.jsp String value=(String)session.getAttribute(“attr1“); c.jsp String value=(String)session.getAttribute(“attr1“); d.jsp String value=(String)session.getAttribute(“attr1“); 图 2.6 Session 范围内的属性 2.2.4 Application 范围范围 Application 范围是指把属性设置在整个 web 服务器上, 因此所有访问这个 web 服务 器的用户都可以获取 application 所设置的属性。 如果服务器一关闭, 则所有的 application 属性都消失。但因为属性保存在服务器之上,如果此属性保存的内容过多,则肯定会直 接影响到服务器的性能,所以一般尽可能少设置 application 属性。如图 2.7 所示,用户 甲访问 a.jsp 页面时设置的 application 属性 attr1,用户乙、用户丙等都可以直接获取到 attr1 属性的值 value1。 2.2.5 通过通过 pageContext 对象设置其它范围属性对象设置其它范围属性 JSP 文件中若要设置一个 Page 范围的属性则一定要使用 pageContext 对象,实际上 对于整个 JSP 代码,所有的四种属性范围都是可以通过 pageContext 对象进行操作的,因 为 pageContext 对象中还提供以下三个操作属性的方法: Java 开发技术 25 a.jsp application.setAttribute(“attr1“,“value1“); b.jsp String values=(String)application.getAttribute(“attr1“); c.jsp String values=(String)application.getAttribute(“attr1“); 用户甲 1 : 跳转() d.jsp String values=(String)application.getAttribute(“attr1“); 用户乙 e.jsp String values=(String)application.getAttribute(“attr1“); 用户丙 图 2.6 Session 范围内的属性 设置属性 public void setAttribute(String name,Object value,int scope) 取得属性 public Object getAttribute(String name,int scope) 删除属性 public void removeAttribute (String name,int scope) 以上三个方法,均有一个整形参数(int scope)来表示该属性是属于哪个范围的,在 pageContext 对象中提供了以下几个常量用来表示不同的属性范围: public static final int PAGE_SCOPE=1; 表示 Page 范围 public static final int REQUEST_SCOPE=2; 表示 Request 范围 public static final int SESSION_SCOPE=3; 表示 Session 范围 public static final int APPLICATION_SCOPE=4; 表示 Application 范围 2.2.6 四种属性范围的使用原则四种属性范围的使用原则 JSP 的四种属性范围, 根据作用范围的大小, 其属性的值占用内存空间的时间也不相 同,如果大量属性值长时间占用内存空间,势必会影响 web 应用程序的使用效果。JSP 中最常用的就是 request 和 session 属性范围, 但对于这两种属性范围, 从占用内存时间、 影响 web 服务器效率的角度来说,能使用 request 的则不使用 session。 2.3 JSP 内置对象内置对象 JSP 编译运行环境为开发者提供了 9 种 JSP 内置对象,这些对象在.jsp 文件中不需要 定义,可以直接使用。这 9 种内置对象的简要介绍见表 2.3 所示。 表 2.3 JSP 内置对象简介 对象名 所属类型 作用说明 作用域 pageContext javax.servlet.jsp.PageContext 页面对象,封装了 jsp 页面的上下文信息 page request javax.servlet.ServletRequest 请求对象,封装了客户端请求信息;可用来进行 参数传递,页面跳转等功能 request response javax.servlet.ServletResponse 响应对象,用来响应客户端请求 page Java 开发技术 26 session javax.servlet.http.HttpSession 会话对象,封装了每个操作用户的状态等信息 session application javax.servlet.ServletContext web 应用程序全局对象,所封装的信息被访问这 个 web 应用程序的所有用户所共享 application out javax.servlet.jsp.JspWriter 输出对象,主要用来向页面上写入数据 page config javax.servlet.ServletConfig 主要用来读取web.xml文件中的servlet的配置参 数 page page java.lang.Object jsp 页面对象,相当于 java 类中的 this 对象 page exception javax.servlet.Throwable 异常对象 page 2.3.1 request 对象对象 request 对象封装了用户提交的信息, 通过调用该对象相应的方法可以获取封装的信 息,常用方法及作用见表 2.4 所示。 表 2.4 request 对象简介 方法 说明 getAttribute(String name) 获取 request 范围内以参数 name 为名字的属性值 String strName=request.getAttribute(“name“); getCookies() 返回客户端所有的 Cookie 对象,结果是一个数组 Cookie cookies=request.getCookies(); getParameter(String name) 获取表单中某个控件所提交的信息 String strName=request.getParameter(“name“); getProtocol() 获取客户使用的协议 String strProtocol=request.getProtocol(); getServletPath() 获取客户提交信息的页面的地址和文件名信息 String strServlet=request.getServletPath(); getMethod() 获取客户提交信息的方式 String strMethod=request.getMethod(); getHeade() 获取 HTTP 头文件的 accept、accept-encoding 和 Host 的值 String strHeader=request.getHeader(“accept“); getRermoteAddr() 获取客户的 IP 地址 String strIP=request.getRemoteAddr(); getRemoteHost() 获取客户机的名称 String clientName=request.getRemoteHost(); getServerName() 获取服务器名称 String serve

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论