




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JSP程序设计,本课程主要讲述内容: JSP技术基础 环境配置 HTML基础 JSP语法 JSP内置对象 JSP文件操作 JSP中访问数据库 Servlet JavaBean,需要具备的相关知识: 数据库基本知识 网络基础知识 Dreamweaver的使用 Eclipse3.2 Java语言(成为JSP高手必备) 本课程以实战为导向。课后认真自学上述相关基础知识。布置的思考与练习题目,尽可能课后认真上机实践(经济管理学院机房已经具备JSP环境)。,如何成为一个优秀的jsp程序员,、建立并且理解你的WebServer。 、保证你理解HTML。花时间学习手工写作html是很有必要的。因为你将会使用
2、JSP和HTML混合编程,精通HTML语法是重要的。所以,你必须能流利地写HTML。训练时间:24个星期。 、开始学习Java。理解Java基础是很重要的。不用担心学习Swing或Java的图形方面,因为在JSP中你不会使用这些特征。集中精力在Java工作的细节,学习Java的逻辑,也在JavaBean上花时间。学习Applet是好的,但是就象Swing,JSP的大多数应用将不使用小程序。训练时间:36个星期。,如何成为一个优秀的jsp程序员,、学习JavaScript学习怎么将JavaScript在HTML中验证输入的Form元素。也学习JavaScript怎么能在一HTML页以内修改For
3、m的元素。最后要求你能从一HTML页内的事件中触发JavaScriptFunction。训练时间:12个星期。 、学习并且理解你的WebServer的更多细节。熟悉WebServer的特征,这是很重要的。训练时间:2天。,如何成为一个优秀的jsp程序员,、建立你的JSPServer推荐以Tomcat开始。它可以很好地运行JSP程序。当你不能在生产使用Tomcat时,学习尽可能多的知识以便于更好的运行程序。另外,许多JSP程序员使用Tomcat。因此当你遇到一个问题时,你将容易发现帮助。安装时间:12天。 、开始学习JSP。基本的JSP学习通过的步骤1到步骤6可以完成,然后使用JSP对象和脚本写
4、JSP程序来联系。学习JSP的另外一个方面可以学习怎么创建一个分布式的应用程序。训练时间:46个星期。,如何成为一个优秀的jsp程序员,、学习更多的JSPserver。 没有关于更多的JSPServer当然也可以运行jsp程序。然而,许多JSPserver都由自己特殊的特征,可以让你更好的理解你的JSP工程。学习更多的Jspserver如何处理jsp程序是有必要的。同样也可以优化你的JSP应用程序,并且使之运行得更快而不出任何问题。训练时间:27天。,如何成为一个优秀的jsp程序员,、学习JDBC。JSP大多数应用将使用数据库,JDBC被用于数据库连接。经常忽略的一个事实就是,每个JDBCDr
5、iver所支持的东西是相当不同的。了解并熟悉在jsp工程上被使用的JDBCdriver的细节是很重要的。(有时这部分的学习被包含在前面Java或JSP的学习中了。)训练时间:12个星期。,到现在,你已经成为了熟练的JSP程序员。仍然有很多需要学习,你可以考虑扩展你的知识比如DHTML,XML,java证书,JSPTagLibraries或Servlets,看你想要造什么类型的网站而决定了。这些训练是JSP的核心。你不必都学习上面所有的,取决于你在工程中分配到什么任务和你已经有什么知识。但是这是成功地训练程序员的时间表。关键的单元是时间。平均的说,5个月时间确实能够训练一个人(从开始到完成)成为
6、一个对jsp熟悉程序员。5个月时间似乎很长,但要成为一个资深的WEB程序员所学的东西远远不止这一些。,本课程涉及的软件,Java开发工具包JDK1.5 Tomcat5.5.7、resin2.x Dreamweaver2004MX mySQL4.x、mySQL-Front3.1 Eclipse3.2,其它参考书籍: 1.JSP深入编程 希望电子出版社 2.网络编程语言 JSP实例教程 电子工业出版社 3.JSP/HTML编程实作教程 希望电子出版社 4.JSP程序设计指南-初级程序员的基本技能 清华大学出版社 5.JSP入门与提高清华大学出版社,第一章 配置系统环境,1。安装JDK1.5.0:h
7、ttp:/J 2。安装Tomcat5.5.7 著名的Apache Group的Jakarta小组开发()。 3。设置环境变量 JAVA_HOME:c:javajdk1.5.0 classpath:.;C:javajdk1.5.0libtools.jar;C:javajdk1.5.0libdt.jar path:%JAVA_HOME%bin;这一句放在最前面,否则eclipse启动不了,4。安装mySQL数据库、mySQL-front管理程序,MySQL是一个精巧的SQL数据库管理系统。由于它的强大功能、灵活性、以及精巧的系统结构,受到了广大自由软件爱好
8、者甚至是商业软件用户的青睐,特别是与Apache结合,为建立基于数据库的动态网站提供了强大动力!MySQL有瑞典的T.c.X公司负责开发和维护。 MySQL是一个真正的多用户、多线程SQL数据库服务器。MySQL主要目标是快速、健壮和易用。它可媲美任何昂贵的大型数据库,但速度更快。自1996年以来,许多机构一直都在使用MySQL。MySQL建立的基础是业已用在高要求的生产环境多年的一套实用例程。尽管MySQL仍在开发中,但它已经提供一个丰富和极其有用的功能集。MySQL的官方发音是“My Ess Que Ell”(不是MY-SEQUEL)。,5。安装Eclipse http:/www.ecli
9、/downloads/index.php 目前为止,大多数 Java 程序员都听说过 Eclipse,它正迅速成为最流行的 Java 编程环境。在目前所有的IDE中,Eclipse可以说是最有发展前途的产品之一。Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、RationalSoftware、RedHat及Sybase,最近Oracle也计划加入到Eclipse联盟中。 Eclipse
10、 是否与其他花钱的 IDE 一样好? 答案非常确定!对于编码、调试、重构、单元测试等等, Eclipse 可以与任何一种 IDE 匹敌,甚至比它们还要好。与昂贵的 JBuilder2005 版本相比,您可能会发现 Eclipse 对很多特性的支持都比 JBuilder 更好。,6。下载MyEclipse Eclipse插件,收费软件。使Eclipse支持EJB、JSP、Servlet等等。功能强大! 下载后安装即可。,2.1 网络计算模式计算模式:描述它们在平台上的分布以及在数据处理中之间的关系。(网络计算结构)两种模式:C/s、B/S,第二章 JSP技术概述,2.2 JSP技术介绍2.2.1
11、 Web编程技术 Web编程技术随着计算机技术的进步而不断发展。早期的web技术主要以获取静态文本、信息为主。随着互联网技术的发展,静态页面不能适应需求,动态网站技术应运而生。动态网站特性:后台数据库支持站点信息及时更新动态显示效果,补充说明: 静态网页是预先编写好的HTML文件,当浏览器访问时,WEB服务器将文件传送给浏览器,整个过程中网页内容不被改变。 HTML的表单、动态GIF图、FLASH、Applet和浏览器端脚本不等于动态网页。 动态网页可以看作是预先编写好的HTML模板文件。当浏览器访问动态网页时,WEB服务器根据一定的程序逻辑填写模板,并将最终生成的内容传送给浏览器。,常用动态
12、Web编程技术: Perl、ISAPI、ASP、ASP、ASP.net、PHP、JSP、XSP等等。 1.1.2 JSP的形式和特点 JSP为创建动态生成内容的Web页面提供了一个简捷而快速的方法,在众多Web开发工具中一枝独秀、独领风骚。 ,特点: 适用于任何平台、支持者众多 程序的执行效率高 拥有Java优势 强大的服务器组件 强大的数据库支持 Write once, run anywhere! 钱途无量的JSP! 提示:在国外,JSP+Servlet+J2EE已经成为开发电子商务的主流技术。,2.2 JSP与主流动态网页技术比较,2.3 JSP的运行环境 2.3.1 JSP运行环境需要的
13、组件 Java 2软件开发工具箱。可以在sun公司http:/J免费下载。 JSP引擎(JSP应用服务器)。Resin、Tomcat、JRun、JSWDK、Weblogic等等。,2.3.2 常见的JSP应用服务器的配置 Tomcat5.5.7的配置 著名的Apache Group的Jakarta小组开发()。 服务器主要配置:confserver.xml文件。 自己开发的网站一般放置在webapps下。 网站配置一般放在自己站点的WEB-INF/web.xml中 Resin2.1.14的配置 著名的Caucho公司的产品( Resin可以不作任何配置
14、,除非有特殊要求。,2.3.3 JSP执行过程,执行过程:,浏览器IE,Tomcat,2.3.4 JSP程序的初步体验 一个简单的JSP程序: 我的第一个JSP程序 ,1.如何配置系统环境? 2.分别用tomcat和resin作为Web服务器,配置一个自己的站点,并编写一个显示“欢迎光临本站点”的index.jsp程序。 3.如何将自己站点的默认端口设置为80? 4.站点目录能否放置在webapps以外的其它地方? 5.创建一个站点,包含admin文件夹,该文件夹下的所有文件只允许用户admin(密码:123)、deparb(密码:456)访问。 6.如何将自己站点的默认主页设置为myweb.
15、jsp?,思考与练习,第三章 HTML基础,3.1 标记基础 HTML语言是控制网页内容显示格式的标记集合,标记给浏览器提供 了格式化Web文档的指令。 1. 基本的HTML语法 在HTML语言中,所有的标记都必须用尖括号(即小于号“”)括起来。 也有一些标记只要求单一标记符号,例如换行标记。 HTML标记不区分大小写,但通常约定使用大写字母来表示,以利于 HTML文档的维护。 2. 标记符的属性 大多数标记都拥有一个属性集,通过这些属性可以对作用的内容进行 更多的控制。在HTML语言中,所有属性都放置在开始标记的尖括号内。 例如: 心想事成。,3.2 HTML文档的基本结构 一个基本的HTM
16、L文档通常包含以下三对顶级标记。 1. HTML标记. 2. 首部标记. 首部标记用于提供与Web页有关的各种信息。在首部标记中,可以使用: 和 和 和等等。,3. 正文标记. 正文标记包含了文档的内容,文字、图像、动画、超链接以及其他 HTML元素均位于该标记中。正文标记有下列属性。 (1) BACKGROUD:指定文档背景图像的URL地址,图像平铺在页背景上。 (2) BGCOLOR:指定文档的背景颜色。 (3) TEXT:指定文档中文本的颜色。 (7) ONLOAD:指定文档首次加载时调用的事件处理程序。 (8) ONUNLOAD:用于指定文档卸载时调用的事件处理程序。 颜色属性的值有两
17、种表示方法: 使用颜色名称:例如红色、绿色和蓝色分别用red、green和blue表示; 使用十六进制格式数值:#RRGGBB来表示,RR、GG和BB分别表示颜色中的红、绿、蓝三基色的两位十六进制数据。,4. HTML文档的基本结构 HTML文档的基本结构可以表示如下: 标题文字 文本、图像、动画、HTML指令等 5 添加注释 注释由开始标记构成。,3.3 设置文本格式 3.3.1 分段与换行 段落是文档的基本信息单位。将文档划分为段落,可以通过使用分段标记、换行标记、标题标记或插入水平线来实现。 1. 分段标记P 2. 换行标记BR 标记强行规定了当前行的中断,使后续内容在下一行显示。,3.
18、 标题标记Hn 其中n的取值是1到6;.标记表示字体最大的标题,标记表示字体最小的标题。 4. 水平线标记HR HR标记在文档中添加一条水平线,用来分开文档的两个部 分。该标记有以下属性: (1) ALIGN:指定线的对齐方式,取值为left(左对齐)、 center(居中对齐)或right(右对齐),默认值为center。 (2) COLOR:指定线的颜色。 (3) NOSHADE:若指定该项,则显示一条无阴影的实线。 (4) SIZE:指定线的宽度,以像素为单位。 (5) WIDTH:指定线的长度,单位可以是像素或百分比(占页 面宽度的百分比)。,3.3.2 设置段落对齐方式 使用ALIG
19、N属性来设置段落的对齐方式。 ALIGN属性的取值可以是:left(左对齐)、center(居中对齐)、right(右对齐)以及justify(两边对齐)。 3.3.3 设置字体、字号和颜色 字体标记.来设置文本的字符格式,并通过FACE、SIZE和COLOR属性来设置文本的字体、字号和颜色。 例如: 超文本标记语言,3.3.4 设置字符样式 .粗体 .大字体 .斜体 .删除线 .小字体 .删除线 .上标 .下标 .固定宽度字体 .下划线,3.3.5 插入特殊字符 可以使用两种方式来输入特殊符号:即使用字符实体名称或数字表示方式。 例如,若要在网页中输入一个无间断空格,可以输入“ if(the
20、Num=null|theNum.length=0) return false; if theMask.indexOf(theNum)=-1) return false; return true; ,示例2 检查输入是否为空4.3.2 检查输入是否为空(包括空格)function isEmail(theEmail) var email=theEmail;email=email.replace(/(s*)|(s*$)/g, );if (email=) alert(“请输入您的Email地址,地址不能为空!); return false;注意:如何实现光标自动定位?,示例3 电子邮件地址格式的确认
21、function isEmail(theEmail) var email=theEmail; email=email.replace(/(s*)|(s*$)/g, ); if (email=) alert(“请输入您的Email地址,地址不能为空!); return false; if (email!= ) var notValid=false; var useremail=email; if (useremail.indexOf()=0) notValid=true; if (useremail.charAt(useremail.length -1)=) notValid=true; if
22、(useremail.indexOf(.)=0|useremail.indexOf(.)=useremail.indexOf() notValid=true; if (useremail.indexOf(.)=useremail.indexOf()+1) notValid=true; if (useremail.indexOf(.)=(useremail.length -1) notValid=true; if (notValid) alert(您的Email地址不正确,请重新输入!); return (false); ,思考与练习:1.如何实现不规则表格?2.如何使用表单提交进行客户端确认?
23、,4.1.1 开始和结束标记 以结尾,格式: 例如: 4.1.2 注释 注释是帮助自己或别人阅读程序。注释可以有两种形式,HTML注释、JSP注释。 HTML注释:,第四章 JSP语法基础 4.1 JSP基本语法规则,HTML注释: 注释的内容会在客户端的HTML源代码中出现。例如: JSP注释 客户端查看源代码时看不到(安全考虑)。格式: 示例:, 用户留言 ,4.1.3 基本数据类型 1)整型 三种形式:十进制、八进制(0开头)、十六进制(0 x开头)。具体类型如下: byte类型 有符号,范围-128127。例如: byte a,b=12; short类型(很少使用) 有符号,范围-32
24、76832767。例如: short d,e234; int类型 有符号,范围-2147483684 2147483683。例如: int x,y=12;,long类型 有符号,范围-264 264-1。例如: long x,y=-0 x12; 2)实型 Float类型(单精度) 例如:float x,y123.56; double类型(双精度) 例如:float x,y123.56; 3)布尔型boolean 只有true和false两种值 例如:boolean x,y,zfalse; 3)字符型char 用单引号括起来。例如:char xx123;,思考:char rtnn;表示什么? 4
25、)字符串型String 用双引号括起来的一串字符。例如: String myStr=“xyz”; 注意:是对象,而非数据!有以下重要方法: length()、 boolean equals(String str) String substring(int beginIndex) String substring(int beginIndex, int endIndex) boolean startsWith(String prefix) int indexOf(String str) 向后 int indexOf(String str, int fromIndex) 向后,String toL
26、owerCase() String toUpperCase() String trim() String replaceAll(String regex, String replacement) 该方法用字符串replacement的内容替换当前字符串中遇到的所有和字符串regex相一致的子串,并将产生的新字符串返回。 思考:如何判断一个字符串是否是一个合法的email地址?,4.1.4 运算符 关系运算符 用来比较两个值,并返回布尔型的值true或false。,布尔逻辑运算符 进行布尔逻辑运算,包括 boolean z=(x78);,算术运算符 进行加、减等运算。,int i=6,j,k,s
27、; k=(j=+i) ; i,j,k=? s=(j=i-) ; i,j,s=?,三目条件运算符 格式: x ? y:z; 上面的三目条件运算的规则是:先计算表达式x的值,若x为真,则整个三目运算的结果是表达式y的值;若x为假,则整个三目运算的结果是表达式z的值。 下面的例子实现了从两个数中找出较大的数的功能。 int a=3,b=4; int max=ab?a:b; 三目条件运算是可以嵌套的,如有以下的语句,则max表示的是a、b、c三个数中的最大值,其值为5。 int a=3,b=4,c=5; int max=(ab ? a:b)c ? (ab?a:b):c;,4.2 JSP声明,1、格式:
28、 例如: 2、 JSP表达式和程序段 Jsp表达式的语法形式: 例如: 数值为: Jsp程序段 包含在之间的有效程序段。具体形式: 例如: ,4.3.1结构化程序设计的三种基本流程 1自顶向下 2逐步求精 3模块化 除了以上的原则,结构化程序设计还有一个重要的规定,那就是只能使用“顺序结构”、“选择结构”、“循环结构”这三种基本结构(或由它们派生出来的结构)来定义程序的流程。 三种基本流程控制结构示意图分别如图3-1所示。,4.3 JSP流程控制语句,4.3.2 选择结构 选择结构又称为分支结构,是在两种或两种以上的多条执行路径中选择一条执行的控制结构。 1ifelse语句 if(条件表达式)
29、 语句组1; else 语句组2; ,在ifelse语句中,else部分是选择性的。经常可以看到只有if语句,而没有else语句的情况。在这种情况下,当测试条件为假时如不需做任何事,else部分可被省略。这时,其语法形式如下: if(条件表达式) 语句组; 思考:求3个数中的最大者?,2switch语句 switch语句(又称开关语句)是和case语句一起使用的,其功能是根据某个表达式的值在多个case引导的多个分支语句中选择一个来执行。它的一般格式如下:switch(表达式) case 判断值1:语句块1 case 判断值2:语句块2 case 判断值n:语句块n default:语句块n+
30、1 ,switch后面括号中表达式的值必须是符合byte,char,short,int类型的常量表达式,而不能用浮点类型或long类型,也不能为一个字符串。 一个switch语句可以代替多个ifelse语句组成的分支结构,而switch语句从思路上显得更清晰。 float a=9,b=3,result=0; char op=+; switch(op) case +:result=a+b; case -: result=a-b; case *:result=a*b; case /: result=a/b; default:result=0; out.println(result=+result)
31、;,4.3.3 循环结构 循环结构是程序中一种重要的基本结构,是指在一定的条件下反复执行某段程序,被反复执行的这段程序称为“循环体”。 Java中有三种语句来实现循环结构,分别是while,do-while和for语句。,1while语句 while语句的格式如下: while(条件表达式) 循环体语句; 例:用while语句计算10! int n=10; long result=1; while(n=1) result*=n-; /改写该语句? out.println(10!=+result);,2do-while语句 do-while语句的格式如下: do 循环体语句; while(条件表
32、达式) 例:用do-while语句计算10的阶乘 int n=10; long result=1; do result*=n-; while(n=1); System.out.println(10!=+result);,3for语句 for(表达式1;表达式2;表达式3) 循环体语句; for语句的执行过程: (1)在循环刚开始时,先计算表达式1。 (2)根据表达式2的值来决定是否执行循环体。表达式2是一个返回布尔值的表达式,若该值为假,将不执行循环体,并退出循环;若该值为真,将执行循环体。 (3)执行完一次循环体后,计算表达式3。 (4)转入第(2)步继续执行。,例1:int n; long
33、 result; for(n=10,result=1;n0;n-) result*=n; out.println(10!=+result); 例2: for (i=0; i2; i+) for(j=0; j2; j+) for(k=0; k2; k+) out.print(i+ +j+ +k); out.println(); ,4.3.4 跳转语句 跳转语句用来实现循环执行过程中的流程转移。有两种跳转语句:break语句和continue语句。 其中,break用于强行退出循环,不执行循环中剩余的语句。而continue则停止执行当前的循环,开始新的循环。 int n; for(n=1;n=1
34、0;n+) if (n%2=0) break; /修改为continue结果如何? out.println(n=+n); ,4.3.5 异常处理语句 当发生例外时,采用异常处理机制。Java采用try-catch-finally结构处理错误。 try-catch的实际意思是:尝试这块可能导致异常的代码。如果它执行正常,那么继续执行下面的程序。如果该代码无法执行,捕获该异常并对它进行处理。 基本形式: try /程序块 catch(ExceptionType e) /对ExceptionType的处理,例如: try File cf=new File(“c:/incfiles/counter.t
35、xt); catch (Exception e) out.println(“无法找到文件!); 假定在你的代码中有一些动作,不管发生什么情况,无论异常是否被抛出,你都必须执行这些操作。则需要使用finally子句。,例如: try readTextfile(); catch (IOException e) out.println(”该文件不存在!”); finally closeTextfile(); 总结一下try-catch-finally结构的形式: try /程序块 catch(ExceptionType e) /对ExceptionType的处理 finally /必须处理的程序语句
36、 ,4.4 结合使用JSP和HTML,JSP程序中除了普通HTML代码外,还可以嵌入Java程序代码,二者可以混合使用。 例如: 示例 数值为: 思考:如何利用JSP语句输出斜体的“武汉科技学院”?,思考与练习:1.JSP注释与HTML注释的差异?2.JSP中如何输出HTML标记? 3. 试说明异常机制?,第五章 JSP的页面元素5.1 JSP指令5.2 JSP动作语法,5.1 JSP指令1. Page指令,“Page”指令用于定义JSP文件中的全局属性。 % page language=java import=package.class | package.*,. session=true
37、| false buffer=none | 8kb | sizekb contentType= charset=characterSet| text/html ; charset=ISO-8859-1 isErrorPage=true | false , 武汉科技学院毕业生就业指导服务中心 ,特别说明:页面缓存,缓存是一种用于提高系统性能节省操作时间的技术,数据库产品利用它可以提高系统的吞吐率,服务器利用它可以提高性能。缓存是将响应内容临时保存在服务器的内存中,然后在请求处理完毕之后发回给所调用的浏览器。在Web应用程序中,提高系统性能最有效的手段是在需要时缓存页面的输出。 在JSP页面最好使
38、用输出缓存功能。缓存设置方法: 采用JSP标记 通常情况下,默认缓存大小为8KB。缓存设置格式: 在大多数Web应用程序中,缓存大小至少应为32kb,牺牲这么一点额外的内存是很值得的。,2.include指令,include:向当前页中插入一个静态文件的内容。格式如下: ,示例: 武汉科技学院毕业生就业指导服务中心 ,3. taglib指令,JSP语法 用于引入定制标签库,taglib指令,属性 1uri=URIToTagLibrary Uniform Resource Identifier (URI)根据标签的前缀对自定义的标签进行唯一的命名,URI可以是以下的内容: Uniform Res
39、ource Locator (URL), 由 RFC 2396 定义, 可以从以下位置查看 (http:/www.hut.fi/u /jkorpela/rfc/2396/full.html)。 Uniform Resource Name (URN), 由 RFC 2396定义 一个相对或绝对的路径 可以是标签库描述文件,2prefix=tagPrefix 表示标签在JSP中的名称。 在自定义标签之前的前缀,比如,在中的public,如果这里不写public,那么这就是不合法的。请不要用jsp, jspx, java, javax, servlet, sun, 和sunw做为你的前缀,这些已被S
40、un公司声明保留。,示例:武汉科技学院毕业生就业指导服务中心,5.2 JSP动作语法1. 2. 3. ,1. ,JSP 语法格式如下: 1 / 2 / (“”指可以有多个“”标记。),1、page=relativeURL | 这里是一个表达式或是一个字符串用于说明你将要定向的文件或URL。这个文件可以是JSP,程序段,或者其它能够处理request对象的文件(如asp,cgi,php)。,2 / 向一个动态文件发送一个或多个参数,这个文件必须是动态文件。如果想传递多个参数,可以在一个JSP文件中使用多个“”;“name”指定参数名,“value”指定参数值。,例子, test ,forward
41、To.jsp, ,运行结果(TOMCAT),2.包含一个静:态或动态文件. 常用格式如下: 思考:何时使用,何时使用?,3. 在介绍JavaBean时再讨论,思考与练习:1) 掌握文件包含。2)制作一个申请免费email的表单,要求填写:用户名、密码、确认密码、性别、地址,其中性别用单选按钮,用户名、密码为必填项且不能为空。请用客户端确认实现上述功能。3) 上道题目中用户填写的内容显示在屏幕上。4)编写一个程序,验证用户输入的email地址是否正确(使用客户端确认)。5)编写一个用户登录的jsp网页,若用户名为aaa,密码为bbb,则显示欢迎该用户访问的字样,否则显示非法用户。要求使用服务器端
42、确认。6)理解缓存的使用。,第六章 JSP的内建对象request 请求对象response 响应对象session 会话对象application应用程序对象out 输出对象,1.out,“out” 对象代表了向客户端发送数据的对象。 out.print() out.println(); out.close(),out的使用例如:out.println(“武汉”);思考:如何输出一个换行,或者斜体的aaa?,2. request,用于获取客户端的输入信息。主要有以下方法: getParameter(String name)(很重要) 获得客户端传给服务器端的参数值 String usrmer
43、equest.getParameter(“username”); getRequestURI() 获得所请求的URL地址,getServerName()获得服务器名称getRemoteUser()获得登录用户名getServerPort()获得服务器提供HTTP服务的端口号getRemoteAddr() (很重要)获得客户端的IP地址。getRemoteHost()获得客户端计算机名称。一般为IP地址,同上,request对象示例, 姓名 ,request对象示例(Hello_req.jsp, 你好, , 今天是 号,星期 ,request对象示例(输出结果), 你好, 独孤求败, 今天是 9
44、号,星期1 ,3. response对象,用于处理HTTP信息。有以下方法: setHeader(String name, String value) 发送HTTP信息,控制客户端和服务器端连接。例如: Response.setHeader(“Location”,”); Response.setHeader(“Refresh”,”2”); sendRedirect(String url) response.senRedirect(“”);,4. session对象,“session” 对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹
45、跟踪等。“session” 对象建立在cookie的基础上,所以使用时应注意判断一下客户端是否打开了cookie。常用的方法包括getId、 getValue、 getValueNames和putValue等。,session对象,说明: HTTP是无状态(stateless)协议; Web Server 对每一个客户端请求都没有历史记忆; Session用来保存客户端状态信息; 由Web Server 写入; 存于客户端; 客户端的每次访问都把上次的session记录传递给Web Server; Web Server读取客户端提交的session来获取客户端的状态信息;,理解session:
46、session 对象代表服务器与客户端所建立的会话。当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。例如:在网上商店站点,你做出的每一个购买决定都会放入购物车,他将收集你要购买的商品,以便一次性付钱。即使浏览了几百个网站,订购了数十商品,购物车也能记住你想购买的所有商品。这是因为WEB应用程序有能力记录跟踪会话。记住:每个用户都有自己的session,Session的常用方法: setAttribute(参数名,参数值):设置指定name的属性值value,并存储在session中。 例如:session.setAttribute(“myname”,”tom”
47、); getAttribute(参数名):获取与参数名相联系的属性值。 例如: session.getAttribute(“myname”); removeAttribute(参数名):删除与指定参数名相联系的属性。 例如:session.removeAttribute(“myname”); 应用:可以在同一个网站的不同页面之间共享信息。,session对象示例(Form表单Logon_session.html), 姓名 ,session对象示例Logon_session.jsp, 你的名字已经写入session check ,session对象示例(Check_session.jsp), 您
48、还未登录 已经登录 ,5. application对象,“application” 对象负责提供应用程序在服务器中运行时的一些全局信息,常用的方法有getMimeType和getRealPath等。application对象负责提供应用程序在服务器中运行时的一些全局信息。 setAttribute(参数名,参数值) 例如: application.setAttribute(counter,1); getAttribute(参数名) 例如: application.getAttribute(counter); 应用:application 对象可以用于网站访问量,或者在线用户的统计等功能。,ap
49、plication对象实现网页计数器, 网页计数器 您是第位访问者! ,运行结果(第一次访问),刷新一次,config、 page、 exception,“config” 对象提供一些配置信息,常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。 “page” 对象代表了正在运行的由JSP文件产生的类对象,不建议一般读者使用。 “exception” 对象则代表了JSP文件运行时所产生的例外对象,此对象不能在一般JSP文件中直接使用,而只能在使用了“”的JSP文件中使用,思考与练习,编写用户登录程序,根据登录用户的不同,
50、显示不同页面。 编写网站计数器。 利用session编写购物车程序。,第七章 JSP中访问文件,7.1文件操作 7.2 Cookie的管理 7.3文件上传的实现,7.1文件操作,1。File文件对象 File是java.io包的一部分,它代表一个文件或文件夹的引用。格式: File(String) 创建一个File对象,如果没有指定文件名,则创建一个文件夹。例如: File myfile=new File(“d:counter.txt”); 常用方法:exists()、delete()、mkdir(),2。读取文本文件 FileReader 读取字符流,逐个字符读取,格式: FileReade
51、r txt=new FileReader(文件名) 例如: FileReader txt=new FileReader(“counter.txt”),BufferedReader 读取字符输入流,一次读取一行,格式: BufferedReader buff=new BufferedReader(Reader); 例如: BufferedReader buff=new BufferedReader(new FileReader(“counter.txt”); buff.close(); 注意: BufferedReader读取字符输入流,并高效率的缓存起来。,3。写入文本文件 BufferedW
52、riter写入一个带缓冲的字符流。格式: BufferedWriter(FileWriter) 例如: File tmpf=new File(“d:xy.txt”); BufferedWriter outf = new BufferedWriter(new FileWriter(tmpf); outf.write(“123”); outf.close();,文件操作示例,try String filestr=“d:/counter.dat; BufferedReader buff=new BufferedReader(new FileReader(filestr); long tmp; Str
53、ing line; line=buff.readLine(); tmp=Long.parseLong(line); tmp+;,Long tmpint=new Long(tmp); context.setAttribute(visitor,tmpint); String counter=tmpint.toString(); File tmpf=new File(filestr); BufferedWriter outf = new BufferedWriter(new FileWriter(tmpf); outf.write(counter); outf.close(); buff.close
54、(); catch (Exception e) System.err.println(无法更新计数器:+e); ,4。文件输入流,流(Stream)是一个将数据从一个地方运送到另一个地方的一个对象。输入流格式: FileInputStream inStream=new FileInputStream(String); 例如: FileInputStream inStream=new FileInputStream(“d:mylet.zip”);,5。输出流,OutputStream toClient = response.getOutputStream(); 例如: OutputStream
55、toClient = response.getOutputStream(); toClient.flush(); toClient.close();,流的应用示例文件下载的实现,package bysservlet; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class download extends HttpServlet private static final String CONTENT_TYPE = text/html; charset=GB2312;,public v
56、oid service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException response.setBufferSize(20000); /有什么作用? PrintWriter out = response.getWriter(); response.setContentType(CONTENT_TYPE); request.setCharacterEncoding(GBK); /下载路径 String filepath = request.getParam
57、eter(fpath); if (filepath = null) filepath = ; /文件名称 String filename = request.getParameter(fname); if (filename = null) filename = ; ,String dirName=getServletContext().getRealPath(/+filepath); java.io.File ff=null; String dd=dirName+System.getProperties().getProperty(file.separator)+filename; try
58、ff=new java.io.File(dd); catch(Exception e) out.println(“出错!”); ,if (ff!=null ,7.2 Cookie的管理,Cookie是服务器在用户硬盘上存放的信息。 1。创建Cookie Cookie myCookienew Cookie(“cookieName”,”cookieValue”); Response.addCookie(myCookie); 例如: Cookie vnamenew Cookie(“usrname”,”Tom”); response.addCookie(vname);,2。获取Cookie Cookie cookies=request.getCookies(); 然后调用Cookie的getName()获取Cookie的key,调用getValue()获取Cookie的Value。例如: Cookie mycookie=request.getCookies(); for(Int i=0;i mycookie.length;I+) out.println(”Cookie的名称:”+ mycookiei.getName() ); out.println(”Cookie的值:”+ mycookiei.getValue() ); ,7.3文件上传的实现,文件上传在web应用中非常普遍
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025建筑外墙涂料施工合同2
- 2025商业店铺买卖合同协议范本
- 2025天津全日制用工劳动合同
- 《评估你的品德》课件
- 洛阳师范学院《高等混凝土结构理论及应用》2023-2024学年第二学期期末试卷
- 天津石油职业技术学院《中古文学经典鉴赏》2023-2024学年第一学期期末试卷
- 伊春职业学院《建筑空间设计》2023-2024学年第二学期期末试卷
- 天津和平区天津市双菱中学2025届初三下学期语文试题模拟试题含解析
- 台州职业技术学院《动物分子生物技术》2023-2024学年第二学期期末试卷
- 沈阳化工大学《岭南文化》2023-2024学年第一学期期末试卷
- T-CITSA 20-2022 道路交叉路口交通信息全息采集系统通用技术条件
- 护士行为规范及护理核心制度
- 在核心素养指导下高中主题班会课的作用
- 中石化在线测评题库
- 跨学科护理合作模式
- 护理临床带教老师
- 当妈是一种修行
- 机械设备润滑油基础知识(二)
- 妇幼保健院灾害脆弱性分析表
- 管理能力测试题大全
- 血锂异常健康宣教
评论
0/150
提交评论