收藏 分享(赏)

天峰电子培训wwwtmlinet.ppt

上传人:杨桃文库 文档编号:4218897 上传时间:2018-12-16 格式:PPT 页数:156 大小:2MB
下载 相关 举报
天峰电子培训wwwtmlinet.ppt_第1页
第1页 / 共156页
天峰电子培训wwwtmlinet.ppt_第2页
第2页 / 共156页
天峰电子培训wwwtmlinet.ppt_第3页
第3页 / 共156页
天峰电子培训wwwtmlinet.ppt_第4页
第4页 / 共156页
天峰电子培训wwwtmlinet.ppt_第5页
第5页 / 共156页
点击查看更多>>
资源描述

1、1,JSP编程,2,JSP文件结构及主要标签,.其他 HTML 语言其他 HTML 语言,3,JSP示例(Hello.jsp),你好,你好你好,4,JSP执行过程,*.jsp,*.java,*.class,servlet,servlet 分析器,5,JSP,JSP执行过程,6,JSP示例(Hello_Date.jsp),你好,今天是号,星期,import java.util.*;response.setContentType(“text/html;charset=gb2312“); out = pageContext.getOut(); out.write(“rnrnrn rn你好,今天是rn

2、“); Date today=new Date(); out.print(today.getDate(); out.write(“号,星期“); out.print(today.getDay(); out.write(“ rn rnrn “);,JSP文件,servlet文件,7,JSP示例(浏览结果),8,JSP语法概述,JSP原始代码中包含了JSP元素和Template(模板) data两类 Template data指的是JSP引擎不处理的部分,即标记以外的部分,例如代码中的HTML的内容等 ,这些数据会直接传送到客户端的浏览器 JSP元素则是指将由JSP引擎直接处理的部分,这一部分必须

3、符合JSP语法,否则会导致编译错误。,9,jsp例子(hi.jsp), Hi-JSP实验 ,Template data,JSP元素,10,JSP语法,JSP语法分为三种不同的类型,编译器指令(DIRECTIVE) 例如: ,脚本语法(SCRIPTING),动作语法(ACTION) 例如: ,,11,脚本语法,脚本语法包括 “HTML注释”: “隐藏注释”: “声明” “表达式” “脚本段”,12,编译器指令,编译器指令包括“包含指令”, “页指令”和“taglib指令” 它们包含在“”卷标里。 两个主要的指令是page与include。,13,动作语法,动作语法包括, ,和。,14,HTML注

4、释,JSP 语法格式如下: 或 这种注释发送到客户端,但不直接显示,在源代码中可以查看到。,15,HTML注释(peixun2.1.jsp),HTML注释 未显示上一行的注释。,16,HTML注释,17,HTML注释(peixun2.2.jsp),要多加练习 在源文件中包括当前时间。,18,HTML注释,19,IE中的源程序有注释,20,隐藏注释,JSP 语法格式如下:不发送到客户端。,21,隐藏注释 (peixun2.3.jsp), A Comment TestA Test of Comments ,22,隐藏注释,23,在IE中查看源代码,24,声明,JSP 语法格式如下:或 ,25,声明

5、(test2.4.jsp),test2.4.jsp ,26,表达式,用于在页面上输出信息,语法格式如下:或 ,27,表达式(peixun2.4.jsp),test ,28,表达式,a= b= c=,29,peixun2.4.jsp执行结果,30,脚本段,JSP 语法格式如下:或 ,31,脚本段 (peixun2.5.jsp),test ,32,“);break;case 1:out.println(“You must select condition 1!“+“);,33,break;case 2:out.println(“You must select condition 2!“+“);br

6、eak;default:out.println(“Your select not in “0,1,2“,select again!“+“);% 转义符: 双引号 “ ,单引号,反斜杠,回车r,换行n,制表符t,退格 b,34,脚本段执行结果,35,包含指令,include指令:向当前页中插入一个文件的内容。 JSP 语法格式如下:或 ,36,包含指令(peixun2.6.jsp), testThe current date and time are ,37,“peixun2.6.1.jsp”,38,包含指令,39,Page指令,“Page”指令用于定义JSP文件中的全局属性。JSP 语法格式如

7、下: % page language=“java“ extends=“package.class“ import=“package.class | package.*,.“ session=“true | false“ buffer=“none | 8kb | sizekb“ ,40,Page指令, autoFlush=“true | false“ isThreadSafe=“true | false“ info=“text“ errorPage=“relativeURL“ contentType=“mimeType ;charset=characterSet“ | “text/html; c

8、harset=ISO-8859-1“ isErrorPage=“true | false“ %,41,Page指令,属性: 1language=“java“ 声明脚本语言的种类,目前只能用“java“ 。 2.import=“package.class | package.* ,.“ 需要导入的Java包的列表,这些包作用于程序段,表达式,以及声明。下面的包在JSP编译时已经导入了,所以就不需要再指明了: java.lang.* javax.servlet.* javax.servlet.jsp.* javax.servlet.http.*,42,3errorPage=“relativeURL

9、“ 设置处理异常事件的JSP文件。 4isErrorPage=“true | false“ 设置此页是否为出错页,如果被设置为true,你就能使用exception对象,43,page指令详说,“”指令作用于整个JSP页面,同样包括静态的包含文件。但是“”指令不能作用于动态的包含文件,比如 “”。 可以在一个页面中用上多个“”指令,但是其中的属性只能用一次,不过也有例外,那就是import属性。因为import属性和Java中的import语句类似(参照Java Language,import语句引入得是Java语言中的类),所以此属性就能多用几次。 无论把“”指令放在JSP的文件的哪个地方,

10、它的作用范围都是整个JSP页面。不过,为了JSP程序的可读性,以及好的编程习惯,最好还是把它放在JSP文件的顶部。,44,page指令(peixun2.7.jsp), test3Test for using Page.,45,page指令例子运行结果,46,taglib指令,JSP语法用于引入定制标签库,47,taglib指令,属性 1uri=“URIToTagLibrary“ Uniform Resource Identifier (URI)根据标签的前缀对自定义的标签进行唯一的命名,URI可以是以下的内容: Uniform Resource Locator (URL), 由 RFC 239

11、6 定义, 可以从以下位置查看 (http:/www.hut.fi/u /jkorpela/rfc/2396/full.html)。Uniform Resource Name (URN), 由 RFC 2396定义 一个相对或绝对的路径 可以是标签库描述文件,48,2prefix=“tagPrefix“ 表示标签在JSP中的名称。 在自定义标签之前的前缀,比如,在中的public,如果这里不写public,那么这就是不合法的。请不要用jsp, jspx, java, javax, servlet, sun, 和sunw做为你的前缀,这些已被Sun公司声明保留。,49,Tablib指令(peix

12、un2.8.jsp), test,50,JSP 语法格式如下: 1“ / 2“ “ /(“”指可以有多个“”标记。),51,属性:,1、page=“relativeURL | “ 这里是一个表达式或是一个字符串用于说明你将要定向的文件或URL。这个文件可以是JSP,程序段,或者其它能够处理request对象的文件(如asp,cgi,php)。,52,2“ / 向一个动态文件发送一个或多个参数,这个文件必须是动态文件。如果想传递多个参数,可以在一个JSP文件中使用多个“”;“name”指定参数名,“value”指定参数值。,53,注意,“”标签从一个JSP文件向另一个文件传递一个包含用户请求的r

13、equest对象。“”标签以后的代码,将不能执行。,54,例子(peixun2.9.jsp),test,55,forwardTo.jsp,56,运行结果(TOMCAT),57,包含一个静态或动态文件. JSP 语法格式如下: 1“ flush=“true“ / 2“ flush=“true“ “ /(“”指可以有多个“”标记。),58,的属性,1page=“relativeURL | “ 参数为一相对路径,或者是代表相对路径的表达式。2flush=“true“ 这里必须使用flush=“true“,不能使用false值。而缺省值为false 。,59,3 “ / “”用来传递一个或多个参数到指

14、定的动态文件,能在一个页面中使用多个“”来传递多个参数,,60, 例子(peixun2.10.jsp),peixun.2.10.jsp,61,peixun2.10.1.jsp,“); %,62,运行结果TOMCAT),63,使用“”插入一个applet或Bean,必要的话还要下载一个Java插件用于执行它。JSP 语法格式如下: jsp:plugin type=“bean | applet“ code=“classFileName“ codebase=“classFileDirectoryName“,64, name=“instanceName“ archive=“URIToArchive,

15、.“ align=“bottom | top | middle | left | right“ height=“displayPixels“ width=“displayPixels“ hspace=“leftRightPixels“ vspace=“topBottomPixels“ jreversion=“JREVersionNumber | 1.1“ nspluginurl=“URLToPlugin“ iepluginurl=“URLToPlugin“ ,65, “ / + text message for user ,66,属性,1type=“bean | applet“ 将被执行的插件

16、对象的类型,你必须得指定这个是Bean还是applet,因为这个属性没有缺省值。2code=“classFileName“ 将会被Java插件执行的Java Class的名字,必须以.class结尾。这个文件必须存在于codebase属性指定的目录中。,67,3codebase=“classFileDirectoryName“ 将会被执行的Java Class文件的目录(或者是路径),如果你没有提供此属性,那么使用的jsp文件的目录将会被使用。4name=“instanceName“ 这个Bean或applet实例的名字,它将会在Jsp其它的地方调用。,68,例子, Unable to loa

17、d applet ,69,创建一个Bean实例并指定它的名字和作用范围。 JSP 语法格式如下: jsp:useBean id=“beanInstanceName“ scope=“page | request | session | application“ class=“package.class“ |,70,type=“package.class“ | class=“package.class“ type=“package.class“ | beanName=“package.class | “ type=“package.class“ / | other elements ,71,属性以

18、及用法,1id=“beanInstanceName“ 在所定义的范围中确认Bean的变量,使之能在后面的程序中使用此变量名来分辨不同的Bean ,这个变量名对大小写敏感,必须符合所使用的脚本语言的规定,这个规定在Java Language 规范已经写明。如果Bean已经在别的“”标记中创建,则当使用这个已经创建过Bean时,id的值必须与原来的那个id值一致;否则则意味着创建了同一个类的两个不同的对象。,72,2scope=“page | request | session | application“ Bean存在的范围以及id变量名的有效范围。缺省值是page,以下是详细说明: page

19、- 能在包含“”元素的JSP文件以及此文件中的所有静态包含文件中使用这个Bean,直到页面执行完毕向客户端发回响应或转到另一个文件为止。,73,request - 在任何执行相同请求的Jsp文件中使用这个Bean,直到页面执行完毕向客户端发回响应或转到另一个文件为止。 session - 从创建Bean开始,就能在任何使用相同session的jsp文件中使用这个Bean。这个Bean存在于整个Session生存周期内,任何在分享此Session的Jsp文件都能使用同一Bean。注意在创建这个Bean的Jsp文件中“”指令中必须指定“session=“true“”。,74,application

20、 - 从创建Bean开始,就能在任何使用相同application的Jsp文件中使用Bean。这个Bean存在于整个application生存周期内,任何在分享此application的Jsp文件都能使用同一Bean.,75,3class=“package.class“ 使用new关键字以及class构造器从一个class中实例化一个bean。这个class不能是抽象的,必须有一个公用的,没有参数的构造器。这个package的名字区别大小写。 4type=“package.class“ 如果这个Bean已经在指定的范围中存在,那么赋予这个Bean一个新的数据开库类型 。如果使用type属性的同

21、时没有使用class或beanName,Bean将不会被实例化。注意package和class的名称区分大小写。,76,5beanName=“package.class | “ type=“package.class“ 使用java.beans.Beans.instantiate方法来从一个class或串行化的模板中实例化一个Bean,同时指定Bean的类型。 Beans.instantiate方法将检查此名称是否表示一个类或一个串行化模板。如果这个Bean是被串行化的,那么Beans.instantiate方法将通过使用一个类装载器读取串行化格式(类似package.class.ser)。,

22、77,beanName可以是package和class,也可以是表达式,它的值会传给Beans.instantiate方法。type的值可以和Bean相同,也可以是它的基类,或者是它所实现的接口。 package和 class 名字区分大小写。,78,JSP 语法格式如下:属性: 1name=“beanInstanceName“ bean的名字,由指定。2property=“propertyName“ 所指定的Bean的属性名。,79,例子, /声明引用的beantestCalendar of ,80,设置Bean的属性值. JSP 语法格式如下: “ /,81,属性,1name=“beanI

23、nstanceName“ 表示已经在“”中创建的Bean实例的名字。 2property=“*“ 储存用户在jsp输入的所有值,用于匹配Bean中的属性。,82,3property=“propertyName“ param=“parameterName“ 用一个参数值来指定Bean中的一个属性值,一般情况下是从request对象中获得的。其中property指定Bean的属性名,param指定request中的参数名。,83,4property=“propertyName“ value=“string | “ 使用指定的值来设定Bean属性。这个值可以是字符串,也可以是表达式。如果这个字符串,

24、那么它就会被转换成Bean属性的类型(转换方法见表4.1)。如果是一个表达式,那么它的类型就必须和将要设定的属性值的类型一致。 如果参数值为空值,那么对应的属性值也不会被设定。此外,不能在同一个“”中同时使用param和value参数 。,84,package rmg; public class student private long classNo;private String name;private int age;private boolean sexy;public student() /构造函数classNo=970431;name=“ZZZl“;age=34;sexy=true

25、;,例:/建立类rmg.student,85,public long getClassNo() return classNo;public void setClassNo(long no) this.classNo=no;public String getName() return name;public void setName(String name) this.name=name;,86,public int getAge() return age;public void setAge(int age) this.age=age;public boolean getSexy() retu

26、rn sexy;public void setSexy(boolean sexy) this.sexy=sexy; ,87,88,89,第一次运行结果,90,以后运行结果,第一行发生变化,91,测试session作用域,92,93,运行结果,94,JSP内置对象,JSP 有以下九种内置对象,包括:request,请求对象 response,响应对象 pageContext,页面上下文对象 session,会话对象 application,应用程序对象 out,输出对象 config,配置对象 page,页面对象 exception,例外对象,95,重点介绍,request,请求对象 sessi

27、on,会话对象 application,应用程序对象,96,综述,有几种对象看起来和ASP的内置对象差不多,功能也类似,这是因为这些内置对象的构建基础是标准化的HTTP协议。如果使用过ASP,又对Java有一定的了解的话,那么对这几种JSP内置对象的使用应该能迅速掌握。需要注意的问题是对象名的写法,包括这些对象方法的调用时也要书写正确,因为Java语言本身是大小写敏感的。,97,从本质上讲,JSP的这些内置对象其实都是由特定的Java类所产生的,在服务器运行时根据情况自动生成,所以如果你有较好的Java基础,可以参考相应的类说明,表3.1给出了他们的对应关系。如果你的Java基础不太好,可以先

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

29、est对象示例,姓名,101,request对象示例(Hello_req.jsp,你好,今天是号,星期,102,request对象示例(输出结果),你好, 独孤求败,今天是9号,星期1,103,pageContext,“pageContext” 对象直译时可以称作“页面上下文”对象,代表的是当前页面运行的一些属性,常用的方法包括findAttribute、getAttribute、getAttributesScope和getAttributeNamesInScope,一般情况下“pageContext” 对象用到得也不是很多,只有在项目所面临的情况比较复杂的情况下,才会利用到页面属性来辅助处理

30、。,104,session对象,“session” 对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。“session” 对象建立在cookie的基础上,所以使用时应注意判断一下客户端是否打开了cookie。常用的方法包括getId、 getValue、 getValueNames和putValue等。,105,session对象,概要 HTTP是无状态(stateless)协议; Web Server 对每一个客户端请求都没有历史记忆; Session用来保存客户端状态信息; 由Web Server 写入; 存于客户端; 客

31、户端的每次访问都把上次的session记录传递给Web Server; Web Server读取客户端提交的session来获取客户端的状态信息;,106,session对象示例(Form表单Logon_session.html),姓名,107,session对象示例Logon_session.jsp,你的名字“已经写入session check,108,session对象示例Check_session.jsp),您还未登录“已经登录,109,application对象,“application” 对象负责提供应用程序在服务器中运行时的一些全局信息,常用的方法有getMimeType和getR

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

33、有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。 “page” 对象代表了正在运行的由JSP文件产生的类对象,不建议一般读者使用。 “exception” 对象则代表了JSP文件运行时所产生的例外对象,此对象不能在一般JSP文件中直接使用,而只能在使用了“”的JSP文件中使用,112,request请求对象,1getAttribute 原型:public java.lang.Object getAttribute(java.lang.String name) 说明:以对象的形式返回特定名称的属性值。这个方法允许Servlet引

34、擎给出一个客户请求的特定信息。 ( Servlet为服务器端小程序,所有JSP页面都事先翻译成Servlet后才执行),113,request请求对象,如果所给名称的属性不存在将返回空值。属性名应该遵循和包命名方式同样的约定,不要采用如“java.*”、“ javax.*”及 “sun.*”.这样的命名。 参数:name 一个标示属性名的字符串 返回值:一个包含属性值的对象,当属性不存在是为空。,114,request对象使用示例( peixun2.11.jsp ),request用户登录 用户名: 密码: ,115,浏览器类型: IE Netscape 资料选项:标题详细 ,116,Post

35、.jsp代码,test“);out.println(“密码:“+request.getParameter(“pwd“)+“);out.println(“浏览器:“+request.getParameter(“radio“)+“); out.println(“标题:“+request.getParameter(“check1“)+“);out.println(“详细:“+request.getParameter(“check2“)+“);out.println(“隐含:“+request.getParameter(“hidden“)+“);out.println(“getContentLengt

36、h()=“+request.getContentLength()+“);,117,out.println(“getContentType()=“+request.getContentType()+“);out.println(“getRequestURI()=“+request.getRequestURI()+“);out.println(“getServerPort()=“+request.getServerPort()+“);out.println(“getServerName()=“+request.getServerName()+“);out.println(“getProtocol(

37、)=“+request.getProtocol()+“);out.println(“getRemoteAddr()=“+request.getRemoteAddr()+“);out.println(“getHeaderNames()=“+request.getHeaderNames()+“);out.println(“getMethod()=“+request.getMethod()+“);out.println(“getServletPath()=“+request.getServletPath()+“);out.println(“isRequestedSessionIdValid()=“+

38、request.isRequestedSessionIdValid()+“); %,118,运行结果,119,120,session对象示例,session请输入您的姓名: ,121,post1.jsp,post.jsp您的姓名是: 您最喜欢的娱乐是: ,122,post11.jsp,post1.jsp您的姓名是: 您喜欢的娱乐是: ,123,运行结果,124,提交后,125,输入值,126,再次提交(保存名字),127,application对象运行示例,application“);out.println(“peixun2.13.jsps MIME type is:“+application

39、.getMimeType(“peixun2.13.jsp“)+“);out.println(“URL of peixun2.13.jsp is: “+application.getResource(“/peixun2.13.jsp“)+“);out.println(“getServerInfo()=“+application.getServerInfo()+“);out.println(application.getRealPath(“ “);application.log(“Add a Record to log_file“); %,128,运行结果,129,application对象实现网

40、页计数器,网页计数器您是第位访问者!,130,运行结果(第一次访问),131,刷新一次,132,exception对象示例,Error page loginAn error occured in the bean. Error Message is: ,133,内置对象小结,全面介绍了JSP的几种内置对象。熟练使用这些内置对象是开发JSP应用程序的基本要求,尤其是对于request、session和application对象更是必须要掌握的。 会使用对象所具有的方法,能熟练使用每一种对象的几种常用方法。,134,JSP与客户机的交互,从表单中获得参数 返回参数 表单的服务器端确认,135,从表

41、单中获得参数,JSP通过request内置对象获取表单信息 用不同的方法获取不同种类的信息 获取参数的主要方法: getParameter() 获取参数的值 getParameterNames() 获取参数的名称 getParameterValues() 获取多个值,136,getParameter(),可以获得文本框、文本区域、单选、多选的值 表单中各元素的NAME属性是它的唯一标识,用它获取参数。 参考peixun2.11.jsp及post.jsorequest.getParameter(“User“);,137,向客户端输出,使用内置对象out out.println(content)

42、使用“=”参看peixun2.11.jsp和post.jspout.println(“用户名:“ +User+“); 参看peixun2.14.jsp 您是第位访问者!,138,表单的服务器端确认,在客户端不能用JSP进行确认 分工:数据处理在服务器端 实效性:客户端得到服务器确认后表明数据已经到达服务器 客户端兼容性好 缺点:加大服务器负载和用户等待时间,139,服务器端确认方法,采用Java类对表单数据进行复杂的检查 采用JSP进行确认,140,服务器端确认的例子,服务器端确认用户登录 用户名: 密码: ,141,loginAction.jsp,确认JSP“);out.println(“密

43、码:“+pwd+“);else %,142,用户名不能为空用户登录 用户名:“密码:“ ,143,运行结果(TOMCAT),144,(未输入姓名)直接提交,145,输入用户名,146,输入用户名后提交,147,JSP的汉字问题的原理,客户端和服务器用gb2312 HTTP传输编码用ISO8859_1 服务器需要指示客户端文档的编码方式,148,JSP的汉字问题出现环节,客户端显示文档时的编码方式(由服务器中的JSP、Servlet指明) 客户端发送汉字时自动转换为iso8859_1 服务器中采用gb2312对汉字编码,接收到客户端汉字需要转换为gb2312 服务器端将JSP转换为Servlet

44、时自动将汉字转换为iso8859_1 服务器端应该告诉客户端汉字的编码方式,149,JSP汉字问题的范围,JSP文件的汉字问题 表单处理的汉字问题,150,JSP文件的汉字问题,JSP中的汉字字符串在服务器端用gb2312 在编译为Servlet时自动转换为iso8859_1 汉字在传输中是正确的 在没有特别指示下,浏览器中无法正确显示 在HTML中指示浏览器文档的编码(myJSPindex.html)在JSP中指示JSP引擎文档的编码每个要显示汉字的JSP文档都应该包含该语句,151,JSP文件的汉字问题(JSPhanzi.jsp),JSP中的汉字问题,JSP中的汉字问题你好,152,JSP

45、中增加编码指示后,JSP中的汉字问题,JSP中的汉字问题你好,153,表单处理中的汉字问题,表单处理涉及到客户端和服务器的完整交互过程 在客户端和服务器是gb2312,传输用ISO8859_1 在服务器端接收到客户端数据时需要转换为gb2312后进行处理,方法 name=new String(name.getBytes(“ISO8859_1“), “gb2312“); 服务器端指示客户端汉字的显示编码 ,154,表单处理的汉字问题(hanzi.jsp),表单处理的汉字问题用户登录 用户名:, 表单处理的汉字问题用户登录 用户名:,155,处理过程,表单中汉字的处理“); %,表单中汉字的处理用户名:?,156,处理过程(修改后),表单中汉字的处理“); %,表单中汉字的处理用户名:测试,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报