J2EE课件第八讲JSP

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第八讲JSP开发湖南文理学院计算机学院王蓉内容回顾Servlet的概念Servlet的生命周期Servlet的工作方式Servlet的编程接口Servlet与客户端的交互Servlet过滤器本讲教学教学内容教学目标:8.1JSP简介8.2JSP指令8.3JSP声明8.4JSP隐含对象教学重点:JSP的基本元素及其使用方法教学难点:JSP的语法8.1JSP简介JSP(JavaServerPages)是指:在HTML中嵌入Java脚本语言由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本语言命令然后将生成的整个页面信息返回给客户端JSP页面数据库服务器应用服务器客户端Java脚本语言12348.1.1JSP执行过程3执行2翻译编译1请求响应应用服务器客户端JSP文件.java.class8.1.1JSP执行过程Web容器处理JSP文件请求需要经过3个阶段:翻译阶段:JSP文件会被Web容器中的JSP引擎转换成Java源码编译阶段:Java源码会被编译成可执行的字节码执行阶段:容器接受了客户端的请求后,执行编译成字节码的JSP文件;处理完请求后,容器把生成的页面反馈给客户端进行显示8.1.1JSP执行过程responserequestClientServer查找对应的JSP文件是否存在YN是否是修改或创建后第一次调用调用JspParser将其编译成Servlet程序调用JSDK将对应的Servlet程序编译成Servlet字节码执行(若未载入则先载入)已有的对应的Java字节码NYJSP8.1.1JSP执行过程为什么JSP页面在第一次请求时会比较慢,而之后对同样的JSP页面的请求会非常快?8.1.1JSP执行过程执行第二次请求响应第一次请求之后,Web容器可以重用已经编译好的字节码文件应用服务器客户端.class注意:如果对JSP文件进行了修改,Web容器会重新对JSP文件进行翻译和编译8.1.2JSP的优点将内容与表示分离请求响应JSP页面静态内容动态内容客户端服务器JSP程序员页面设计人员8.1.2JSP的优点强调可重用组件JSP页面1静态内容动态内容JSP页面2静态内容动态内容JSP页面3静态内容动态内容JavaBean多个JSP页面使用相同的JavaBeanJSP页面使用JavaBean产生动态内容,在JSP页面使用标签或脚本利用这些JavaBean8.1.2JSP的优点简化页面开发-Web设计人员和Web程序员使用Web开发工具开发JSP页面JSP页面静态内容动态内容Web开发工具MacromediaDreamweaverMyEclipse.....页面设计人员JSP程序员8.1.3JSP语法概述JSP原始代码中包含了JSP元素和Template(模板)data两类Templatedata指的是JSP引擎不处理的部分,即标记%……%以外的部分,例如代码中的HTML的内容等,这些数据会直接传送到客户端的浏览器JSP元素则是指将由JSP引擎直接处理的部分,这一部分必须符合JSP语法,否则会导致编译错误。8.1.3JSP语法概述JSP元素分为三种不同的类型指令(DIRECTIVE)例如:%@pageimport=“java.io.*”%脚本语法(SCRIPTING)动作语法(ACTION)例如:jsp:forward,jsp:getProperty,jsp:include8.1.3JSP语法概述:页面的元素静态内容指令表达式小脚本%Java代码%%=Java表达式%HTML静态文本以“%@”开始,以“%”结束。比如:%@includefile=Filename%声明标准动作%!方法%以“jsp:动作名”开始,以“/jsp:动作名”结束比如:jsp:includepage=Filename/注释!--这是注释,但客户端可以查看到--%--这也是注释,但客户端不能查看到--%8.1.3JSP语法概述:页面的元素%@pagelanguage=javaimport=java.util.*,java.text.*contentType=text/html;charset=GBKpageEncoding=GBK%htmlheadtitle输出当前日期/title/head!--这是HTML注释(客户端可以看到源代码)--%--这是JSP注释(客户端不可以看到源代码)--%body你好!今天是%//使用预定格式将日期转换为字符串SimpleDateFormatformater=newSimpleDateFormat(yyyy年MM月dd日);StringstrCurrentTime=formater.format(newDate());%%=strCurrentTime%/body/html指令静态内容小脚本表达式注释8.1.4JSP通用规则JSP的标记规则起始标记为%或jsp:,结束标记为%或/“jsp:includepage=index.jsp/%if(value0)value=value+42;%起始标记和结束标记一定要在同一个JSP页面中,且成对出现JSP区分大小写。JSP标签是大小写敏感的。JSP元素中的相对路径规则JSP使用的URL要遵循servlet的惯例,并且以一个‘/’开始的URL叫做上下文相关路径,如果URL不是以‘/’开始的,就被解释为相对于当前的JSP。8.1.4JSP通用规则JSP元素中的转义规则在标记中出现的属性值总是用引号括起来的:使用单引号或双引号。如果引号是属性值本身的一部分的话,就可以使用特殊的字符串'和"(就像在HTML中一样)。在标记中可以使用字符\(反斜杠)来作为换码字符(例如,要使用%,就要使用\%字符序列)。在文档体文本中的空白符无关紧要。8.1.4JSP通用规则:错误处理致命的翻译错误将会导致接下来客户端请求的失败,如果使用的是HTTP协议,则错误状态码是600,例如:Error:500UnabletocompileclassforJSP。这是常遇到的一种错误,如果出现上面的提示信息,最好是检查一下源文件是否存在错误。8.1.4JSP通用规则:错误处理在处理客户端请求的时候,也可能发生任何运行的错误,或是在JSP页面类本身中,或在JSP页面实现类中调用的其他代码中。对于这样的错误是通过Java编程语言中的异常机制处理的。这些异常在JSP实现类中就有可能被捕获和处理,但是对于一些不能被捕获的异常将会被转移到该JSP页面所指定的errorPage。8.1.4JSP通用规则:中文的显示JSP页面缺省情况:charset=ISO-8859-1,中文显示出现乱码。要正确显示中文。%@pagecontentType=text/html;charset=GBK%Stringstr=request.getParameter(“name”);Str=newString(str.getBytes(ISO-8859-1),”GBK”);out.println(str);8.2JSP指令JSP指令pageincludetaglibJSP指令的语法为:%@指令名称属性1=属性值1属性2=属性值2…属性n=属性值n%JSP指令包括:8.2.1page指令page指令属性languagepage指令用于设置JSP页面的属性importbuffererrorPageisErrorPagelanguage–定义要使用的脚本语言import–将包和方法导入ScriptletisErrorPage–表示当前页面能否作为错误页面errorPage–定义处理异常的JSP页面buffer–设置用来存储客户端请求的缓冲区的大小8.2.1page指令属性描述缺省值language定义要使用的脚本语言。如果在将来JSP包容器支持多种语言时可使用它“java”import定义以逗号分隔的类或包的列表,就像在通常的Java代码中所使用的import语句那样缺省情况下忽略buffer定义对客户的输出流的缓冲模型。如果值为“none”,则没有缓冲,而是所有的输出都被PrintWriter直接写到ServletResponse中。如果定义了缓冲区的尺寸(如“24kb”),则将输出写到不小于该值的缓冲区中与实现有关,至少为8KB8.2.1page指令%@pagelanguage=“java”import=“java.util.*,…buffer=8kberrorPage=error.jspisErrorPage=false%htmlheadtitle测试page指令/title/headbodyh1这是一个测试页面/h1/body/htmlpage指令属性如果要写则必须写在脚本和表达式的前现,否则会出现错误page指令中只有import属性允许在同一个页面中使用多次8.2.2include指令include指令用于在运行时将HTML文件或JSP页面嵌入到另一个JSP页面include指令语法%@includefile=”文件名”%8.2.1page指令使用include指令进行JSP编程%@pagelanguage=java%%@includefile=head.jsp%htmlheadtitle/title/headbodybrbrh4align=center你好!/h4/body/html要嵌入JSP页面的文件可以使用include指令把一个页面分成不同的部分,最后合并为一个完整的文件,使用JSP的include指令有助于实现JSP页面的模块化。Include指令使用的是相对路径,所以需要把被包含文件放在合适的位置。8.2.3taglib指令taglib指令可以让JSP页面使用标签taglib指令的作用是在JSP页面中,将标签库描述符文件引入到该页面中,并设置前缀,而去利用标签的前缀去使用标签库表述文件中的标签语法一种是指定uri和prefix属性%@tagliburi=”标签库表述符文件”prefix=”前缀名”%一种是指定标签文件%@taglibtagdir=”标签库表述符文件”prefix=”前缀名”%tagdir指明一个相对于根目录的标签文件8.2.3taglib指令taglib指令的使用htmlbody%@tagliburi=/mytaglib.tldprefix=mytags%/body/htmlJSP页面在根目录中搜索mytaglib标签库描述符文件,而mytags前缀将mytaglib中的标签嵌入JSP页面8.3JSP脚本元素JSP脚本元素表达式Scriptlet声明JSP脚本元素包括:8.3.1JSP表达式表达式的概念表达式是对数据的表示,系统将其作为一个值进行计算和显示表达式在JSP页面中的表现形式%=Java表达式%8.3.1JSP表达式bodyh1JSP表达式/h1bPI的值:/b%=Math.PI%br/b100,99中最大的值:/b%=Math.max(100,99)%br/b100,99中最小的值:/b%=Math.min(100,99)%br/b3+2-5的值:/b%=3+2-5%br/b(3+2)==5的值:/b%=(3+2)==5%br/b(3+2)!=5的值:/b%=(3+2)!=5%br//body表达式使用JSP表达式进行JSP编程注意:表达式中的%和=之间没有空格表达式的后面没有分号”;“当由多个表达组成时,解释顺序为从左到右8.3.2JSPscriptletJSPscriptl

1 / 66
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功