JavaEE 5开发指南学习(jsp进阶)

jsp文件包含脚本元素和模板元素,模板就是html元素,按原样输出,脚本元素就是java相关的代码,包括

java声明,java脚本程序和表达式
<%! int i; %>
<% while(true) i++;%>
<%=i%>

jsp2.0规范增加了表达式语言(EL)的功能。如果让无脚本的jsp页面具有动态特性,那么必须通过其他元素来

完成,必然JavaBean,EL语句、定制操作和标准标签库(JSTL)。
在jsp2.0或2.1中标明无脚本页面,使用web.xml文件。scripting-invalid定义页面的脚本是否无效,默认是false。
<jsp-config>
		<jsp-property-group>
			<url-pattern>*.jsp</url-pattern>
			<scripting-invalid>true</scripting-invalid>
		</jsp-property-group>
	</jsp-config>
在jsp早期版本中,<scripting-invalid>用<scripting-enabled>元素代替或用<%@ page isScriptingEnabled="true|false" %>来指定,而且page指令优先于web.xml中的设置。
在jsp2.0或2.1中启用EL语句,有以下两种方法
1在web.xml中
<jsp-config>
		<jsp-property-group>
			<url-pattern>*.jsp</url-pattern>
			<el-ignored>true</el-ignored></jsp-property-group>
	</jsp-config>

2用page指令启用或禁用EL语句
如下<%@ page isELIgnored="true|false" %>
EL 语法
${expr} 如果服务器支持EL2.1,可以使用#{expr},通常,$即时返回表达式的值,而#延时返回表达式的值
主要运算符有:
算术元素符:+-*/(div),%(mod)。关系运算:==或eq,。。。
逻辑运算:&&或and。。。其他:empty,[],.(点符)
${empty name}用于判断name引用是否为空。[]和.(点符)用于访问页面对象的属性。如${user.firstName}
EL语句主要用于面向表示层的jsp页面的,所以不会抛出等价于java表达式的异常。对于大多数操作,如果左值为null,EL表达式的值是null。
EL可以使用的内置对象有pageContext,pageScope,requestScope,sessionScope,applicationScope,param,paramValues,header,headerValues,cookie,initParam,可使用${initParam.name}访问初始化参数。
附件中是一个使用EL语言的示例。

为了做到让显示元素和业务逻辑分离,JSP规范提供了一种方法允许开发者创建自己的操作,这些操作称为 定制操作(custom actions),并且用标签库的方式把定制操作部署到web应用中。这种定义、实现、部署和执行定制操作的机制称为 标签扩展(tag extension)。Web设计者只要使用标准操作和定制操作,不需要懂得
java编程就可以创建出动态页面。
定制操作由前缀和操作名组成:<prefix:name />定制操作可以是空,如<prefix:name />
或非空,如
<prefix:name>
操作体部分内容
</prefix:name>
实际上,定制操作的行为是由java类的实例在运行时提供的。这个java类也称为 标签处理程序(tag handler)。JSP标签处理程序接口有:Tag,BodyTag等。
简单标签处理程序
jsp2.0引入了SimpleTag接口和一个基类SimpleTagSupport。
要创建一个定制操作,首先通过扩展SimpleTagSupport类来创建一个标签处理类,还必须覆盖若干方法,一般需要覆盖doTag()方法。
在创建一个标签的一个或多个实现类后,需要告诉容器这个应用程序的jsp页面用的是哪个标签处理程序。这一步是通过标签描述文件(tld)来完成的。是xml兼容的。
关于标签的使用,内容比较繁杂,可以在网上仔细搜索相关资料。

你可能感兴趣的:(xml,jsp,Web,javaee,脚本)