首页 > 代码库 > JSP语法
JSP语法
脚本程序
脚本程序可以包含任意量的Java语句、变量、方法或表达式,只要它们在脚本语言中是有效的。
脚本程序的语法格式:<% 代码片段 %>
任何文本、HTML标签、JSP元素必须写在脚本程序的外面。
<html> <head><title>HelloWorld</title></head> <body> HelloWorld!<br/> <% out.println("Your IP address is " +request.getRemoteAddr()); %> </body> </html>JSP声明
一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。在JSP文件中,必须先声明这些变量和方法然后才能使用它们。
JSP声明的语法格式: <%!declaration; [ declaration; ]+ ... %>
<%! int i =0; %> <%! int a, b,c; %> <%! Circle a= new Circle(2.0); %>JSP表达式
一个JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。
由于表达式的值会被转化成String,所以可以在一个文本行中使用表达式而不用去管它是否是HTML标签。
表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式。
JSP表达式的语法格式: <%=表达式 %>
<html> <head><title>AComment Test</title></head> <body> <p> Today's date: <%= (newjava.util.Date()).toLocaleString()%> </p> </body> </html>JSP注释
JSP注释主要有两个作用:为代码作注释以及将某段代码注释掉。
JSP注释的语法格式:
<%-- 这里可以填写 JSP 注释 --%>
JSP 指令
JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言。
JSP中的三种指令标签:
<%@ page ... %> 定义网页依赖属性,比如脚本语言、error页面、缓存需求等等
<%@ include ... %> 包含其他文件
<%@ taglib ... %> 引入标签库的定义
Page指令
<%@ page attribute="value" %>等价的XML格式:
<jsp:directive.page attribute="value" />
下表列出与Page指令相关的属性:
buffer 指定out对象使用缓冲区的大小
autoFlush 控制out对象的 缓存区,true/false,默认为true
contentType 指定当前JSP页面的MIME类型和字符编码
errorPage 指定当JSP页面发生异常时需要转向的错误处理页面
isErrorPage 是否可以作为另一个JSP页面的错误处理页面,true/false
extends 指定servlet从哪一个类继承
import 导入要使用的Java类,多个包可以用逗号分割
info 定义JSP页面的描述信息,可以通过Servlet.getServletInfo()得到
isThreadSafe 指定对JSP页面的访问是否为线程安全
language 定义JSP页面所用的脚本语言,默认是Java
session 指定JSP页面是否使用session,true/false
isELIgnored 指定是否执行EL表达式,true/false
isScriptingEnabled 确定脚本元素能否被使用,true/false
trimDirectiveWhitespace 是否去掉指令前后的空白字符,true/false
Include指令
JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。
Include指令的语法格式如下:
<%@ include file="relative url" %>
Include指令中的文件名实际上是一个相对的URL。如果没有给文件关联一个路径,JSP编译器默认在当前路径下寻找。
等价的XML语法:
<jsp:directive.include file="relative url" />与<jsp:include page=”url”/>的区别:Include指令是先包含,再编译,jsp:include标签是先运行,再包含,就是说前者是把包含的文件合并到一个文件,最后编译成一个class文件;后者是两个文件单独执行,然后将结果合并到一块
Taglib指令
JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合。
Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。
Taglib指令的语法:
<%@ taglib uri="uri" prefix="prefixOfTag" %>
uri属性确定标签库的位置,prefix属性指定标签库的前缀。
等价的XML语法:
<jsp:directive.taglib uri="uri" prefix="prefixOfTag" />JSP 动作元素
与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用。JSP动作元素是用XML语法写成的
动作元素基本上都是预定义的函数,JSP规范定义了一系列的标准动作,它用JSP作为前缀,可用的标准动作元素如下:
jsp:include 在页面被请求的时候引入一个文件。
jsp:useBean 寻找或者实例化一个JavaBean。
jsp:setProperty 设置JavaBean的属性。
jsp:getProperty 输出某个JavaBean的属性。
jsp:forward 把请求转到一个新的页面。
jsp:plugin 根据浏览器类型为Java插件生成OBJECT或EMBED标记。
jsp:element 定义动态XML元素
jsp:attribute 设置动态定义的XML元素属性。
jsp:body 设置动态定义的XML元素内容。
jsp:text 在JSP页面和文档中使用写入文本的模板
所有的动作要素都有两个属性:id属性和scope属性。
id属性:
id属性是动作元素的唯一标识,可以在JSP页面中引用。动作元素创建的id值可以通过PageContext来调用。
scope属性:
该属性用于识别动作元素的生命周期。 id属性和scope属性有直接关系,scope属性定义了相关联id对象的寿命。 scope属性有四个可能的值:(a) page, (b)request, (c)session, 和 (d) application。
<jsp:include>动作元素
<jsp:include page="relative URL" flush="true" />
以下是include动作相关的属性列表。page 包含在页面中的相对URL地址。
flush 布尔属性,定义在包含资源前是否刷新缓存区。
<jsp:useBean>动作元素
<jsp:useBean id="name" class="package.class" />在类载入后,可以通过jsp:setProperty 和 jsp:getProperty 动作来修改和检索bean的属性。
以下是useBean动作相关的属性列表。
class 指定Bean的完整包名。
type 指定将引用该对象变量的类型。
beanName 通过 java.beans.Beans 的 instantiate() 方法指定Bean的名字。
<jsp:useBean id="test" class="action.TestBean" /> <!-- 此句可以从request域中自动取得所有符合的属性值--> <jsp:setProperty name="test" property="*" /> <jsp:setProperty name="test"property="message" value=http://www.mamicode.com/"HelloJSP..." />>
<jsp:setProperty>和<jsp:getProperty>
<jsp:setProperty>的属性列表
name name属性是必需的。它表示要设置属性的是哪个Bean。
property property属性是必需的。它表示要设置哪个属性。有一个特殊用法:如果property的值是"*",表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。
value value 属性是可选的。该属性用来指定Bean属性的值。字符串数据会在目标类中通过标准的valueOf方法自动转换成数字、boolean、Boolean、 byte、Byte、char、Character。例如,boolean和Boolean类型的属性值(比如"true")通过 Boolean.valueOf转换,int和Integer类型的属性值(比如"42")通过Integer.valueOf转换。 value和param不能同时使用,但可以使用其中任意一个。
param param 是可选的。它指定用哪个请求参数作为Bean属性的值。如果当前请求没有参数,则什么事情也不做,系统不会把null传递给Bean属性的set方法。因此,你可以让Bean自己提供默认属性值,只有当请求参数明确指定了新值时才修改默认属性值。
<jsp:getProperty>的属性列表
name 要检索的Bean属性名称。Bean必须已定义。
property 表示要提取Bean属性的值
<jsp:forward> 和<jsp:param>
<jsp:forward page=”url”> <jsp:param name=”param1” value=http://www.mamicode.com/”value1”/>><jsp:directive>
<jsp:directive>与JSP指令相对应,可以互换
<jsp:directive.page/>
<jsp:directive.include/>
<jsp:directive.taglib/>
<jsp:element> 、 <jsp:attribute>、 <jsp:body>动作元素
<jsp:element>、 <jsp:attribute>、 <jsp:body>动作元素动态定义XML元素。动态是非常重要的,这就意味着XML元素在编译时是动态生成的而非静态。
以下实例动态定义了XML元素:
<%@page language="java" contentType="text/html"%> <html xmlns="http://www.w3c.org/1999/xhtml" xmlns:jsp="http://java.sun.com/JSP/Page"> <head><title>GenerateXML Element</title></head> <body> <jsp:elementname="xmlElement"> <jsp:attributename="xmlElementAttr"> Value for the attribute </jsp:attribute> <jsp:body> Body for XML element </jsp:body> </jsp:element> </body> </html>执行时生成HTML代码如下:
<html xmlns="http://www.w3c.org/1999/xhtml" xmlns:jsp="http://java.sun.com/JSP/Page"> <head><title>GenerateXML Element</title></head> <body> <xmlElement xmlElementAttr="Value for the attribute"> Body for XML element </xmlElement> </body> </html>
JSP语法