您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > J2EE课件第九讲JSP
第九讲JSP开发湖南文理学院计算机学院王蓉内容回顾Servlet的概念Servlet的生命周期Servlet的工作方式Servlet的编程接口Servlet与客户端的交互Servlet过滤器本讲教学教学内容教学目标:9.1JSP简介9.2JSP指令9.3JSP声明9.4JSP隐含对象教学重点:JSP的基本元素及其使用方法教学难点:JSP的语法9.1JSP简介JSP(JavaServerPages)是指:在HTML中嵌入Java脚本语言由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本语言命令然后将生成的整个页面信息返回给客户端JSP页面数据库服务器应用服务器客户端Java脚本语言12349.1.1JSP执行过程3执行2翻译编译1请求响应应用服务器客户端JSP文件.java.class9.1.1JSP执行过程Web容器处理JSP文件请求需要经过3个阶段:翻译阶段:JSP文件会被Web容器中的JSP引擎转换成Java源码编译阶段:Java源码会被编译成可执行的字节码执行阶段:容器接受了客户端的请求后,执行编译成字节码的JSP文件;处理完请求后,容器把生成的页面反馈给客户端进行显示9.1.1JSP执行过程responserequestClientServer查找对应的JSP文件是否存在YN是否是修改或创建后第一次调用调用JspParser将其编译成Servlet程序调用JSDK将对应的Servlet程序编译成Servlet字节码执行(若未载入则先载入)已有的对应的Java字节码NYJSP9.1.1JSP执行过程为什么JSP页面在第一次请求时会比较慢,而之后对同样的JSP页面的请求会非常快?9.1.1JSP执行过程执行第二次请求响应第一次请求之后,Web容器可以重用已经编译好的字节码文件应用服务器客户端.class注意:如果对JSP文件进行了修改,Web容器会重新对JSP文件进行翻译和编译9.1.2JSP的优点将内容与表示分离请求响应JSP页面静态内容动态内容客户端服务器JSP程序员页面设计人员9.1.2JSP的优点强调可重用组件JSP页面1静态内容动态内容JSP页面2静态内容动态内容JSP页面3静态内容动态内容JavaBean多个JSP页面使用相同的JavaBeanJSP页面使用JavaBean产生动态内容,在JSP页面使用标签或脚本利用这些JavaBean9.1.2JSP的优点简化页面开发-Web设计人员和Web程序员使用Web开发工具开发JSP页面JSP页面静态内容动态内容Web开发工具MacromediaDreamweaverMyEclipse.....页面设计人员JSP程序员9.1.3JSP语法概述JSP原始代码中包含了JSP元素和Template(模板)data两类Templatedata指的是JSP引擎不处理的部分,即标记%……%以外的部分,例如代码中的HTML的内容等,这些数据会直接传送到客户端的浏览器JSP元素则是指将由JSP引擎直接处理的部分,这一部分必须符合JSP语法,否则会导致编译错误。9.1.3JSP语法概述JSP元素分为三种不同的类型指令(DIRECTIVE)例如:%@pageimport=“java.io.*”%脚本语法(SCRIPTING)动作语法(ACTION)例如:jsp:forward,jsp:getProperty,jsp:include9.1.3JSP语法概述:页面的元素静态内容指令表达式小脚本%Java代码%%=Java表达式%HTML静态文本以“%@”开始,以“%”结束。比如:%@includefile=Filename%声明标准动作%!方法%以“jsp:动作名”开始,以“/jsp:动作名”结束比如:jsp:includepage=Filename/注释!--这是注释,但客户端可以查看到--%--这也是注释,但客户端不能查看到--%9.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指令静态内容小脚本表达式注释9.1.4JSP通用规则JSP的标记规则起始标记为%或jsp:,结束标记为%或/“jsp:includepage=index.jsp/%if(value0)value=value+42;%起始标记和结束标记一定要在同一个JSP页面中,且成对出现JSP区分大小写。JSP标签是大小写敏感的。JSP元素中的相对路径规则JSP使用的URL要遵循servlet的惯例,并且以一个‘/’开始的URL叫做上下文相关路径,如果URL不是以‘/’开始的,就被解释为相对于当前的JSP。9.1.4JSP通用规则JSP元素中的转义规则在标记中出现的属性值总是用引号括起来的:使用单引号或双引号。如果引号是属性值本身的一部分的话,就可以使用特殊的字符串'和"(就像在HTML中一样)。在标记中可以使用字符\(反斜杠)来作为换码字符(例如,要使用%,就要使用\%字符序列)。在文档体文本中的空白符无关紧要。9.1.4JSP通用规则:错误处理致命的翻译错误将会导致接下来客户端请求的失败,如果使用的是HTTP协议,则错误状态码是600,例如:Error:500UnabletocompileclassforJSP。这是常遇到的一种错误,如果出现上面的提示信息,最好是检查一下源文件是否存在错误。9.1.4JSP通用规则:错误处理在处理客户端请求的时候,也可能发生任何运行的错误,或是在JSP页面类本身中,或在JSP页面实现类中调用的其他代码中。对于这样的错误是通过Java编程语言中的异常机制处理的。这些异常在JSP实现类中就有可能被捕获和处理,但是对于一些不能被捕获的异常将会被转移到该JSP页面所指定的errorPage。9.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);9.2JSP指令JSP指令pageincludetaglibJSP指令的语法为:%@指令名称属性1=属性值1属性2=属性值2…属性n=属性值n%JSP指令包括:9.2.1page指令page指令属性languagepage指令用于设置JSP页面的属性importbuffererrorPageisErrorPagelanguage–定义要使用的脚本语言import–将包和方法导入ScriptletisErrorPage–表示当前页面能否作为错误页面errorPage–定义处理异常的JSP页面buffer–设置用来存储客户端请求的缓冲区的大小9.2.1page指令属性描述缺省值language定义要使用的脚本语言。如果在将来JSP包容器支持多种语言时可使用它“java”import定义以逗号分隔的类或包的列表,就像在通常的Java代码中所使用的import语句那样缺省情况下忽略buffer定义对客户的输出流的缓冲模型。如果值为“none”,则没有缓冲,而是所有的输出都被PrintWriter直接写到ServletResponse中。如果定义了缓冲区的尺寸(如“24kb”),则将输出写到不小于该值的缓冲区中与实现有关,至少为8KB9.2.1page指令%@pagelanguage=“java”import=“java.util.*,…buffer=8kberrorPage=error.jspisErrorPage=false%htmlheadtitle测试page指令/title/headbodyh1这是一个测试页面/h1/body/htmlpage指令属性如果要写则必须写在脚本和表达式的前现,否则会出现错误page指令中只有import属性允许在同一个页面中使用多次9.2.2include指令include指令用于在运行时将HTML文件或JSP页面嵌入到另一个JSP页面include指令语法%@includefile=”文件名”%9.2.1page指令使用include指令进行JSP编程%@pagelanguage=java%%@includefile=head.jsp%htmlheadtitle/title/headbodybrbrh4align=center你好!/h4/body/html要嵌入JSP页面的文件可以使用include指令把一个页面分成不同的部分,最后合并为一个完整的文件,使用JSP的include指令有助于实现JSP页面的模块化。Include指令使用的是相对路径,所以需要把被包含文件放在合适的位置。9.2.3taglib指令taglib指令可以让JSP页面使用标签taglib指令的作用是在JSP页面中,将标签库描述符文件引入到该页面中,并设置前缀,而去利用标签的前缀去使用标签库表述文件中的标签语法一种是指定uri和prefix属性%@tagliburi=”标签库表述符文件”prefix=”前缀名”%一种是指定标签文件%@taglibtagdir=”标签库表述符文件”prefix=”前缀名”%tagdir指明一个相对于根目录的标签文件9.2.3taglib指令taglib指令的使用htmlbody%@tagliburi=/mytaglib.tldprefix=mytags%/body/htmlJSP页面在根目录中搜索mytaglib标签库描述符文件,而mytags前缀将mytaglib中的标签嵌入JSP页面9.3JSP脚本元素JSP脚本元素表达式Scriptlet声明JSP脚本元素包括:9.3.1JSP表达式表达式的概念表达式是对数据的表示,系统将其作为一个值进行计算和显示表达式在JSP页面中的表现形式%=Java表达式%9.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编程注意:表达式中的%和=之间没有空格表达式的后面没有分号”;“当由多个表达组成时,解释顺序为从左到右9.3.2JSPscriptletJSPscriptl
本文标题:J2EE课件第九讲JSP
链接地址:https://www.777doc.com/doc-3213227 .html