JSP程序设计课件_第1页
JSP程序设计课件_第2页
JSP程序设计课件_第3页
JSP程序设计课件_第4页
JSP程序设计课件_第5页
已阅读5页,还剩190页未读 继续免费阅读

下载本文档

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

文档简介

JSP程序设计本课程主要讲述内容:JSP技术基础环境配置HTML基础JSP语法JSP内置对象JSP文件操作JSP中访问数据库ServletJavaBean需要具备的相关知识:数据库基本知识网络基础知识Dreamweaver的使用Eclipse3.2Java语言(成为JSP高手必备)

本课程以实战为导向。课后认真自学上述相关基础知识。布置的思考与练习题目,尽可能课后认真上机实践(经济管理学院机房已经具备JSP环境)。如何成为一个优秀的jsp程序员3、学习

JavaScript

学习怎么将

JavaScript在HTML中验证输入的Form元素。也学习

JavaScript怎么能在一

HTML

页以内修改Form的元素。最后要求你能从一

HTML

页内的事件中触发

JavaScript

Function。

训练时间:1~

2

个星期。4、学习并且理解你的Web

Server的更多细节。

熟悉Web

Server的特征,这是很重要的。

训练时间:2

天。如何成为一个优秀的jsp程序员5、建立你的

JSP

Server

推荐以Tomcat开始。它可以很好地运行JSP程序。当你不能在生产使用Tomcat时,学习尽可能多的知识以便于更好的运行程序。另外,

许多

JSP

程序员使用Tomcat。因此当你遇到一个问题时,你将容易发现帮助。

安装时间:1~

2

天。6、开始学习

JSP

基本的

JSP

学习通过的步骤

1到步骤6可以完成,

然后使用

JSP

对象和脚本写

JSP

程序来联系。学习

JSP

的另外一个方面可以学习怎么创建一个分布式的应用程序。

训练时间:4

6

个星期。如何成为一个优秀的jsp程序员7、学习更多的

JSP

server。

没有关于更多的

JSP

Server当然也可以运行jsp程序。然而,

许多

JSP

server都由自己特殊的特征,可以让你更好的理解你的JSP

工程。

学习更多的Jsp

server如何处理jsp程序是有必要的。同样也可以优化你的

JSP

应用程序,并且使之运行得更快而不出任何问题。

训练时间:2

7

天。

到现在,你已经成为了熟练的

JSP

程序员。仍然有很多需要学习,你可以考虑扩展你的知识比如

DHTML

XML

,java证书,

JSP

Tag

Libraries

Servlets

,

看你想要造什么类型的网站而决定了。

这些训练是JSP

的核心。你不必都学习上面所有的,

取决于你在工程中分配到什么任务和你已经有什么知识。但是这是成功地训练程序员的时间表。关键的单元是时间。平均的说,

5

个月时间确实能够训练一个人

(

从开始到完成

)

成为一个对jsp熟悉程序员。5

个月时间似乎很长,但要成为一个资深的WEB程序员所学的东西远远不止这一些。本课程涉及的软件Java开发工具包JDK1.5Tomcat5.5.7、resin2.xDreamweaver2004MXmySQL4.x、mySQL-Front3.1Eclipse3.2其它参考书籍:1.《JSP深入编程》希望电子出版社2.《网络编程语言JSP实例教程》电子工业出版社3.《JSP/HTML编程实作教程

》希望电子出版社4..《JSP程序设计指南--初级程序员的基本技能》清华大学出版社5.《JSP入门与提高》清华大学出版社

4。安装mySQL数据库、mySQL-front管理程序MySQL是一个精巧的SQL数据库管理系统。由于它的强大功能、灵活性、以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业软件用户的青睐,特别是与Apache结合,为建立基于数据库的动态网站提供了强大动力!MySQL有瑞典的T.c.X公司负责开发和维护。MySQL是一个真正的多用户、多线程SQL数据库服务器。MySQL

主要目标是快速、健壮和易用。它可媲美任何昂贵的大型数据库,但速度更快。自1996年以来,许多机构一直都在使用MySQL。MySQL建立的基础是业已用在高要求的生产环境多年的一套实用例程。尽管MySQL仍在开发中,但它已经提供一个丰富和极其有用的功能集。MySQL的官方发音是“MyEssQueEll”(不是

MY-SEQUEL

)。5。安装Eclipse

目前为止,大多数Java™程序员都听说过Eclipse,它正迅速成为最流行的Java编程环境。在目前所有的IDE中,Eclipse可以说是最有发展前途的产品之一。Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、Rational

Software、Red

Hat及Sybase,最近Oracle也计划加入到Eclipse联盟中。Eclipse是否与其他花钱的IDE一样好?答案非常确定!对于编码、调试、重构、单元测试等等,Eclipse可以与任何一种IDE匹敌,甚至比它们还要好。与昂贵的JBuilder2005版本相比,您可能会发现Eclipse对很多特性的支持都比JBuilder更好。6。下载MyEclipseEclipse插件,收费软件。使Eclipse支持EJB、JSP、Servlet等等。功能强大!下载后安装即可。..用户..用户..用户...WEB服务器数据库服务器ODBC/JDBC数据请求返回数据数据请求返回数据Lan连接HTTP连接2.2JSP技术介绍

2.2.1Web编程技术

Web编程技术随着计算机技术的进步而不断发展。早期的web技术主要以获取静态文本、信息为主。随着互联网技术的发展,静态页面不能适应需求,动态网站技术应运而生。动态网站特性:

后台数据库支持

站点信息及时更新

动态显示效果

补充说明:静态网页是预先编写好的HTML文件,当浏览器访问时,WEB服务器将文件传送给浏览器,整个过程中网页内容不被改变。HTML的表单、动态GIF图、FLASH、Applet和浏览器端脚本不等于动态网页。动态网页可以看作是预先编写好的HTML模板文件。当浏览器访问动态网页时,WEB服务器根据一定的程序逻辑填写模板,并将最终生成的内容传送给浏览器。特点:适用于任何平台、支持者众多程序的执行效率高拥有Java优势强大的服务器组件强大的数据库支持Writeonce,runanywhere!钱途无量的JSP!提示:在国外,JSP+Servlet+J2EE已经成为开发电子商务的主流技术。2.2JSP与主流动态网页技术比较2.3JSP的运行环境2.3.1JSP运行环境需要的组件Java2软件开发工具箱。可以在sun公司免费下载。JSP引擎(JSP应用服务器)。Resin、Tomcat、JRun、 JSWDK、Weblogic等等。2.3.3JSP执行过程执行过程:浏览器IETomcat2.3.4JSP程序的初步体验一个简单的JSP程序:<%@pagecontentType="text/html;charset=gb2312"language="java"errorPage=""%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>我的第一个JSP程序</title></head><body><%out.println(“Helloworld!”);%></body></html>3.2HTML文档的基本结构 一个基本的HTML文档通常包含以下三对顶级标记。1.HTML标记<HTML>...</HTML>2.首部标记<HEAD>...</HEAD> 首部标记用于提供与Web页有关的各种信息。在首部标记中,可以使用:<TITLE>和</TITLE><STYLE>和</STYLE><SCRIPT>和</SCRIPT>等等。3.正文标记<BODY>...</BODY> 正文标记包含了文档的内容,文字、图像、动画、超链接以及其他HTML元素均位于该标记中。正文标记有下列属性。(1)BACKGROUD:指定文档背景图像的URL地址,图像平铺在页背景上。(2)BGCOLOR:指定文档的背景颜色。(3)TEXT:指定文档中文本的颜色。(7)ONLOAD:指定文档首次加载时调用的事件处理程序。(8)ONUNLOAD:用于指定文档卸载时调用的事件处理程序。颜色属性的值有两种表示方法:使用颜色名称:例如红色、绿色和蓝色分别用red、green和blue表示;使用十六进制格式数值:#RRGGBB来表示,RR、GG和BB分别表示颜色中的红、绿、蓝三基色的两位十六进制数据。4.HTML文档的基本结构HTML文档的基本结构可以表示如下:<HTML><HEAD><TITLE>标题文字</TITLE><HEAD><BODY>文本、图像、动画、HTML指令等</BODY></HTML>5添加注释 注释由开始标记<!--和结束标记-->构成。3.3设置文本格式3.3.1分段与换行 段落是文档的基本信息单位。将文档划分为段落,可以通过使用分段标记、换行标记、标题标记或插入水平线来实现。1.分段标记P2.换行标记BR<BR>标记强行规定了当前行的中断,使后续内容在下一行显示。3.标题标记Hn其中n的取值是1到6;<H1>...</H1>标记表示字体最大的标题,<H6>…</H6>标记表示字体最小的标题。4.水平线标记HR HR标记在文档中添加一条水平线,用来分开文档的两个部分。该标记有以下属性: (1)ALIGN:指定线的对齐方式,取值为left(左对齐)、center(居中对齐)或right(右对齐),默认值为center。 (2)COLOR:指定线的颜色。 (3)NOSHADE:若指定该项,则显示一条无阴影的实线。 (4)SIZE:指定线的宽度,以像素为单位。 (5)WIDTH:指定线的长度,单位可以是像素或百分比(占页面宽度的百分比)。3.3.2设置段落对齐方式 使用ALIGN属性来设置段落的对齐方式。ALIGN属性的取值可以是:left(左对齐)、center(居中对齐)、right(右对齐)以及justify(两边对齐)。3.3.3设置字体、字号和颜色 字体标记<FONT>...</FONT>来设置文本的字符格式,并通过FACE、SIZE和COLOR属性来设置文本的字体、字号和颜色。例如:<FONTFACE="楷体_GB2312,仿宋_GB2312,宋体">超文本标记语言</FONT>3.3.4设置字符样式<B>...</B> 粗体

<BIG>...</BIG> 大字体 <I>...</I> 斜体

<S>...</S> 删除线 <SMALL>...</SMALL> 小字体<STRIKE>...</STRIKE> 删除线<SUP>...</SUP> 上标<SUB>...</SUB> 下标<TT>...</TT> 固定宽度字体<U>...</U> 下划线3.3.5插入特殊字符可以使用两种方式来输入特殊符号:即使用字符实体名称或数字表示方式。例如,若要在网页中输入一个无间断空格,可以输入“ ”或“ ”,等等。表2.3列出了常用特殊符号的实体名称或数字表示。3.4使用图像 使用IMG标记在网页中插入一个图像。1.SRC和ALT属性IMG标记有许多属性,其中最常用的是SRC和ALT属性SRC属性给出图像文件的URL地址,图像可以是JPEG文件、GIF文件或PNG文件。ALT属性给出图像的简单文本说明。2.指定图像的高和宽当使用IMG标记在网页中插入一个图像时,可以通过HEIGHT和WIDTH属性来设置图像的高度和宽度3.5使用字幕和背景音乐3.5.1插入字幕

<MARQUEE>要滚动显示的文本信息</MARQUEE>MARQUEE标记的主要属性有:(1)ALIGN:指定字幕与周围文本的对齐方式,其取值可以是top、middle或bottom。(2)BEHAVIOR:指定文本动画的类型,其取值可以是scroll、slide或alternate。(3)BGCOLOR:指定字幕的背景颜色。(4)DIRECTION:指定文本的移动方向,其取值可以是down、left、right或up。(5)HEIGHT:指定字幕的高度,以像素或百分比为单位。(6)HSPACE:整数,指定字幕的外部边缘与浏览器窗口之间的左右边距(像素)。(7)SCROLLAMOUNT:整数,指定字幕文本每次移动的距离,以像素为单位。(8)SCROLLDEALY:整数,指定与前段字幕文本延迟多少ms后重新开始移动文本。(9)VSPACE:整数,指定字幕的外边缘与浏览器窗口之间的上下边距(像素)。3.5.2插入背景音乐 使用<BGSOUND>标记在网页中添加背景音乐,该标记只允许放置在HEAD部分。<BGSOUND>标记的属性:(1)BALANCE:整数,指定如何将声音分成左声道和右声道。取值为-10,000~+10,000,默认值为0。(2)LOOP:整数,指定声音播放的次数。如果设置为0,则播放一次;如果设置为大于0的整数,则播放指定的次数;如果设置为-1,则声音反复播放,直到页面卸载。(3)SRC:指定要播放的声音文件的URL。常用的声音文件类型是波形文件(.wav)、MIDI文件(.mid)、AIFF文件(.aif)、AU文件(.au)以及MP3文件(*.mp3)等。(4)VOLUME:整数,指定音量高低,其取值为-10,000~0,默认值为0。3.6使用表格 <TABLE> <CAPTION>表格标题文字<CAPTION> <TR> <TD>标题</TD><TD>标题</TD>…<TD>标题</TD> </TR> <TR> <TD>数据</TD><TD>数据</TD>…<TD>数据</TD> </TR> <TR> <TD>数据</TD><TD>数据</TD>…<TD>数据</TD> </TR> …… <TR> <TD>数据</TD><TD>数据</TD>…<TD>数据</TD> </TR> </TABLE>3.7使用超链接1.理解超链接

超链接是由源端点到目标端点的一种跳转。主要形式:(1)文件链接:这种链接的目标端点是的一个文件,它可以位于当前网页所在的服务器,也可以位于其他服务器。<ahref=“”>名称</a>(2)E-mail链接:通过这种链接可以启动电子邮件客户端程序(如Outlook或FoxMail等),并允许访问者向指定的地址发送邮件。<AHREF="mailto:?subject=关于ASP动态网页设计">给我写信</A>2.理解路径 路径是指从站点根文件夹或当前文件夹起到目标文件所经过的路线。路径有以下几种类型:(1)绝对路径:也称为绝对URL,它给出目标文件的完整URL地址,包括传输协议在内。如果要链接的文件位于外部服务器上,则必须使用绝对路径。(2)相对路径:也称为相对URL,是指以当前文档所在位置为起点到目标文档所经过的路径。3.8使用表单什么是表单? 表单是用来收集站点访问者信息的域集。3.8.1创建表单在HTML语言中,表单通过FORM标记来定义,基本语法格式如下:<FORMNAME="字符串"METHOD="get|post"ACTION="字符串">……</FORM>FORM标记具有以下属性:(1)NAME:指定表单的名称,以标识表单。命名表单后,可以使用脚本语言(如VBScript或JScript)来引用或控制该表单(2)METHOD:post、get。(3)ACTION:指定将要接收表单数据的服务器端程序或动态网页的网址。(4)onSubmit:指定提交表单时调用的事件处理程序。(5)onReset:指定重置表单时调用的事件处理程序。(6)TARGET:指定一个目标窗口,其取值为:_blank、_parent、_self、_top。3.8.2使用输入型表单控件1。input输入域格式:<inputtype=“”name=“”value=“”>姓名<inputname=“xm"type="text"size="60"maxlength="60">籍贯<inputname=“jg"type="text"size="60"maxlength="100"><inputtype=“submit”name=“Submit”value=“提交”>此外:type的取值还可能是:password、checkbox、radio、image、hidden、reset等。2。下拉列表框用于列表选择。例如:<selectname="select"><optionvalue="湖北"selected>湖北</option><optionvalue="湖南">湖南</option><optionvalue="江苏">江苏</option><optionvalue="浙江">浙江</option><optionvalue="福建">福建</option></select>3。多行文本框

格式:

<textareaname=“”rows=“”cols=“”>

例如:

<textareaname="practice"cols="92"rows="8"id="practice"class="intxt"></textarea>

3.9JavaScript用法:<scriptlanguage=javascript>…</script>或者:<scriptlanguage=javascriptsrc=“myfuncs.inc"></script>示例1数字的确认functionisDigit(theNum){vartheMask=‘0123456789’;if(theNum==null||theNum.length==0)returnfalse;iftheMask.indexOf(theNum)==-1)returnfalse;returntrue;}示例2检查输入是否为空

4.3.2检查输入是否为空(包括空格)

functionisEmail(theEmail){

varemail=theEmail;

email=email.replace(/(^\s*)|(\s*$)/g,"");

if(email==""){

alert(“请输入您的Email地址,地址不能为空!");

returnfalse;

}}

注意:如何实现光标自动定位?示例3电子邮件地址格式的确认functionisEmail(theEmail){varemail=theEmail;email=email.replace(/(^\s*)|(\s*$)/g,"");if(email==""){alert(“请输入您的Email地址,地址不能为空!");

returnfalse;}if(email!==""){varnotValid=false;varuseremail=email;if(useremail.indexOf("@")<=0)notValid=true;if(useremail.charAt(useremail.length-1)=="@")notValid=true;if(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.如何使用表单提交进行客户端确认?

4.1.1开始和结束标记

以<%开头,以%>结尾,格式:

<%程序内容%>例如:<%out.println(“欢迎访问本网站!”);%>4.1.2注释注释是帮助自己或别人阅读程序。注释可以有两种形式,HTML注释、JSP注释。HTML注释:<!--注释内容-->第四章JSP语法基础

4.1JSP基本语法规则HTML注释:<!--注释内容

-->注释的内容会在客户端的HTML源代码中出现。例如:<!--这是个用户登录程序login.jsp--><!--编写者:张三-->JSP注释客户端查看源代码时看不到(安全考虑)。格式:<%--注释内容

--%>

示例:<%@pagecontentType="text/html;charset=gb2312"language="java"errorPage=""%><%--文件名:comms.jsp编写者:张三说明:测试程序--%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>用户留言</title></head><body><!--这是一个测试程序--><%--显示helloworld!--%><%out.println(“Helloworld!”);%></body></html>4.1.3基本数据类型1)整型三种形式:十进制、八进制(0开头)、十六进制(0x开头)。具体类型如下:byte类型有符号,范围-128~127。例如:bytea,b=12;short类型(很少使用)有符号,范围-32768~32767。例如:shortd,e=234;int类型有符号,范围-2147483684~2147483683。例如:intx,y=12;long类型有符号,范围-264~264-1。例如:longx,y=-0x12;2)实型Float类型(单精度)例如:floatx,y=123.56;double类型(双精度)例如:floatx,y=123.56;3)布尔型boolean只有true和false两种值例如:booleanx,y,z=false;3)字符型char用单引号括起来。例如:charxx=’123’;思考:charrtn=’\n’;表示什么?4)字符串型String用双引号括起来的一串字符。例如:StringmyStr=“xyz”;注意:是对象,而非数据!有以下重要方法:length()、booleanequals(Stringstr)Stringsubstring(int

beginIndex)Stringsubstring(intbeginIndex,intendIndex)booleanstartsWith(Stringprefix)intindexOf(Stringstr)向后intindexOf(Stringstr,intfromIndex)向后StringtoLowerCase()StringtoUpperCase()Stringtrim()StringreplaceAll(Stringregex,Stringreplacement)该方法用字符串replacement的内容替换当前字符串中遇到的所有和字符串regex相一致的子串,并将产生的新字符串返回。思考:如何判断一个字符串是否是一个合法的email地址?

4.1.4运算符关系运算符用来比较两个值,并返回布尔型的值true或false。布尔逻辑运算符进行布尔逻辑运算,包括&&、||、!等intx=12,y=85;booleanz=(x<21)&&(y>78);算术运算符进行加、减等运算。inti=6,j,k,s;k=(j=++i);i,j,k=?s=(j=i--);i,j,s=?三目条件运算符格式:

x?y:z;

上面的三目条件运算的规则是:先计算表达式x的值,若x为真,则整个三目运算的结果是表达式y的值;若x为假,则整个三目运算的结果是表达式z的值。下面的例子实现了从两个数中找出较大的数的功能。

inta=3,b=4;intmax=a>b?a:b;

三目条件运算是可以嵌套的,如有以下的语句,则max表示的是a、b、c三个数中的最大值,其值为5。

inta=3,b=4,c=5;intmax=(a>b?a:b)>c?(a>b?a:b):c;4.2JSP声明1、格式:<%declaration;declaration;…%>例如:<%intx=10;Stringy=”ok”;%>2、JSP表达式和程序段Jsp表达式的语法形式:<%=表达式%>例如:<%intnum=100;%>数值为:<%=num%>Jsp程序段包含在<%和%>之间的有效程序段。具体形式:<%你的程序代码%>例如:<%If(sex==null)out.println(”请输入性别信息!”);Elseif(sex.equals(”男”))out.println(”男!”);%>4.3.1结构化程序设计的三种基本流程

1.自顶向下2.逐步求精3.模块化

除了以上的原则,结构化程序设计还有一个重要的规定,那就是只能使用“顺序结构”、“选择结构”、“循环结构”这三种基本结构(或由它们派生出来的结构)来定义程序的流程。三种基本流程控制结构示意图分别如图3-1所示。4.3JSP流程控制语句4.3.2选择结构选择结构又称为分支结构,是在两种或两种以上的多条执行路径中选择一条执行的控制结构。1.if—else语句if(条件表达式){语句组1;}else{语句组2;}在if—else语句中,else部分是选择性的。经常可以看到只有if语句,而没有else语句的情况。在这种情况下,当测试条件为假时如不需做任何事,else部分可被省略。这时,其语法形式如下:if(条件表达式){语句组;}思考:求3个数中的最大者?2.switch语句

switch语句(又称开关语句)是和case语句一起使用的,其功能是根据某个表达式的值在多个case引导的多个分支语句中选择一个来执行。它的一般格式如下:switch(表达式){case判断值1:语句块1case判断值2:语句块2 ……case判断值n:语句块ndefault:语句块n+1}

switch后面括号中表达式的值必须是符合byte,char,short,int类型的常量表达式,而不能用浮点类型或long类型,也不能为一个字符串。一个switch语句可以代替多个if—else语句组成的分支结构,而switch语句从思路上显得更清晰。 floata=9,b=3,result=0; charop='+'; 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);4.3.3循环结构循环结构是程序中一种重要的基本结构,是指在一定的条件下反复执行某段程序,被反复执行的这段程序称为“循环体”。Java中有三种语句来实现循环结构,分别是while,do-while和for语句。1.while语句while语句的格式如下:while(条件表达式){ 循环体语句;}例:用while语句计算10! intn=10; longresult=1;

while(n>=1)result*=n--;//改写该语句? out.println("10!="+result);2.do-while语句

do-while语句的格式如下:do{ 循环体语句;}while(条件表达式)

例:用do-while语句计算10的阶乘 intn=10; longresult=1; do result*=n--; while(n>=1); System.out.println("10!="+result);3.for语句for(表达式1;表达式2;表达式3){ 循环体语句;}for语句的执行过程:(1)在循环刚开始时,先计算表达式1。(2)根据表达式2的值来决定是否执行循环体。表达式2是一个返回布尔值的表达式,若该值为假,将不执行循环体,并退出循环;若该值为真,将执行循环体。(3)执行完一次循环体后,计算表达式3。(4)转入第(2)步继续执行。

例1: intn; longresult; for(n=10,result=1;n>0;n--) result*=n; out.println("10!="+result);例2: for(i=0;i<2;i++) for(j=0;j<2;j++) for(k=0;k<2;k++) { out.print(i+""+j+""+k); out.println(); }4.3.4跳转语句 跳转语句用来实现循环执行过程中的流程转移。有两种跳转语句:break语句和continue语句。 其中,break用于强行退出循环,不执行循环中剩余的语句。而continue则停止执行当前的循环,开始新的循环。intn;for(n=1;n<=10;n++){if(n%2==0)break;//修改为continue结果如何?out.println("n="+n);}4.3.5异常处理语句 当发生例外时,采用异常处理机制。Java采用try-catch-finally结构处理错误。try-catch的实际意思是:尝试这块可能导致异常的代码。如果它执行正常,那么继续执行下面的程序。如果该代码无法执行,捕获该异常并对它进行处理。基本形式:try{//程序块}catch(ExceptionTypee){//对ExceptionType的处理}例如:try{File(“c:/inc");…}catch(Exceptione){out.println(“无法找到文件!");}

假定在你的代码中有一些动作,不管发生什么情况,无论异常是否被抛出,你都必须执行这些操作。则需要使用finally子句。例如:try{readTextfile();}catch(IOExceptione){out.println(”该文件不存在!”);}finally{closeTextfile();}总结一下try-catch-finally结构的形式:try{//程序块}catch(ExceptionTypee){//对ExceptionType的处理}finally{//必须处理的程序语句}4.4结合使用JSP和HTMLJSP程序中除了普通HTML代码外,还可以嵌入Java程序代码,二者可以混合使用。例如:<html><head><title>示例</title></head><body><%intnum=100;Out.println(”welcome!”);%><b>数值为:<%=num%></b></body></html>思考:如何利用JSP语句输出斜体的“武汉科技学院”?思考与练习:

1.JSP注释与HTML注释的差异?

2.JSP中如何输出HTML标记?

3.试说明异常机制?第五章JSP的页面元素

5.1JSP指令

5.2JSP动作语法5.1JSP指令

1.Page指令“Page”指令用于定义JSP文件中的全局属性。<%@page[language="java"][import="{package.class|package.*},..."][session="true|false"][buffer="none|8kb|sizekb"]

[contentType="charset=characterSet|"text/html;charset=ISO-8859-1"][isErrorPage="true|false"]<%@pagecontentType="text/html;charset=GBK"language="java"import="java.sql.*"errorPage=""%><%@pagebuffer="32kb"%><%@pageimport="java.util.Iterator"%><%@pageimport="java.util.Vector"%><%@pageimport="java.util.Date"%><%@pageimport="java.util.GregorianCalendar"%><%@tagliburi="weblogic-tags.tld"prefix="wl"%><jsp:useBeanid="submystr"scope="application"class="dbbeans.substr"/><html><head><metahttp-equiv="Content-Type"content="text/html;charset=GBK"><title>武汉科技学院毕业生就业指导服务中心</title>…特别说明:页面缓存缓存是一种用于提高系统性能节省操作时间的技术,数据库产品利用它可以提高系统的吞吐率,服务器利用它可以提高性能。缓存是将响应内容临时保存在服务器的内存中,然后在请求处理完毕之后发回给所调用的浏览器。在Web应用程序中,提高系统性能最有效的手段是在需要时缓存页面的输出。在JSP页面最好使用输出缓存功能。缓存设置方法:采用JSP标记通常情况下,默认缓存大小为8KB。缓存设置格式:<%@pagebuffer="8kb"%>在大多数Web应用程序中,缓存大小至少应为32kb,牺牲这么一点额外的内存是很值得的。2.include指令include:向当前页中插入一个静态文件的内容。格式如下:<%@includefile=“网页文件"%>示例:<%@pagecontentType="text/html;charset=GBK"language="java"import="java.sql.*"errorPage=""%><%@pagebuffer="32kb"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=GBK"><title>武汉科技学院毕业生就业指导服务中心</title><metaname="keywords"content="武汉科技学院毕业生就业指导服务中心"></head><bodytopmargin="0"class="scrolbar"><center><metaname="keywords"content="武汉科技学院毕业生就业指导服务中心"></head><bodytopmargin="0"class="scrolbar"><center><%@includefile="getdayvisit.jsp"%><%@includefile="top.jsp"%><%@includefile="body.jsp"%><%@includefile="bottom.jsp"%></center></body></html>3.taglib指令JSP语法<%@tagliburi="URIToTagLibrary"prefix="tagPrefix"%>用于引入定制标签库taglib指令属性1.uri="URIToTagLibrary"UniformResourceIdentifier(URI)根据标签的前缀对自定义的标签进行唯一的命名,URI可以是以下的内容:UniformResourceLocator(URL),由RFC2396定义,可以从以下位置查看(/jkorpela/rfc/2396/full.html)。

UniformResourceName(URN),由RFC2396定义一个相对或绝对的路径

可以是标签库描述文件2.prefix="tagPrefix"表示标签在JSP中的名称。在自定义标签之前的前缀,比如,在<public:loop>中的public,如果这里不写public,那么这就是不合法的。请不要用jsp,jspx,java,javax,servlet,sun,和sunw做为你的前缀,这些已被Sun公司声明保留。示例:

<%@pagecontentType="text/html;charset=GBK"language="java"import="java.sql.*"errorPage=""%>

<%@pagebuffer="32kb"%>

<%@tagliburi="weblogic-tags.tld"prefix="wl"%>

<html><head><metahttp-equiv="Content-Type"content="text/html;charset=GBK">

<title>武汉科技学院毕业生就业指导服务中心</title>

<metaname="keywords"content="武汉科技学院毕业生就业指导服务中心">

</head>

<bodytopmargin="0"class="scrolbar">

<center>

<%@includefile="getdayvisit.jsp"%>

<%@includefile="top.jsp"%>

<%@includefile="body.jsp"%>

<%@includefile="bottom.jsp"%>

</center>

</body>

</html>5.2JSP动作语法

1.<jsp:forward>

2.<jsp:include>

3.<jsp:useBean>1.<jsp:forward>JSP语法格式如下:1.<jsp:forwardpage={"relativeURL"|"<%=expression%>"}/>2.<jsp:forwardpage={"relativeURL"|"<%=expression%>"}><jsp:paramname="parameterName"value="{parameterValue|<%=expression%>}"/>[<jsp:param…/>]</jsp:forward>(“[<jsp:param…/>]”指可以有多个“<jsp:param/>”标记。)1、page="{relativeURL|<%=expression%>}"这里是一个表达式或是一个字符串用于说明你将要定向的文件或URL。这个文件可以是JSP,程序段,或者其它能够处理request对象的文件(如asp,cgi,php)。

2.<jsp:paramname="parameterName"value="{parameterValue|<%=expression%>}"/>向一个动态文件发送一个或多个参数,这个文件必须是动态文件。如果想传递多个参数,可以在一个JSP文件中使用多个“<jsp:param>”;“name”指定参数名,“value”指定参数值。<jsp:forward>例子<%@pagecontentType="text/html;charset=gb2312"%><html><head><title>test</title> </head> <body> <jsp:forwardpage="forwardTo.jsp"> <jsp:paramname="userName"value="riso"/> </jsp:forward> </body></html>forwardTo.jsp<%@pagecontentType="text/html;charset=gb2312"%><!--forwardTo.jsp--><% StringuseName=request.getParameter("userName"); StringoutStr="谢谢光临!"; outStr+=useName; out.println(outStr); %>运行结果(TOMCAT)2.<jsp:include>

<jsp:include>包含一个静:态或动态文件.

常用格式如下:

<jsp:includepage=“网页文件”/>

思考:何时使用<jsp:include>,何时使用<%@includefile=“网页文件”%>?3.<jsp:useBean>

在介绍JavaBean时再讨论思考与练习:

1)掌握文件包含。

2)制作一个申请免费email的表单,要求填写:用户名、密码、确认密码、性别、地址,其中性别用单选按钮,用户名、、密码为必填项且不能为空。请用客户端确认实现上述功能。

3)上道题目中用户填写的内容显示在屏幕上。

4)编写一个程序,验证用户输入的email地址是否正确(使用客户端确认)。

5)编写一个用户登录的jsp网页,若用户名为aaa,密码为bbb,则显示欢迎该用户访问的字样,否则显示非法用户。要求使用服务器端确认。

6)理解缓存的使用。第六章JSP的内建对象

·request请求对象

·response响应对象

·session会话对象

·application应用程序对象

·out输出对象1.out“out”对象代表了向客户端发送数据的对象。out.print()out.println();out.close()out的使用

例如:out.println(“武汉”);

<%out.println("aaaaaaaaaaa");

out.close();

out.println("bbbb");%>

思考:如何输出一个换行,或者斜体的aaa?2.request用于获取客户端的输入信息。主要有以下方法:getParameter(Stringname)(很重要)获得客户端传给服务器端的参数值Stringusrme=request.getParameter(“username”);getRequestURI()获得所请求的URL地址getServerName()

获得服务器名称

getRemoteUser()

获得登录用户名

getServerPort()

获得服务器提供HTTP服务的端口号

getRemoteAddr()(很重要)

获得客户端的IP地址。

getRemoteHost()

获得客户端计算机名称。一般为IP地址,同上request对象示例<html><body>

<formaction="./Hello_req.jsp">姓名<inputtype="text"name="UserName">

<inputtype="submit"value="提交">

</form></body></html>request对象示例(Hello_req.jsp<%@pagecontentType="text/html;gb2312"%><%@pageimport="java.util.*"%><HTML><BODY>你好,<%!StringName;%><%Name=request.getParameter("UserName");%><%=Name%>,今天是<%Datetoday=newDate();%><%=today.getDate()%>号,星期<%=today.getDay()%></BODY></HTML>request对象示例(输出结果)<HTML><BODY>你好,独孤求败,今天是9号,星期1</BODY></HTML>3.response对象用于处理HTTP信息。有以下方法:setHeader(Stringname,Stringvalue)发送HTTP信息,控制客户端和服务器端连接。例如:Response.setHeader(“Location”,”.”);Response.setHeader(“Refresh”,”2”);sendRedirect(Stringurl)response.senRedirect(“.”);4.session对象“session”

对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。“session”

对象建立在cookie的基础上,所以使用时应注意判断一下客户端是否打开了cookie。常用的方法包括getId、getValue、getValueNames和putValue等。

session对象说明:HTTP是无状态(stateless)协议;WebServer对每一个客户端请求都没有历史记忆;Session用来保存客户端状态信息;由WebServer写入;存于客户端;客户端的每次访问都把上次的session记录传递给WebServer;WebServer读取客户端提交的session来获取客户端的状态信息;理解session:

session对象代表服务器与客户端所建立的会话。当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。例如:在网上商店站点,你做出的每一个购买决定都会放入购物车,他将收集你要购买的商品,以便一次性付钱。即使浏览了几百个网站,订购了数十商品,购物车也能记住你想购买的所有商品。这是因为WEB应用程序有能力记录跟踪会话。

记住:每个用户都有自己的sessionSession的常用方法:setAttribute(参数名,参数值):设置指定name的属性值value,并存储在session中。例如:session.setAttribute(“myname”,”tom”);getAttribute(参数名):获取与参数名相联系的属性值。例如:session.getAttribute(“myname”);removeAttribute(参数名):删除与指定参数名相联系的属性。例如:session.removeAttribute(“myname”);应用:可以在同一个网站的不同页面之间共享信息。session对象示例(Form表单—Logon_session.html)<html><body>

<formaction="./Logon_session.jsp">姓名<inputtype="text"name="UserName">

<inputtype="submit"value="提交">

</form></body></html>session对象示例Logon_session.jsp<%@page

contentType="text/html;gb2312"

%><%@page

import="java.util.*"

%><HTML><BODY>

<%

StringName=request.getParameter("UserName");

session.putValue("LogName",Name);

%>你的名字"<%=Name%>"已经写入session<br><ahref='./check_session.jsp'>check</a></BODY></HTML>session对象示例(Check_session.jsp)<%@pagecontentType="text/html;gb2312"%><HTML><BODY>

<%StringyourName=(String)session.getValue("LogName");if(yourName==null){

%>您还未登录

<%}else{

%>

"<%=yourName%>"已经登录

<%}

%></BODY></HTML>5.application对象“application”对象负责提供应用程序在服务器中运行时的一些全局信息,常用的方法有getMimeType和getRealPath等。application对象负责提供应用程序在服务器中运行时的一些全局信息。setAttribute(参数名,参数值)

例如:

application.setAttribute("counter","1");getAttribute(参数名)

例如:

application.getAttribute("counter");应用:application对象可以用于网站访问量,或者在线用户的统计等功能。application对象实现网页计数器<%--用application对象实现网页计数器peixun2.14.jsp文件代码--%><%@pagecontentType="text/html;charset=gb2312"%><html> <head><title>网页计数器</title><head><body><%if(application.getAttribute("counter")==null) application.setAttribute("counter","1"); else{ Stringstrnum=null; strnum=application.getAttribute("counter").toString(); inticount=0; icount=Integer.valueOf(strnum).intValue(); icount++; application.setAttribute("counter",Integer.toString(icount)); }%>您是第<%=application.getAttribute("counter")%>位访问者!</body></html>运行结果(第一次访问)刷新一次config、page、exception“config”对象提供一些配置信息,常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。“page”对象代表了正在运行的由JSP文件产生的类对象,不建议一般读者使用。“exception”对象则代表了JSP文件运行时所产生的例外对象,此对象不能在一般JSP文件中直接使用,而只能在使用了“<%@pageisErrorPage="true"%>”的JSP文件中使用思考与练习编写用户登录程序,根据登录用户的不同,显示不同页面。编写网站计数器。利用session编写购物车程序。第七章JSP中访问文件7.1文件操作7.2Cookie的管理7.3文件上传的实现7.1文件操作1。File文件对象包的一部分,它代表一个文件或文件夹的引用。格式:)创建一个File对象,如果没有指定文件名,则创建一个文件夹。例如:FilemyFile(“d:\counter.txt”);常用方法:exists()、delete()、mkdir()2。读取文本文件读取字符流,逐个字符读取,格式:txt=new(文件名)例如:txt=new(“counter.txt”)BufferedReader读取字符输入流,一次读取一行,格式:BufferedReaderbuff=newBufferedReader(Reader);例如:BufferedReaderbuff=newBufferedReader(new(“counter.txt”));buff.close();注意:BufferedReader读取字符输入流,并高效率的缓存起来。3。写入文本文件BufferedWriter写入一个带缓冲的字符流。格式:BufferedWriter()例如:File(“d:\xy.txt”);BufferedWriteroutf=newBufferedWriter(new(tmpf));outf.write(“123”);outf.close();文件操作示例

try{String“d:/counter.dat";BufferedReaderbuff=newBufferedReader(new());longtmp;Stringline;line=buff.readLine();tmp=Long.parseLong(line);tmp++;Longtmpint=newLong(tmp);context.setAttribute("visitor",tmpint);Stringcounter=tmpint.toString(););BufferedWriteroutf=newBufferedWriter(new(tmpf));outf.write(counter);outf.close();buff.close();}catch(Exceptione){System.err.println("无法更新计数器:"+e);}}4。文件输入流

流(Stream)是一个将数据从一个地方运送到另一个地方的一个对象。输入流格式:inStream=new(String);例如:inStream=new(“d:\mylet.zip”);5。输出流OutputStreamtoClient=response.getOutputStream();例如:OutputStreamtoClient=response.getOutputStream();toClient.flush();toClient.close();流的应用示例-文件下载的实现packagebysservlet;importjavax.servlet.*;importjavax.servlet.http.*;importjava.io.*;publicclassdownloadextendsHttpServlet{privatestaticfinalStringCONTENT_TYPE="text/html;charset=GB2312";publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

response.setBufferSize(20000);//有什么作用??? PrintWriterout=response.getWriter();response.setContentType(CONTENT_TYPE);request.setCharacterEncoding("GBK");//下载路径String=request.getParameter("fpath");if(==null){="";}//文件名称String=request.getParameter("fname");if(==null){="";}StringdirName=getServletContext().getRealPath("/"+);java.io.;Stringdd=dirName+System.getProperties().getProperty("")+;try{ff=newjava.io.);}catch(Exceptione){out.println(“出错!”);}if(ff!=null&&ff.exists()&&ff.isFile()){long=ff.length();inStream=new(dd);response.reset();response.setContentType("application/x-msdownload;charset=GBK");response.setContentLength((int)); response.setHeader("Content-Disposition","attachment;\""+"\"");OutputStreamtoClient=response.getOutputStream();byte[]bzp=newbyte[102400];inti;while((i=inStream.read(bzp))!=-1){toClient.write(bzp,0,i);}toClient.flush();toClient.close();}}}7.2Cookie的管理Cookie是服务器在用户硬盘上存放的信息。1。创建CookieCookiemyCookie=newCookie(“cookieName”,”cookieValue”);Response.addCookie(myCookie);例如:Cookievname=newCookie(“usrname”,”Tom”);response.addCookie(vname);2。获取CookieCookiecookies[]=request.getCookies();然后调用Coo

温馨提示

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

最新文档

评论

0/150

提交评论