第二章 JSP页面与JSP标记new_第1页
第二章 JSP页面与JSP标记new_第2页
第二章 JSP页面与JSP标记new_第3页
第二章 JSP页面与JSP标记new_第4页
第二章 JSP页面与JSP标记new_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JSP应用程序设计济南大学信息学院刘鹍liukun@22内容回顾JSP的中文含义JSP的基本原理JSP的开发环境JSP程序的开发Web服务目录3内容回顾3翻译阶段编译阶段请求处理阶段Server存储的JSP文件(*.jsp)(抽象)请求(抽象)响应(抽象)会话JavaServet实现代码(*.java)Java翻译工具翻译转换JavaServet实现类(*.class)Java编译工具编译JavaServet实现对象JSP容器激活请求准备请求响应会话JSP基本原理4回顾从最简单的JSP页面我们已经知道:JSP是服务器端的技术JSP页面中有基本的HTMLJSP页面中还有JSP特有的东西,它们是……4<%@pagecontentType="text/html;charset=GB2312"%><HTML><BODYBGCOLOR=cyan><h3>这是一个简单的JSP页面</h3>

<%inti,sum=0;for(i=1;i<=100;i++){sum=sum+i;}%><h5>1到100的连续和是:

<%=sum%></h5></BODY></HTML>第二章JSP页面与JSP标记6第二章JSP页面与JSP标记主要内容JSP页面的基本结构变量和方法的声明Java程序片表达式JSP中的注释JSP指令标记JSP动作标记难点Java程序片的运行原理Include指令标记与include动作标记关键实践编写包含5种基本元素的JSP页面编写含有JSP指令标记和动作标记的JSP页面6第二章JSP页面和JSP标记2.1JSP页面的基本结构2.2变量和方法的声明2.3Java程序片2.4表达式2.5JSP中的注释2.6JSP指令标记2.7JSP动作标记82.1JSP页面的基本结构JSP页面的基本结构模板元素静态HTML/XML内容JSP元素脚本元素(声明、表达式、Scriptlet)指令元素动作元素注释8<%@pagecontentType="text/html;charset=GBK"%><HTML><BODYBGCOLOR=cyan><h3>这是一个简单的JSP页面</h3>

<%inti,sum=0;for(i=1;i<=100;i++){sum=sum+i;}%><h5>1到100的连续和是:

<%=sum%></h5></BODY></HTML>92.1JSP页面的基本结构JSP页面可由5种元素组合而成:①普通的HTML标记符;②JSP标记,如指令标记、动作标记;③变量和方法的声明;④Java程序片;⑤Java表达式;<%@pagecontentType="text/html;charset=GBK"%><%@pageimport="java.util.Date"%>

<%!

Datedate;intsum;publicintgetFactorSum(intn){for(inti=1;i<n;i++){if(n%i==0)sum=sum+i;}returnsum;}%><HTML><BODYbgcolor=cyan>

<FONTsize=4><P>程序片创建Date对象:

<%date=newDate();

out.println("<br>"+date+"<br>");

intm=100;%>

<%=m%>

的因子之和是(不包括<%=m%>):

<%=getFactorSum(m)%></FONT></BODY></HTML>

102.1JSP页面的基本结构JSP页面的运行原理:把JSP页面中普通的HTML标记符号,交给客户的浏览器执行显示。

JSP标记、数据和方法声明、Java程序片由Tomcat服务器负责执行,将需要显示的结果发送给客户的浏览器。

Java表达式由Tomcat服务器负责计算,将结果转化为字符串,交给客户的浏览器负责显示。

第二章JSP页面和JSP标记2.1JSP页面的基本结构2.2变量和方法的声明2.3Java程序片2.4表达式2.5JSP中的注释2.6JSP指令标记2.7JSP动作标记122.2变量和方法的声明1.JSP页面的成员变量:2.在JSP页面的标记符“<%!”和“%>”之间声明方法。该方法在整个JSP页面有效。<%!%>第二章JSP页面和JSP标记2.1JSP页面的基本结构2.2变量和方法的声明2.3Java程序片2.4表达式2.5JSP中的注释2.6JSP指令标记2.7JSP动作标记142.3Java程序片在“<%”和“%>”之间插入Java程序片。程序片中声明的变量称为JSP页面的局部变量。多个客户请求一个JSP页面时,Java程序片将被执行多次,分别在不同的线程中执行。152.2变量和方法的声明成员变量与局部变量:<%@pagecontentType="text/html;charset=GBK"%><HTML><BODYBGCOLOR=cyan><FONTsize=4>

<%!inti=0;%><%intj=0;i++;j++;%><P>您是第<%=i%>(i)个访问本站的客户。<P>您是第<%=j%>(j)个访问本站的客户。</FONT></BODY></HTML>第二章JSP页面和JSP标记2.1JSP页面的基本结构2.2变量和方法的声明2.3Java程序片2.4表达式2.5JSP中的注释2.6JSP指令标记2.7JSP动作标记172.4表达式“

<%=”和“%>”之间可以是一个Java表达式。表达式的值由服务器负责计算,并将计算结果用字符串形式发送到客户端显示。<%@pagecontentType="text/html;charset=GBK"%><HTML><BODYBGCOLOR=cyan><FONTsize=4>

<%!inti=0;%><%intj=0;i++;j++;%><P>您是第<%=i%>(i)个访问本站的客户。<P>您是第<%=j%>(j)个访问本站的客户。</FONT></BODY></HTML>2.4表达式思考:<%=%>与<%System.out.println(“”)%>有区别吗?18<%@pagecontentType="text/html;charset=GBK"%><HTML><BODYBGCOLOR=cyan><FONTsize=4><%!inti=0;%><%i++;System.out.println("System.out.println:"+i);%><P>您是第

<%=i%>

个访问本站的客户。</FONT></BODY></HTML>第二章JSP页面和JSP标记2.1JSP页面的基本结构2.2变量和方法的声明2.3Java程序片2.4表达式2.5JSP中的注释2.6JSP指令标记2.7JSP动作标记202.5JSP中的注释1.HTML注释格式:2.JSP注释格式:

注:程序片中的注释//<!--注释内容--><%--注释内容--%>212.5JSP中的注释思考:<!--注释内容-->

和<%--注释内容--%>有什么区别?<%@pagecontentType="text/html;charset=GB2312"%><HTML><BODYBGCOLOR=cyan>测试注释的区别,请查看页面源码。<!--现在时间是:<%=(newjava.util.Date()).toLocaleString()%>--><%--现在时间是:<%=(newjava.util.Date()).toLocaleString()%>--%></FONT></BODY></HTML>22小结:JSP语法JSP数据定义JSP程序块JSP表达式JSP注释<%!

变量声明

%><% Java片段代码%><%=Java表达式%><%--注释内容--%><!--注释内容[<%=表达式%>]-->23课堂交流JSP与Java24第二章JSP页面与JSP标记主要内容JSP页面的基本结构变量和方法的声明Java程序片表达式JSP中的注释JSP指令标记JSP动作标记难点Java程序片的运行原理Include指令标记与include动作标记关键实践编写包含5种基本元素的JSP页面编写含有JSP指令标记和动作标记的JSP页面24第二章JSP页面和JSP标记2.1JSP页面的基本结构2.2变量和方法的声明2.3Java程序片2.4表达式2.5JSP中的注释2.6JSP指令标记2.7JSP动作标记2.6JSP指令标记JSP指令(directive)是为JSP引擎而设计的并不直接产生任何可见输出只是告诉引擎如何处理JSP页面中的其余部分在JSP2.0规范中共定义了三个指令:page指令Include指令taglib指令回顾:上节课例子<%@pagecontentType="text/html;charset=GBK"%>27<%@pagecontentType="text/html;charset=GBK"%><HTML><BODYBGCOLOR=cyan><FONTsize=4><%!inti=0;%><%i++;%><P>您是第

<%=i%>

个访问本站的客户。</FONT></BODY></HTML>2.6JSP指令标记JSP指令的基本语法格式:举例:

如果一个指令有多个属性,这多个属性可以写在一个指令中,也可以分开写。

<%@指令属性名="值"%><%@pagecontentType="text/html;charset=gb2312"%>JSP指令pageincludetaglib292.6.1page指令page指令用来定义整个JSP页面的一些属性和属性的值。属性值用单引号或双引号括起来。可以用一个page指令指定多个属性的值

,也可以使用多个page指令分别为每个属性指定值。page指令的作用对整个JSP页面有效,与其书写的位置无关,习惯把page指令写在JSP页面的最前面。page指令属性languageimportbuffererrorPageisErrorPagelanguage–定义要使用的脚本语言import–将包和方法导入ScriptletisErrorPage–表示当前页面能否作为错误页面errorPage–定义处理异常的JSP页面buffer–设置用来存储客户端请求的缓冲区的大小302.6.1page指令contentType属性contentType属性值确定JSP页面响应的MIME(多功能Internet邮件扩充服务,MultipurposeInternetMailExtention)类型和JSP页面字符的编码。注:不允许两次使用page指令给contentType属性指定不同的属性值。pageEncoding属性JSP网页的编码方式。<%@pagecontentType="text/html;charset=GB2312"%><%@pagecontentType="application/msword"%><%@

page

pageEncoding="GBK"%>

2.6.1page指令JSP2.0规范中定义的page指令的完整语法:<%@page [language="java"] [extends="package.class"]

[import="{package.class|package.*},..."] [session="true|false"] [buffer="none|8kb|sizekb"] [autoFlush="true|false"] [isThreadSafe="true|false"] [info="text"] [errorPage="relative_url"] [isErrorPage="true|false"]

[contentType="mimeType[;charset=characterSet]"|"text/html;charset=ISO-8859-1"]

[pageEncoding="characterSet|ISO-8859-1"] [isELIgnored="true|false"]%>2.6.1page指令pageEncoding是JSP文件本身的编码contentType的charset是指服务器发送给客户端时的内容编码JSP要经过两次的“编码”,第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是由Tomcat出来的网页,用的是contentType。第一阶段是JSP编译成Java第二阶段是由Javac的Java源码至JavabyteCode的编译第三阶段是Tomcat(或其的applicationcontainer)载入和执行阶段二的来的Java二进制码3233小结属性含义默认language="scriptingLanguage"容器要用什么语言编译JSP网页javaextends="ClassName"此JSP网页产生的Servlet继承哪个父类import="importList"此JSP网页使用哪些JAVAAPIsession="true|false"JSP网页是否使用session对象truebuffer="none|sizeinkb"输出流是否有缓冲区8KBautoFlush="true|false"输出流的缓冲区是否要自动清除trueisThreadSafe="true|false"网页是否能处理超过一个以上的请求trueinfo="text"此JSP网页的相关信息errorPage="error_url"发生异常时网页被重新指向那一个URLisErrorPage="true|false"此JSP网页是否是处理异常错误的网页falsecontentType="ctinfo"MIME类型和JSP网页的编码方式text/htmlISO-8859-1pageEncoding="ctinfo"JSP网页的编码方式ISO-8859-1isELlgnored="true|false"此JSP网页是否忽略EL表达式true使用page指令解决JSP中文乱码JSP程序存在中文乱码问题输出响应正文时出现的中文乱码问题读取浏览器传递的参数信息时出现的中文乱码问题JSP引擎将JSP页面翻译成Servlet源文件时也可能导致中文乱码问题JSP引擎将JSP源文件翻译成的Servlet源文件默认采用UTF-8编码,而JSP开发人员可以采用各种字符集编码来编写JSP源文件,因此,JSP引擎将JSP源文件翻译成Servlet源文件时,需要进行字符编码转换。如果JSP文件中没有说明它采用的字符集编码,JSP引擎将把它当作默认的ISO-8859-1字符集编码处理。如何解决JSP引擎翻译JSP页面时的中文乱码问题通过page指令的contentType属性说明JSP源文件的字符集编码page指令的pageEncoding属性说明JSP源文件的字符集编码使用page指令解决JSP中文乱码回顾:page指令的pageEncoding和contentType属性回顾JSP工作原理回顾:JSP要经过两次的“编码”第一阶段会用pageEncoding第二阶段会用utf-8至utf-8第三阶段就是由Tomcat出来的网页,用的是contentType35362.6.2include指令标记include指令标记的作用是在JSP页面出现该指令的位置处,静态插入一个文件。其语法格式如下:注:如果该文件和当前JSP页面在同一Web服务目录中,那么“文件的URL”就是文件的名字;如果该文件在JSP页面所在的Web服务目录的一个子目录中,比如fileDir子目录中,那么“文件的URL”就是“fileDir/文件的名字”。

注:静态插入,就是当前JSP页面和插入的文件合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件。<%@includefile="文件的URL"%>2.6.2include指令标记include指令用于引入其它JSP页面,如果使用include指令引入了其它JSP页面,那么JSP引擎将把这两个JSP翻译成一个servlet。所以include指令引入通常也称之为静态引入。语法:

其中的file属性用于指定被引入文件的相对路径。

file属性的设置值必须使用相对路径,如果以“/”开头,表示相对于当前WEB应用程序的根目录(注意不是站点根目录),否则,表示相对于当前文件。细节:被引入的文件必须遵循JSP语法。被引入的文件可以使用任意的扩展名,即使其扩展名是html,JSP引擎也会按照处理jsp页面的方式处理它里面的内容,为了见明知意,JSP规范建议使用.jspf(JSPfragments)作为静态引入文件的扩展名。由于使用include指令将会涉及到2个JSP页面,并会把2个JSP翻译成一个servlet,所以这2个JSP页面的指令不能冲突(除了pageEncoding和导包除外)。<%@includefile="relativeURL"%>taglib指令虽然我们希望JSP页面仅用作数据显示模块,不要嵌套任何Java代码引入任何业务逻辑,但在实际开发中不引入一点业务逻辑是不可能的,但引入业务逻辑会导致页面出现难看Java代码,怎么办?Sun公司(Oracle公司)允许用户开发自定义标签封装页面的Java代码,以便Jsp页面不出现一行Java代码。Taglib指令用于在JSP页面中导入标签库。<%@tagliburi=“标签库表述符文件”prefix=“前缀名”%>第二章JSP页面和JSP标记2.1JSP页面的基本结构2.2变量和方法的声明2.3Java程序片2.4表达式2.5JSP中的注释2.6JSP指令标记2.7JSP动作标记2.7JSP动作标记JspAction(JSP动作)元素也称之为JSP标签,它用于在JSP页面中提供业务逻辑功能。Sun公司(Oracle公司)在JSP页面中内置了一些标签(这些标签叫做JSP标签),开发人员使用这些标签可以完成页面的一些常用业务逻辑。JSP常用标签:JSP动作元素jsp:forwardjsp:includejsp:pluginjsp:useBeanjsp:getPropertyjsp:setProperty412.7JSP动作标记include动作标记<jsp:include>标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。语法格式:

或注:include动作标记是在JSP页面运行时才处理文件,被处理的文件在逻辑和语法上独立于当前JSP页面。page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获得。flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端。<jsp:includepage="文件的URL">param子标记</jsp:include><jsp:includepage="relativeURL|<%=expression%>"flush="true|false"/>2.7JSP动作标记

思考:<jsp:include>与include指令的比较<jsp:include>标签是动态引入,<jsp:include>标签涉及到的2个JSP页面会被翻译成2个servlet,这2个servlet的内容在执行时进行合并。而include指令是静态引入,涉及到的2个JSP页面会被翻译成一个servlet,其内容是在源文件级别进行合并。不管是<jsp:include>标签,还是include指令,它们都会把两个JSP页面内容合并输出,所以这两个页面不要出现重复的HTML全局架构标签,否则输出给客户端的内容将会是一个格式混乱的HTML文档。<jsp:include>标签:使用page属性指定被引入资源。include指令:使用file属性指定被引入资源。432.7JSP动作标记forward动作标记该指令的作用是:从该指令处停止当前页面的继续执行,而转向执行page属性指定的JSP页面。

语法格式:<jsp:forwardpage="relativeURL|<%=expression%>"/>或

<jsp:forwardpage="要转向的页面">param子标记</jsp:forward>442.7JSP动作标记plugin动作标记该动作标记指示JSP页面加载Javaplugin插件。该插件由用户负责下载,并使用该插件来运行Javaapplet小程序。语法格式:

<jsp:plugintype="applet"code="小程序的字节码文件"jreversion="java虚拟机版本号"width="小程序宽度值"height="小程序高度值"><jsp:fallback>提示信息:用来提示用户的浏览器是否支持插件下载</jsp:fallback></jsp:plugin>452.7JSP动作标记useBean动作标记该标记用来创建并使用一个Javabean,是非常重要的一个动作标记,我们将在第4章详细讨论。Sun公司的倡导是:用HTML完成JSP页面的静态部分,用Javabean完成动态部分,实现真正意义上的静态和动态分离。46总结:JSP页面和JSP标记JSP数据定义JSP程序块JSP表达式JSP指令JSP动作JSP注释<%!

变量声明

%><% Java片段代码%><%@page|include|taglib属性=""%><%=Java表达式%><JSP:动作属性=""%><%--注释内容--%><!--注释内容[<%=表达式%>]-->补充:jspInit()与jspDestroy()jspInit()与jspDestr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论