J2EE课件-第4章_Jsp编程

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

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

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

资源描述

JavaServerPages(JSP)网页程序设计简介JavaServerPageHTML文件中加入Java程序片段(Scriptlet)和JSP标记(Tag),文件后缀通常为.jsp程序片段和JSP标记可以实现操作数据库、重新定向网页以及发送电子邮件等操作服务器端组件,需要WebContainer的支持32020/2/53JSP生成页面过程42020/2/54JSP工作原理JSP页面的具体执行步骤52020/2/55缓存机制在原来的JSP页面没有发生改变的情况下,任何浏览器向JSP容器发出对该JSP页面的再次请求时,会直接把响应的输出结果发送到浏览器端62020/2/56JSP页面生命周期JSP页面生命周期包括两个阶段转换阶段(TranslationPhase)执行阶段(ExecutionPhase)72020/2/57转换阶段将JSP页面转换成实现类(Servlet)•一般是在接收和处理客户端请求JSP页面时转换•也可以在JSP页面初始配置到容器时转换。每个JSP页面最终都会由JSP容器创建对应的实现类。JSP容器检查JSP页面语法、生成对应JSP页面的Java实现类(Servlet)的Java源码(.java),并将源码编译成类的字节码文件(.class)。转换阶段生成的页面实现类及对应的编译结果存放位置:work\Catalina\localhost\应用程序名\org\apache\jsp82020/2/58执行阶段Web容器将请求定位到相应的实例,处理请求、生成响应结果,返回给客户端9JSP文件结构及主要标签%@pagecontentType=text/html;charset=gb2312%%@pageimport=java.util.*“%...HTMLBODY其他HTML语言%符合JAVA语法的JAVA语句%其他HTML语言/BODY/HTML10JSP示例(Hello.jsp)%@pagecontentType=text/html;charset=gb2312%%@pageimport=java.util.*%HTMLBODY%for(inti=0;i2;i++){%你好br%}%/BODY/HTMLHTMLBODY你好br你好br/BODY/HTML11HttpJspBase类的继承结构java.lang.Objectjavax.servlet.GenericServletjavax.servlet.http.HttpServletorg.apache.jasper.runtime.HttpJspBaseJsp的本质是Servlet12JSP执行过程*.jsp*.java*.classrequestresponse执行jspparserJSDKservletservlet分析器13JSP执行过程查找对应的JSP文件是否存在YN是否是修改或创建后第一次调用Y调用JspParser将其编译成Servlet程序调用JSDK将对应的Servlet程序编译成Servlet字节码执行(若未载入则先载入)已有的对应的Java字节码N14JSP示例(Hello_Date.jsp)%@pageimport=java.util.*%%@pagecontentType=text/html;charset=gb2312%HTMLBODY你好,今天是%Datetoday=newDate();%%=today.getDate()%号,星期%=today.getDay()%/BODY/HTMLimportjava.util.*;response.setContentType(text/html;charset=gb2312);out=pageContext.getOut();out.write(“\r\n\r\nHTML\r\nBODY\r\n你好,今天是\r\n);Datetoday=newDate();out.print(today.getDate());out.write(号,星期);out.print(today.getDay());out.write(\r\n/BODY\r\n/HTML\r\n);JSP文件servlet文件15JSP语法概述JSP元素分为三种不同的类型编译器指令(DIRECTIVE)例如:%@pageimport=“java.io.*”%脚本语法(SCRIPTING)例如:%inti;%动作语法(ACTION)例如:jsp:forward,jsp:getProperty,jsp:include16脚本语法脚本语法包括“HTML注释”:!—comments--“隐藏注释”:%--comments--%“声明”“表达式”“脚本段”172020/2/517JSP注释HTML格式注释浏览器端可以看到注释的内容!--这里是HTML格式的注释--JSP代码注释一行或多行%--开发人员专用注释标记--%Java语言注释单行注释//;多行/**/Java源文件会保留这些注释例:expression.jsp18HTML注释JSP语法格式如下:!--comment[%=expression%]--或!--注释[%=表达式%]--这种注释发送到客户端,但不直接显示,在源代码中可以查看到。192020/2/519JSP基本元素JSP页面组成模板数据:指的是JSP引擎不处理的部分,例如代码中的HTML的内容等,这些数据会直接传送到客户端的浏览器JSP元素:是指将由JSP引擎直接处理的部分,这一部分必须符合JSP语法,否则会导致编译错误。JSP容器支持的元素类型有三种指令元素(DirectiveElements)行为元素(ActionElements)脚本元素(ScriptingElements)20JSP基本元素htmlheadtitleHi-JSP实验/title/headbody%StringMsg=ThisisJSPtest.;out.print(HelloWorld!);%h2%=Msg%/h2/body/htmlTemplatedataJSP元素212020/2/521指令元素发生在转换阶段,用来影响Web容器的行为语法格式:%@指令名属性1=”值1”属性2=”值2”...%JSP中包括三种指令:page指令taglib指令include指令222020/2/522page指令page指令定义JSP页面相关的属性。语法格式如下:%@page属性1=”值1”属性2=”值2”...%page指令是位置无关的,但由于属性pageEncoding和contentType决定页面的字符编码,因此必须在页面的开始设置。page指令的属性:language、extends、import、session、buffer、autoFlush、isThreadSafe、info、errorPage、isErrorPage、contentType、pageEncoding和isELIgnored等。23page指令语法格式:%@page[language=“java”][info=“text”][import=“{package.class|package.*},…”][session=“true|false”][contentType=“mimeType[;charset=characterSet]”|”text/html;charset=8859-1”][pageEncoding=“GBK|8859-1|……”][errorPage=“relativeURL”][isErrorPage=“true|false”][buffer=“none|8kb|sizekb”][autoFlush=“true|false”][isELIgnored=“true|false”]%2020/2/52324page指令language属性定义在转换单元中声明、脚本片段和表达式中所使用的语言默认值是java,目前JSP中只能使用java可以不写,如果写必须写在声明、脚本片段和表达式的前面例如:%@pagelanguage=“java”%2020/2/52425page指令info属性通常用于定义JSP页面的描述信息。属性值是任意的一个字符串,该字符串与页面一起编译。属性值使用getServletInfo()方法得到。例:infotest.jsp2020/2/52526page指令import属性用于导入JSP文件中要使用到的java包或者类的列表。是唯一一个可以重复使用的属性。JSP中默认的导入列表是:java.lang.*;javax.servlet.*;javax.servlet.jsp.*;javax.servlet.http.*例如:%@pageimport=“java.io.*,java.util.*”%2020/2/52627page指令session属性属性值为“true”,在页面中可以使用内部对象session,属性值为“false”,在页面中不允许使用session,session的默认值为“true”。2020/2/52728page指令contentType属性用于设置返回浏览器网页的内容类型和字符编码格式。内容类型包括:text/plain,text/html(默认),application/x-msexecl,application/msword等。字符编码格式默认为西欧字符编码ISO-8859-1。如果需要在返回浏览器的HTML页面中显示中文,我们经常会用到字符集GBK。例如:%@pagecontentType=“text/html;charset=GBK”%2020/2/52829page指令pageEncoding属性指定JSP页面的字符编码,默认为ISO-8859-1例如:%@pagepageEncoding=“GBK”%2020/2/529302020/2/530page指令errorPage属性指定当前页面产生异常时的处理文件%@pageerrorPage=“Error.jsp”%isErrorPage属性指定当前JSP页面是否可以作为另一个JSP页面的错误处理页面如果值为“true”,说明是异常处理页面,能够使用exception对象。如果isErrorPage属性的值为“false”,说明不是异常处理页面,不能够使用exception对象。isErrorPage的默认值是false。例:testError.jsp和Error.jsp31page指令buffer属性指定处理页面输出内容时的缓冲区大小。默认值是8kb。如果buffer的取值为“none”,输出将不使用缓冲,所有输出都直接写到客户端。置缓冲区的大小只能是kb的整数倍,页面的输出首先被写入指定大小的缓冲区内。当缓冲区变满时如何处理取决于autoFlush属性的值buffer指定的值只是缓冲区的最小值,JSP容器选择的缓冲区可能比指定的大。例如:%@pagebuffer=“16kb”%2020/2/53132page指令autoFlush属性autoFlush属性控制的是当页面输出进入缓冲区并且缓冲区变满的情况。如果autoFlush属性取值“true”,那么缓冲区变满之后需要强制输出。如果autoFlush属性取值“false”,那么缓冲区变满之后将引发一个异常。autoFlush属性的默认值是“true”。

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

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

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

×
保存成功