第四章JSP语法(续)西南科技大学网络教育系列课程动态网页设计(JSP)动态网页设计(JSP)服务器中,然后通过HTTP的方式访问。因为文件内所有%%内代码是被Web服务器解释执行的。JSP的编译指令、操作指令和代码动态网页设计(JSP)理解服务器端执行%@pagelanguage=javacontentType=text/html;charset=GBK%%@pageimport=java.util.*%%Datednow=newDate();intdhours=dnow.getHours();intdminutes=dnow.getMinutes();intdseconds=dnow.getSeconds();out.print(服务器时间:+dhours+:+dminutes+:+dseconds);%SCRIPTLANGUAGE=JavaScriptvardnow=newDate();dhours=dnow.getHours();dminutes=dnow.getMinutes();dseconds=dnow.getSeconds();document.write(br浏览器时间:+dhours+:+dminutes+:+dseconds);/SCRIPT动态网页设计(JSP)中,在“%”和“%”之间书写的程序代码为Java程序片在程序片中声明的变量只在页面有效,是局部变量,不能共享。但是,在“%!”和“%”之间声明的变量可以在不同的客户间共享,有效范围是整个Jsp页面,声明周期是服务器关闭后变量才会被释放。JSP表达式用来把Java数据直接插入到输出。其语法如下:<%=JavaExpression%>计算Java表达式得到的结果被转换成字符串,然后插入到页面。计算在运行时进行(页面被请求时),因此可以访问和请求有关的全部信息。例如,下面的代码显示页面被请求的日期/时间:Currenttime:<%=newjava.util.Date()%>动态网页设计(JSP)应遵守以下规则:实例:simpleCounterApp1.jspJSP表达式的内容必须是一个“完整”的Java表达式。JSP表达式的内容必须是一个“单独的”Java表达式。一定不能以分号结束一个Java表达式(与JSP声明不同)。动态网页设计(JSP)注释语法格式如下:!--comment[%=expression%]--或!--注释[%=表达式%]--这种注释发送到客户端,但不直接显示,在源代码中可以查看到。JSP另外一种注释语法格式如下:%--注释--%不发送到客户端。动态网页设计(JSP)页面中,主要分为三种元素:编译指令、动作指令和JSP代码。–编译指令告诉JSP的解释引擎(比如:Tomcat),需要在编译时做什么动作,比如引入一个其它的类动作指令JSP页面的使用什么语言编码等。–动作指令(操作指令)则是在JSP页面被请求时,动态执行的,比如可以根据某个条件动态跳转到另外一个页面。–JSP代码指的就是我们自己嵌入在JSP页面中的Java代码,这又分为两种:第一种是JSP页面中一些变量和方法的声明,在声明时,使用“!%”和“%”标记。另外一种,就是常用到的用“%”和“%”包含的JSP代码块动态网页设计(JSP)指令是针对当前页面的指令。page指令由“%@”和“%”字符串构成的标记符来指定。在标记符中是代码体,包括指令的类型和值。例如:%@pageimport=“java.sql.*”%指令告诉JSP容器将java.sql包中的所有类都引入当前的JSP页面。编译指令常用的page指令标记有8个:–language、extends、import、errorPage、isErrorPage、contentType、isThreadSafe和session。动态网页设计(JSP)页面中用到的语言,默认值为“Java”,也是目前唯一有效的设定值。使用的语法是:%@pagelanguage=java%。编译指令import设置目前JSP页面中要用到的Java类,这些Java类可能是SunJDK中的类,也有可能是程序员自己定义的类。例如:%@pageimport=java.sql.*,java.util.*%。有些类在默认情况下已经被加入到当前JSP页面,而不需要特殊声明,包括四个类:java.lang.*;java.servlet.*;java.servlet.jsp.*和java.servlet.http.*。动态网页设计(JSP)页面要继承的父类。一般情况下不需要进行设置。在默认情况下,JSP页面的默认父类是HttpJspBase。例如:当前JSP页面要继承mypackage包下的myclass类,相应的声明语句为:“%@pageextends=mypackage.myclass%”。编译指令errorPage用来设定当JSP页面出现异常(Exception)时,所要转向的页面。如果没有设定,则JSP容器会用默认的当前网页来显示出错信息。例如:“%@pageerrorPage=/error/error_page.jsp%”isErrorPage用来设定当前的JSP页面是否作为传回错误页面的网页,默认值是“false”。如果设定为“true”,则JSP容器会在当前的页面中生成一个exception对象。动态网页设计(JSP)指令捕获异常%@pagelanguage=javaerrorPage=“error.jspcontentType=text/html;charset=GBK%%intdividend=0;intdivisor=0;intresult=0;try{result=dividend/divisor;}catch(ArithmeticExceptionzz){thrownewArithmeticException(除数不能为零!);}%%@pageisErrorPage=truecontentType=text/html;charset=GBK%当前页面是:errortest.jspbr%out.print(exception.toString());%动态网页设计(JSP)这个属性用来设定传回网页的文件格式和编码方式,一般使用“text/html;charset=GBK”。page指令编译指令isThreadSafe定义JSP容器执行JSP程序的方式,默认值为“true”,代表JSP容器会以多线程方式运行JSP页面。当设定值为“false”时,JSP容器会以单线程方式运行JSP页面。session定义当前JSP页面中是否要用到session,默认值为“true”。动态网页设计(JSP)页面中,这个文件可以是普通的文本文件,也可以是一个JSP页面。例如:“%@includefile=”logo.htm“%”。采用include指令,可以实现JSP页面的模块化,使JSP的开发和维护变得非常简单。实例:includeSample1.jsp动态网页设计(JSP)容器自动采取的动作,但对于Web开发人员,有些时候想要自己控制JSP页面的运行,这时可以采用JSP中的操作指令。JSP标准动作jsp:useBean标记jsp:getProperty标记jsp:setProperty标记jsp:forward标记jsp:include标记动态网页设计(JSP)动作的作用–通过标记库定义自定义标记–实例化对象–与服务器端资源进行通信–提高组件的可重用性,增强应用的可维护性–使JSP页面可与JavaBean对象进行交互动态网页设计(JSP)动作的语法–JSP动作标记遵循XML语言的语法具有一个名称具有前缀jsp:用一对尖括号(和)括起来在尖括号内定义标记:–起始标记-以元素的名称开头–结束标记-以正斜线开头,后面紧跟元素名称–空标记-以元素名称开头,以正斜线结束动态网页设计(JSP)指令jsp:include标准动作用于在当前的JSP页面中加入静态和动态的资源。语法格式为:–jsp:includepage=“test.htm”/–jsp:include指令必须以“/”结束,功能和include指令大致相同。区别:include(操作指令):编译时包括,形成一个整体include(动作):运行时包括动态网页设计(JSP)指令jsp:forward动作指令用于把当前的JSP页面转发到另一个页面上。基本语法为:–“jsp:forwardpage=”test2.jsp“/”,–使用该功能时,浏览器的地址栏中地址不会发生任何变化。动态网页设计(JSP)指令jsp:param操作指令以标记“jsp:param”开始,以“/”结束比如:jsp:paramname=“oper”value=“add”/。可以将jsp:forward操作指令和jsp:param操作指令结合到一起来使用。使用jsp:param操作指令可以在执行jsp动作指令forward操作动作时,追加参数.以动作指令字/值的方式进行传递。实例:forwardExample1.jspparamExample1.jsp动态网页设计(JSP)语法格式如下:jsp:plugintype=bean|appletcode=classFileNamecodebase=classFileDirectoryName使用“jsp:plugin”插入一个applet或Bean,必要的话还要下载一个Java插件用于执行它。动态网页设计(JSP)[jsp:params[jsp:paramname=parameterNamevalue={parameterValue|%=expression%}/]+/jsp:params][jsp:fallbacktextmessageforuser/jsp:fallback]/jsp:plugin实例:appletExample1.jsp动态网页设计(JSP)