第三章_第二讲_JSP编程.ppt
《第三章_第二讲_JSP编程.ppt》由会员分享,可在线阅读,更多相关《第三章_第二讲_JSP编程.ppt(140页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1JSPJSP编程编程21JSP工作原理2JSP脚本元素3JSP指令元素4JSP动作组件5JSP内置对象3JSP初识JSP(JavaServerPages)是一种实现普通静态HTML和动态HTML混合编码的技术。n它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段和JSP标记(tag),从而形成JSP文件(*.jsp)nWeb服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能nJSP是在服务器端执行的,通常返回给客户
2、端的就是一个HTML文本,因此客户端只要有浏览器就能浏览4JSP工作原理pJSP页面文件被转译转译 成一个Servlet类(.java文件)p.java文件被编译编译 生成字节码文件执行5JSP示例 你好你好,今天是今天是 号,号,星期星期 import java.util.*;response.setContentType(text/html;charset=gb2312);out=pageContext.getOut();out.write(“rnrnrn rn你好你好,今天是今天是rn);Date today=new Date();out.print(today.getDate();ou
3、t.write(号,星期号,星期);out.print(today.getDay();out.write(rn rnrn);JSP文件Servlet文件http:/localhost:8080/Test/Test.jspTomcatwork Test.java.class6uJSP页面转换后的class,都从HttpJspBase继承u函数Serviceu直接转成Java代码放到Service函数里面uHTML代码直接被写到writer回馈给用户u对应为response.setContentType()的语句up认识认识JSP转换后的转换后的.java文件文件7JSP特点n内容的生成和显示进行
4、分离p网页设计人员和Java程序员的工作关系不再那么紧密n可移植性(一次编写、各处运行)nJSP具有广泛的平台适用性nJSP连接多种数据库n简单、容易入门n81JSP工作原理2JSP脚本元素3JSP指令元素4JSP动作组件5JSP内置对象9脚本元素n脚本元素:在和之间,添加以的Java代码 包括:p“注释”p“表达式”p“声明”p“脚本段”/“代码段”10脚本元素注释 nHTML注释:这种注释发送到客户端,但不直接显示,在源代码中可以查看到。nJSP隐藏注释:不发送到客户端。nJava注释方式:/单行注释 /*/11%for(inti=1;iH你好/H程序程序1:expression.jsp(
5、添加注释后)(添加注释后)12脚本元素表达式l输出表达式的计算结果l语法:表达式中的变量必须是已声明过的变量表达式中的变量必须是已声明过的变量l与之间不能有空格空格且表达式后面不需不需要分号要分号13%for(inti=1;iH你好/H程序1:expression.jsp(表达式)14脚本元素声明JSP声明语法格式如下:nn任何内容必须是合法的Java语句,因此变变量量声声明总是用分号来结束明总是用分号来结束例如:15声明n声明的类型:p变量声明u声明的变量成了JSP页面被转换和编译后的Servlet类的实例变量u语法:u16声明n方法声明p方法将编译成的Servlet类的方法p可以由页面上所
6、有脚本元素访问u17 您是第您是第 个访问本站的客户。个访问本站的客户。程序2:statement_vary.jsp表达式表达式变量声明变量声明18p使用方式声明的变量是类成员变量:u变量的内存空间直到服务器关闭才释放服务器关闭才释放u当多个客户请求一个JSP页面时,JSP引擎为每个客户启动一个线程u线程由JSP引擎服务器来管理,线程共享共享JSP页页面的成员变量面的成员变量,因此任何一个用户对JSP页面成成员变量操作的结果,都会影响到其他用户员变量操作的结果,都会影响到其他用户19脚本元素程序段 nJSP脚本段语法格式如下:20%condition=1;switch(condition)ca
7、se 0:out.println(You must select condition 0!+);break;case 1:out.println(You must select condition 1!+);break;default:out.println(Your select not in 0,1,select again!+);%21%!、%=和%之间的区别 n变量声明%!后面必须带分号n表达式可以包含任何语言表达式,并不以分号结束n代码段中,如果语言要求语句以分号结束,则必须提供分号22nn nnnJSPDeclarationsn%!nintcount=0;/声明在声明在内的变量内的
8、变量 n voidmethod()n%n%ninti=0;/声明在声明在内的变量内的变量 n%nncount:ni:nn变量声明变量声明和和区别区别23n原先声明在内的变量和方法是一个类内的变量和方法也就是成员变量和成员方法成员变量和成员方法。n声明在内的变量是一个方法的变量也就是局部变局部变量量。n成员变量会被多个对象共享,而局部变量单独对象访问。变量声明和区别241JSP工作原理2JSP脚本元素3JSP指令元素4JSP动作组件5JSP内置对象25JSP指令是从JSP向Web容器发送的消息,它们不产生任何可见的输出,告诉JSP引擎对JSP页面处理。注意:指令的作用范围仅限于包含指令本身的JS
9、P页面。JSP的指令格式为:26nJSP指令包括page、include和taglibppage用于定义JSP文件中的全局属性。pinclude把内容分割成更多的可管理元素ptaglib用来创建自定义标记27page指令npage指令用于定义JSP文件中的全局属性JSP语法格式如下:%pagelanguage=“java”/声明脚本语言的种类,默认import=“package.class|package.*,.”/需要导入Java包与Java语言中的import关键字意义一样 默认情况下会导入:java.lang.*、javax.servlet.*、javax.servlet.jsp.*、j
10、avax.servlet.http.*28session=“true|false”/决定JSP网页是否可以使用session对象 buffer=“none|8kb|sizekb”/设置JSP网页的缓冲区,如果属性值为none,不缓冲,输出直接通过ServletResponse的printWriter输出29autoFlush=true|falsep设置如果buffer溢出,是否自动刷新p该属性的默认值为true,表示当缓冲区满时,到客户端的输出将会自动刷新p若该属性为false,则当缓冲区满时,出现缓冲区溢出异常p当buffer=none,autoFlush属性值不能设置为false。因为bu
11、tter=none时,表明没有设置缓冲区,因而JSP页面的jspWriter本身将会自动刷新新缓冲区自动刷新新缓冲区。isThreadSafe=“true|false”p设置Jsp文件是否能多线程使用,处理多个用户的请求 p默认值true,在运行JSP页面时,可能会同时接受多个客户的请求。当该属性取值为false时,一个JSP处理器将会逐个的接受客户的请求。30info=“text”p在该属性中定义了一个任意的字符串,用来说明JSP页面中待说明的信息pServlet.getServletInfo()方法查到该信息的详细情况errorPage=relativeURLp该属性用于表示当发生异常错误
12、时调用的JSP页面isErrorPage=“true|false”p设置此页是否为出错页谁呀?谁呀?%String s=getServletInfo();out.print(+s);%31contentTypepppcontentType指定了服务器响应的 HTTP内容类型(MIME类型)、charset 指定了JSP页面回应时页面回应时的字符编码方式p默认默认contentType=text/html,charset=ISO-8859-1MIME类型:类型:p(MultipurposeInternetMailExtensions)多用途互联网邮件扩展类型p设定某种扩展名的文件用一种应用程序来
13、打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开p常见的MIME类型(通用型):p超文本标记语言文本.htmltext/htmlpxml文档.xmltext/xmlp普通文本.txttext/plainppageEncoding pppageEncoding指明了JSP页页面面本本身身的编码格式,跟页面显示的编码没有关系p默认默认contentType=text/html,charset=ISO-8859-132JSP要经过两次的要经过两次的“编码编码”:pjsp编编译译成成Servlet(.java)文文件件,根据pageEncoding的设定读取jsp,翻译成
14、统一的UTF-8JAVA源码(即.java)pServlet文文件件(.java)到到Java字字节节码码文文件件(.class),从UTF-8到UTF-8。在这一阶段中,不论JSP编写时候用的是什什么么编编码码方方案案,JAVAC用UTF-8的encoding读取java源码,编译成UTF-8编码的二进制码(即.class)。这一过程是由JVM的内在规范决定的,不受外界控制p从从服服务务器器到到浏浏览览器器,这在一过程中用到的指令是contentType。服务器载入和执行由第二阶段生成出来JAVA二进制码,输出的结果,就是在客户端可见到的结果,在输出过程中,由contentType属性中的c
15、harset来指定,将UTF8形式的二进制码以charset的编码形式来输出容器根据容器根据pageEncoding的设定将的设定将JSP转化转化为内部使用的为内部使用的Unicode,而页面显而页面显示的时候将内部的示的时候将内部的Unicode转换为转换为contentType指定的编码后显示页面指定的编码后显示页面内容内容33ncontentType-charset、pageEncoding相互影响和作用域,以及先后作用顺序 JSP页面本身的页面本身的字符编码字符编码p如果pageEncoding属性存在,那么JSP页面本身的页面本身的字符编码字符编码方式就由pageEncoding决定
16、p否则就由contentType属性中的charset决定,如果charset也不存在,JSP页面的字符编码方式就采用默认的ISO-8859-1JSP页页面面回回应应时时的的字字符符编编码码方方式式需需要要通通过过contentType-charset设定pTomcat中如果在jsp中设定了pageEncoding,则contentType也跟着设定成相同的编码了总结:通常在总结:通常在JSP页面设定页面设定即可即可34对于page指令,需要说明的是:p可以在一个页面中引用多个多个指令,但是其中的属性只能用一次属性只能用一次,不过也有例外,那就是import属性属性。因为import属性和Ja
17、va中的import语句类似(import语句引入的是Java语言中的类),所以此属性就能多用几次。p无论把指令放在JSP的文件的哪个地方,它的作用范围作用范围 都是整个都是整个JSP页面页面。不过,为了JSP程序的可读性,及好的编程习惯,最好还是把它放在JSP文件的顶部。35include指令向向JSPJSP页面内某处页面内某处静态静态静态静态插入一个文件,这个文件插入一个文件,这个文件 可以是可以是HTMLHTML文件、文件、JSPJSP文件或其他文本文件。文件或其他文本文件。JSP JSP 语法格式语法格式语法格式语法格式:36注意注意37include示例示例程序4:include.j
18、sp在当前页面中加入在当前页面中加入copyright.html源代码然后源代码然后再编译整个文件再编译整个文件 使用使用include指令把指令把一个页面分成不同的部分一个页面分成不同的部分,最后合成一个完整的文件,有助于实现最后合成一个完整的文件,有助于实现jsp页页面的面的模块化模块化 示例示例138GantryHTMLAlltherightsarereservedcopyright.htmlcopyright.html39include示例示例示例示例240您是第您是第 个访问本站的客户。个访问本站的客户。copyright.jsp4142431JSP工作原理2JSP脚本元素3JSP指
19、令元素4JSP动作组件5JSP内置对象44JSP动作组件动态插入文件、调用动态插入文件、调用JavaBean等等动作元素动作元素45常见的常见的JSP动作组件共有以下几种:动作组件共有以下几种:在页面被请求的时候引入一个文件。:把请求转到一个新的页面。:在动作组件中引入参数信息。:插入一个applet或Bean。:设置JavaBean的属性。:输出某个JavaBean的属性。:寻找或者实例化一个JavaBean。JSP动作组件46includeinclude动作组件动作组件把指定文件插入正在生成的页把指定文件插入正在生成的页面。面。其语法如下:其语法如下:jsp:include page=/f
20、lushflush属性:属性:flush=true,在缓存累积了一定数据时,服务器会先提供一部分数据给浏览器,并等待后续内容。在简单页面中,该属性不纳入考虑,而在页面包含大量数据时,为缩短客户端延迟,可将一部分内容先行输出。jsp:include jsp:include47程序5:includeaction.jspinclude示例示例48copyright.jsp您是第您是第 个访问本站的客户。个访问本站的客户。copyright.jsp49 include include动作组件动作组件 指令元素 动作指令前者:,读入指定页面的内容并和原来的页面融合到一起,合成一个文件后被jsp容器将它转
21、化成servlet(.java文件)后者:jsp:include动作指令引入页面时,实际只是引用了插入文件被转化并被编译后产生的servlet类文件(.class文件).插入文件是作为一个单独的文件在执行后才被.jsp文件运行时调用运行后,一个新的.java文件和.class文件50 include include动作组件动作组件 主要有两个方面的不同:一:执行时间上:是在翻译阶段执行在请求处理阶段执行.二:引入内容的不同:引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.引入执行页面或servlet所生成的应答文本.51forwardforward动作组
22、件动作组件:控制从一个页面传到另一个:控制从一个页面传到另一个页面页面(在向目标文件转发过程中,可以向目标(在向目标文件转发过程中,可以向目标文件传送参数和值文件传送参数和值)其语法如下:其语法如下:jsp:forward page=/jsp:forwardjsp:forward52程序6:forward.jsp当前推荐图书清单当前推荐图书清单:0.5)%53国画国画梅次故事梅次故事朝夕之间朝夕之间1.jsp1.jsp54J2EE编程技术编程技术 J2EE服务器端高级编程服务器端高级编程JSP高级编程高级编程2.jsp2.jsp55param动作组件:用于传递参数信息,必须配合或或动作组件一起
23、使用。语法如下:当该组件与一起使用时,可以将param组件中的值传递到include动作组件要加载的文件中去。jsp:param 56加载文件效果:加载文件效果:示例示例157%Stringstart=request.getParameter(start);/获取值。获取值。Stringend=request.getParameter(end);/获取值。获取值。ints=Integer.parseInt(start);inte=Integer.parseInt(end);intsum=0;for(inti=s;i从从到到的连续和是:的连续和是:add.jsp58向向jsp:forward传递
24、参数示例:传递参数示例:向向jsp:forward传递参数示例:传递参数示例:示例示例259欢迎您!欢迎您!welcome.jsp60nPlugin动作组件:用于在浏览器中播放或显示一个对象(典型的就是applet和Bean),必要的话还要下载Java插件用于执行它。n在页面中使用普通的HTML标记可以让客户下载运行一个javaapplet小应用程序,但并不是所有的客户的浏览器都支持javaapple小程序。使用plugin动作标签可以保证客户端能执行小应用程序 jsp:plugin61 JSP语法格式如下:/用户使用InternetExplorer浏览器时需下载JRE插件的URL64jsp:
25、paramname=parameterNamevalue=parameterValue|/+/传递给applet或Bean的参数和值。为了传递多个参数和值,可以在jsp:params元素中使用多个标签.Applets取得参数是通过取得参数是通过java.applet.Applet.getParameter方法方法 textmessageforuser/如果plugin插件不能使用时,显示给用户的信息 65importjava.applet.Applet;importjava.awt.Color;importjava.awt.Graphics;publicclassCircleextendsAp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 第二 _JSP 编程
限制150内