- 浏览: 1498039 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (523)
- JAVA (334)
- J2EE (18)
- JSP (21)
- JavaScript (14)
- it life (2)
- mobile develop (4)
- UBUNTU (14)
- Algorithm (14)
- DataBase (56)
- Browser/Server (1)
- linux (6)
- fedora (2)
- CSS (1)
- AjAX (3)
- HTML5 (1)
- EJB (1)
- osworkflow (2)
- Java face (5)
- spring (4)
- ICE (1)
- webService (2)
- MongoDB (1)
- JavaThread (4)
- JavaCollections (3)
- Hibernate (2)
- JavaMail (1)
- JavaBasic (1)
- Cache (1)
- https (4)
- DOM4J (1)
- JDOM (0)
- Mybatis (1)
- JUNIT (1)
- eclipse (1)
- easyMock (2)
最新评论
-
yadongliang:
...
自己认为的一些技术点 -
yadongliang:
每次看你头像都看的荷尔蒙分泌失调
WebService的两种方式SOAP和REST比较 (转) -
yadongliang:
hollo 写道一直有这种感觉,盲目的跟风,确实有一些人为了潮 ...
WebService的两种方式SOAP和REST比较 (转) -
welss:
博主,JNative怎么调用dll中的这种方法: int ...
JNative调用DLL -
Java_Antelope:
session.setAttribute和session.getAttribute(
概念
JSP 是Java Server Page 的缩写,是Servlet 的简化。它是由Sun 公司提出的,并由许多公司参与制定的一种动态网页标准。
其主要特点是在HTML 页面中加入Java 代码片段,或者使用各种JSP 标签,包括使用用户标签,构成JSP 网页。
【早期使用JSP 页面的用户非常广泛,一个Web 应用可以全部由JSP 页面组成,只辅以少量的JavaBean 即可。自J2EE 标准出现以后,人们逐渐认识到使用JSP充当过多的角色是不合适的Q 因此, JSP 慢慢发展成学一的表现层技术,不再承担业务逻辑组件及持久层组件的责任。】
JSP 是Servlet 的扩展,在没有JSP 之前,就已经出现了Servlet 技术。Servlet 是利用输出流动态生成HTML 页面,包括每一个HTML 标签和每个在HTML 页面中出现的内容。
注释
JSP 注释用于表明在程序开发过程中的开发提示,它不会输出到客户端。
JSP 注释的格式如下:
〈%--在注释内容--%>
与JSP 注释形成对比的是HTML 注释, HTML 注释的格式是
<!--注释内容-->
JSP 页面会编译成一个Servlet 类,每个Servlet 在容器中只有一个实例:而在JSP 中声明的变量是类的成员变量,成员变量只在创建实例时初始化,该变量的值将一直保存,直到实例销毁。值得注意的是, infoO的值也可正常输出。因为JSP 声明的方法其实是在JSP 编译生成的Servlet 类的方法一Java 里的方法是不能独立存在的,即使在JSP 页面中也不行。
表达式
JSP 提供了一种输出表达式值的简单方法,输出表达式值的格式如下:
〈%=表达式%〉
脚本
JSP 脚本的应用非常广泛,可通过Java 代码镶嵌在HTML 代码中,即使用JSP 脚本。
因此,所有能在Java 程序中执行的代码,都可以通过JSP 脚本执行。
看下面的代码:
<! -- Java 脚本,这些脚本会对HTML 的标签产生作用一〉
〈%
for(int i = 0 ; i < 10 ; i++) {
%〉
<td><%=i%></td>
<%}%>
上面的JSP 页面,其简单的循环将导致<tr/>标签循环10 次,即生成一个10 行
的表格,并在表格中输出表达式值
三个编译指令
JSP 的编译指令是通知JSP 引擎的消息,它不直接生成输出。编译指令都有默认值,因此开发人员无须为每个指令设置值。
常见的编译指令有三个。
page: 该指令是针对当前页面的指令。
include: 用于指定如何包含另一个页面。
tablib: 用于定义和访问自定义标签。
编译指令的格式如下:
<%@ 编译指令名 属性名="属性值"…%>
page 指令
page 指令,通常位于JSP 页面的顶端,对同一个页面可以有多个page 指令。
page指令的语法格式如下:
〈%@ page
[language="Java"]
[extends="package.class"]
[import= "package. class | package. *},…"]
[session=true | false"]
[buffer="none | 8kb | size kb"]
[autoFlush="true | false"]
[isThreadSafe="true | false"]
[info="text"]
[errorPage="relativeURL"]
[contentType=mimeType[ ;charset=characterSet]" | "text/html;charSet= ISO-8859-1"]
[isErrorPage=" true | false"]
%〉
下面依次介绍page 的各个属性。
language: 声明当前JSP 页面使用的脚本语言的种类,因为页面是JSP 页面,该属性的值通常都是java 。
extends: 确定JSP 程序编译时所产生的Java 类,需要继承的父类,或者需要实现的接口的全限定类名。
import: 用来导入包,下面几个包是默认自动导入的,不需要显式导入。默认导入的包有: java .lang.* javax.servlet.* javax.servlet.jsp.* javax.servlet. http
session: 设定这个JSP 页面是否需要HTIP session 。
buffer: 指定输出缓冲区的大小。输出缓冲区的JSP 内部对象: out 用于缓存JSP页面对客户浏览器的输出,默认值为8k,可以设置为none ,也可以设置为其他的值,单位为kb 。
autoFlush: 当输出缓冲区即将溢出时,是否需要强制输出缓冲区的内容。设置为true 时为正常输出:如果设置为false ,会在buffer 溢出时产生一个异常。
info: 设置该JSP 程序的信息,也可以看做其说明,可以通过Servlet. getServletInfo
方法获取该值。如果在JSP 页面中,可直接调用getServletInfo方法获取该值,因为JSP 页面的实质就是Servlet 。
errorPage: 指定错误处理页面。如果本程序产生了异常或者错误,而该JSP 页面没有对应的处理代码,则会自动调用该指令所指定的JSP 页面。使用JSP 页面时,可以不处理异常,即使是checked 异常。
isErroePage: 设置本JSP 页面是否为错误处理程序。如果该页面本身己是错误处理页面,则无须使用errorPage 属性。
contentType: 用于设定生成网页的文件格式和编码方式,即MIME 类型和页面宇符集类型,默认的MIME 类型是textlhtml; 默认的字符集为ISO-8859-1。
include 指令
使用include 指令,可以将一个外部文件嵌入到当前JSP 文件中,同时解析这个页面
中的JSP 语句(如果有的话)。这是个静态的include 语旬,不会检查所包含JSP 页面的变化。
include 既可以包含静态的文本,也可以包含动态的JSP 页面。静态的编译指令
include ,是将被包含的页面加入进来,生成一个完整的页面。
include 编译指令的语法:
〈%@ include file="relativeURLSpec" %〉
如果被嵌入的文件经常需要改变,建议使用<jsp:include>操作指令,因为它是动态的include 语句。
JSP 的7 个动作指令
动作指令与编译指令不间,编译指令是通知Servlet 引擎的处理消息,而动作指令只
是运行时的脚本动作。编译指令在将JSP 编译成Servlet 时起作用:处理指令通常可替换
成Java 脚本,是JSP 脚本的标准化写法。
JSP 动作指令主要有如下7 个。
jsp:forward: 执行页面转向,将请求的处理转发到下一个页面。
jsp:param: 用于传递参数,必须与其他支持参数曲标签一起使用。
jsp:include: 用于动态引入一个JSP 页面。
jsp:p1ugin: 用于下载JavaBean 或Applet 到客户端执行。
jsp:useBean: 使用JavaBean 。
jsp:setProperty: 修改JavaBean 实例的属性值。
jsp:getProperty: 获取JavaBean 实例的属性值。
【forward 指令】
forward 指令用于将页面响应控制转发给另外的页面。既可以转发给静态的HTML
页面,也可以转发到动态的JSP 页面,或者转发到容器中的Servlet
JSP 的forward 指令的格式如下:
对于JSP 1. 0 ,使用如下语法:
<jsp: forward page=" {relativeURL | <%=expression%>}"/>
对于JSP 1. 1 以上,可使用如下语法:
<jsp:forward page=" { relativeURL | <%=expression %>}">
{<jsp:param.../>}
</jsp:forward>
<jsp:forward page="forward-result.jsp">
<jsp:param name="age" value="29"/>
</jsp:forward>
【include 指令】
include 指令是一个动态include 指令,也用于导入某个页面,它的导入会每次检查
被导入页面的改变。下面是include 指令的使用格式:
<jsp: include page=" {relativeURL I <%=expression%>}" flush= “true” />
或者
<jsp:include page="{relativeURL I <%=expression%>}" flush="true 与
<jsp:param name="parameterName" value="patameterValue"l>
</jsp:include>
flush 属性用于指定输出缓存是否转移到被导入文件中。如果指定为true,则包含在被导入文件中:如果指定为false,则包含在原文件中。对于JSP 1.1旧版本,只能设置为false。
对于第二种格式,可用于在导入页面中加入参数值。
【useBean, setProperty, getProperty 指令】
这三个都是与JavaBean 相关的指令,其中第一个指令用于在JSP 页面中初始化一个Java 实例; setProperty 指令用于修改JavaBean 实例的属性; getProperty 用于获取JavaBean实例的属性。
useBean 的语法格式如下:
<jsp:useBean id="name" class="classname" scope="page | request | session | application" />
id 属性是JavaBean 的实例名, class 属性确定JavaBean 的实现类。
其中scope 属性用于确定JavaBean 实例的生存范围,该范围有以下四个值。
page: 该JavaBean 实例仅在该页面有效。
request: 该JavaBean 实例在本次请求有效。
session: 该JavaBean 实例在本次session 内有效。
application: 该JavaBean 实例在本应用内一直有效。
setProperty 的语法格式如下:
<jsp:setProperty name="BeanName" proterty="propertyName" value="value"/>
其中name 属性确定需要设定JavaBean 的实例名; property 属性确定需要设置的属性名; value 属性则确定需要设置的属性值。
getProperty 的语法格式如下:
<jsp:setProperty name="BeanName" proterty="propertyName" />
其中name'属性确定需要输出的JavaBean 的实例名; property 属性确定需要输出的属性名。
【plugin 指令】
plugin 指令主要用于下载服务器端的JavaB ean 或Applet 到客户端执行。由于程序在
客户端执行,因此客户端必须安装虚拟机。
plugin 的语法格式如下:
<jsp:plugin type=bean | applet"
code="classFileName"
codebase="classFileDiretoryName"
[name=" instanceName"]
[archive="URLtoArchive"]
algin= "bottom 1 top I middle 1 left 1 right"]
[heigh="displayPixels"]
[width="displayPixels"]
[hspace="leftRightPixels"]
[vspace="topBottomPiexels"]
[jreversion=JREVersionNumber11.2"]
[nspluginurl="URLToPlugin"]
[iepluginurl="URLToPlugin"]>
[<jsp:parames>
[jsp:param name="parameterName" value="parameterValue"I>]
</jsp:params>]
[<jsp:fallback>text message for user that can no see the plugin
</jsp:fallback> ]
</jsp:plugin>
关于这些属性的说明如下。
type: 指定被执行的Java 程序的类型。
code: 指定被执行的文件名,该属性值必须以" .class" 扩展名结尾。
codebase: 指定被执行文件所在的目录。
name: 给该程序起一个名字用来标识该程序。
archive: 指向一些要预先载入的将要使用到的类的路径。
hspace,vspace: 显示左右,上下的留白。
jreversion: 能正确运行该程序必需的JRE 版本,默认值是1.2
nsplugin,ieplugin:Netscape Navigator, Internet Exploer下载运行所需JRE 的地址。
<jsp:fallback>指令:当不能正确显示该Applet 时,代替显示的提示信息。
【pararn 指令】
可以与以下三个指令结合使用:
jsp:include
jsp:forward
jsp:plugin
当与include 指令结合使用时, pararn 指令用于将参数值传入被导入的页面:当与
forward 指令结合使用时, pararn 指令用于将参数值传入被转向的页面:当与plugin 指令
结合使用时,则用于将参数传入页面中的JavaBean 实例或Applet 实例。
pararn 指令的语法格式如下:
<jsp:param name="pararnName" value="paramValue"/>
9 个内置对象
application: javax.servlet. ServletContext 的实例,该实例代表JSP 所属的Web 应用
本身,可用于JSP 页面,或者Servlet 之间交换信息。
常用的方法有
getAttribute(String attNarne) , setAttribute(String attNarne , String attValue)
和getInitParameter(String paramNarne)等。
config: javax.servlet. ServletConfig 的实例,该实例代表该JSP 的配置信息。
常用的方法有
getInitPararneter(String paramNarne) 及getInitPararneternarnes() 等方法。事实上, JSP 页面通常无须配置,也就不存在配置信息。因此,该对象更多地在Servlet 中有效。
exception: java.lang.Throwable 的实例,该实例代表其他页面中的异常和错误。只有当页面是错误处理页面,即编译指令page 的isErrorPage 属性为true 时,该对象才可以使用。常用的方法有getMessageO和printStackTrace等。
out: javax.servlet.jsp.JspWriter 的实例,该实例代表JSP 页面的输出流,用于输出内容,形成HTML 页面。
page: 代表该页面本身,通常没有太大用处。也就是Servlet 中的this ,其类型就是生成的Servlet 。
pageContext: javax.servlet.jsp.PageContext 的实例,该对象代表该JSP 页面上下文,使用该对象可以访问页面中的共享数据。常用的方法有getServletContext和getServletConfig等。
request: javax.servlet. http:HttpServletRequest 的实例,该对象封装了一次请求,客
户端的请求参数都被封装在该对象里。这是一个常用的对象,获取客户端请求参
数必须使用该对象。常用的方法有getPararneter(String paramNarne),
getPararneterValues(String paramName),
setAttribute(String atttibuteName,Object attributeValue),
getAttribute(String attributeName)和setCharacterEncoding(String env)等。
response: javax.servlet.http.HttpServletResponse 的实例,代表服务器对客户端的响应。通常,也很少使用该对象直接响应,输出响应使用out 对象,而response 对象常用于重定向。常用的方法有sendRedirect(j ava.lang.String location)等。
session: javax.servlet.http.HttpSession 的实例,该对象代表一次会话。从客户端浏览器与站点建立连接起,开始会话,直到关闭浏览器时结束会话。常用的方法有:
getAttribute(String attName), setAttribute(String attName, String attValue)等。
JSP 定义
JSP 属性定义使用<jsp-property-group/>元素配置,主要包括如下四个方面。
·是否允许使用表达式语言:使用<el-ignored/>元素确定,默认值为false 。
·是否允许使用Java 脚本:使用<scripting-invalid/>元素确定,默认值为false 。
·声明JSP 页面的编码:使用<page-encoding/>元素确定。
·使用隐式包含:使用<include-prelude/>和<include-codal>元素确定。
看下面的配置文件:
<?xm1 version="1.0" encoding="ISO-8859-1"?>
<!--Serv1et2.4 以上版本的Web 应用配置的根元素->
<web-app xm1ns=''http://java.sun.com/xml/ns/j2ee"
xmlns:xsi=''http://www.w3.org /2 001/XMLSchema-instance''
xsi:schemaLocation=''http://java.sun.com/xml/ns/j2ee http://java.sun.com
/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<1-- 关于JSP 的配置信息-->
<jsp-config>
<]sp-property-group>
<!-- 对哪个文件应用配置-->
<url-pattern>/test1.jsp</url-pattern>
<!--忽略表达式语言-->
<el-ignored>true</el-ignored>
<'--页面编码方式-->
<page-encoding>GBK</page-encoding>
<'--不允许使用Java 脚本-->
<scripting-invalid>true</scripting-invalid>
<'--隐式导入页面头-->
〈工nclude-prelude>/inc/top.jspf</inc1ude-prelude>
<'--隐式导入页面尾-->
<include-coda>/inc/bottom.jspf</include-coda>
</jsp-property-group>
<]sp-property-group>
<1- 对哪个文件应用配置->
<url-pattern>/test2.jsp</url-pattern>
<el-ignored>false</el-ignored>
<!-- 页面编码方苯-->
<page-encoding>GBK</page-encoding>
<!一允许使用Java 脚本一〉
<scripting-invalid>false</scripting-invalid>
</jsp-property-group>
</jsp-config>
</web-app>
注意:如果在不允许使用Java 脚本的页面中使用Java 脚本,则页面将出现错误。
即test1 .jsp 页面中不允许出现Java 脚本。
表达式语言的内置对象
使用表达式语言可以直接获取请求参数,可获取页面中某个JavaBean 的属性值,获取请求头及获取session 属性值等,这些都得益于表达式语言的内置对象。
表达式语言包含如下11 个内置对象。
pageContext: 代表该页面的pageContext 对象,与JSP 的pageContext 内置对象相同。
pageScope: 用于获取page 范围的属性值。
requestScope: 用于获取request 范围的属性值。
sessionScope: 用于获取session 范围的属性值。
applicationScope: 用于获取application 范围的属性值。
param: 用于获取请求的参数值。
paramValues: 用于获取请求的参数值,与param 的区别在于,该对象用于获取属
性值为数组的属性值。
header: 用于获取请求头的属性值。
headerValues: 用于获取请求头的属性值,与header 的区别在于,该对象用于获取属性值为数组的属性值。
initParam: 用于获取请求Web 应用的初始化参数。
cookie: 用于获取应用的Cookie 值。
表达式语言的自定义函数
表达式语言除了可以使用基本的运算符外,还可以使用自定义函数。通过使用自定
义函数,加强了表达式语言的功能。
自定义函数的用法非常类似于标签的用法,同样需要定义函数处理类和使用标签库。
下面介绍定义函数的开发过程。
(1)开发函数处理类:函数处理类就是普通类,这个普通类中包含若干个静态方法,
每个静态方法都可定义成一个函数。
public class Functions{
//对字符串进行反转
public static String reverse( String text ){
return new StringBuffer(text).reverse().toString();
}
//统计字符串的个数
public static int countChar( String text) {
return text.length();
}
}
(2) 使用标签库定义函数,定义函数方法与定义标签库方法相同。下面是定义函的配置文件:
<?xml version="l.O" encoding="UTF-8" ?>
<1 一标签库配置文件的根元素一〉
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/200l/XMLSchema-instance"
xsi:schemaLocation="http://j ava.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<jsp-version>2.0</jsp-version>
<tlib-version>l.O</tlib-version>
<1-- 定义第一个函数>
<function>
<!- 定义第一个函数:reverse-->
<name>reverse</name>
<!一定义函数的处理类>
<function-class>lee.Functction/function-class>
<!- 定义函数的对应的方法-->
<function-signature>java.lang.String reverse( java.lang.String )
</function-signature>
</function>
<function〉
<!-- 定义第二个函数: countChar-->
<name>countChar</name>
<!一定义函数的处理类->
<function-class>lee.Functions</function-class>
<1- 定义函数的对应的方法->
<function-signature>int countChar( java.lang.String )</function-signature>
</function>
</taglib>
JSP 是Java Server Page 的缩写,是Servlet 的简化。它是由Sun 公司提出的,并由许多公司参与制定的一种动态网页标准。
其主要特点是在HTML 页面中加入Java 代码片段,或者使用各种JSP 标签,包括使用用户标签,构成JSP 网页。
【早期使用JSP 页面的用户非常广泛,一个Web 应用可以全部由JSP 页面组成,只辅以少量的JavaBean 即可。自J2EE 标准出现以后,人们逐渐认识到使用JSP充当过多的角色是不合适的Q 因此, JSP 慢慢发展成学一的表现层技术,不再承担业务逻辑组件及持久层组件的责任。】
JSP 是Servlet 的扩展,在没有JSP 之前,就已经出现了Servlet 技术。Servlet 是利用输出流动态生成HTML 页面,包括每一个HTML 标签和每个在HTML 页面中出现的内容。
注释
JSP 注释用于表明在程序开发过程中的开发提示,它不会输出到客户端。
JSP 注释的格式如下:
〈%--在注释内容--%>
与JSP 注释形成对比的是HTML 注释, HTML 注释的格式是
<!--注释内容-->
JSP 页面会编译成一个Servlet 类,每个Servlet 在容器中只有一个实例:而在JSP 中声明的变量是类的成员变量,成员变量只在创建实例时初始化,该变量的值将一直保存,直到实例销毁。值得注意的是, infoO的值也可正常输出。因为JSP 声明的方法其实是在JSP 编译生成的Servlet 类的方法一Java 里的方法是不能独立存在的,即使在JSP 页面中也不行。
表达式
JSP 提供了一种输出表达式值的简单方法,输出表达式值的格式如下:
〈%=表达式%〉
脚本
JSP 脚本的应用非常广泛,可通过Java 代码镶嵌在HTML 代码中,即使用JSP 脚本。
因此,所有能在Java 程序中执行的代码,都可以通过JSP 脚本执行。
看下面的代码:
<! -- Java 脚本,这些脚本会对HTML 的标签产生作用一〉
〈%
for(int i = 0 ; i < 10 ; i++) {
%〉
<td><%=i%></td>
<%}%>
上面的JSP 页面,其简单的循环将导致<tr/>标签循环10 次,即生成一个10 行
的表格,并在表格中输出表达式值
三个编译指令
JSP 的编译指令是通知JSP 引擎的消息,它不直接生成输出。编译指令都有默认值,因此开发人员无须为每个指令设置值。
常见的编译指令有三个。
page: 该指令是针对当前页面的指令。
include: 用于指定如何包含另一个页面。
tablib: 用于定义和访问自定义标签。
编译指令的格式如下:
<%@ 编译指令名 属性名="属性值"…%>
page 指令
page 指令,通常位于JSP 页面的顶端,对同一个页面可以有多个page 指令。
page指令的语法格式如下:
〈%@ page
[language="Java"]
[extends="package.class"]
[import= "package. class | package. *},…"]
[session=true | false"]
[buffer="none | 8kb | size kb"]
[autoFlush="true | false"]
[isThreadSafe="true | false"]
[info="text"]
[errorPage="relativeURL"]
[contentType=mimeType[ ;charset=characterSet]" | "text/html;charSet= ISO-8859-1"]
[isErrorPage=" true | false"]
%〉
下面依次介绍page 的各个属性。
language: 声明当前JSP 页面使用的脚本语言的种类,因为页面是JSP 页面,该属性的值通常都是java 。
extends: 确定JSP 程序编译时所产生的Java 类,需要继承的父类,或者需要实现的接口的全限定类名。
import: 用来导入包,下面几个包是默认自动导入的,不需要显式导入。默认导入的包有: java .lang.* javax.servlet.* javax.servlet.jsp.* javax.servlet. http
session: 设定这个JSP 页面是否需要HTIP session 。
buffer: 指定输出缓冲区的大小。输出缓冲区的JSP 内部对象: out 用于缓存JSP页面对客户浏览器的输出,默认值为8k,可以设置为none ,也可以设置为其他的值,单位为kb 。
autoFlush: 当输出缓冲区即将溢出时,是否需要强制输出缓冲区的内容。设置为true 时为正常输出:如果设置为false ,会在buffer 溢出时产生一个异常。
info: 设置该JSP 程序的信息,也可以看做其说明,可以通过Servlet. getServletInfo
方法获取该值。如果在JSP 页面中,可直接调用getServletInfo方法获取该值,因为JSP 页面的实质就是Servlet 。
errorPage: 指定错误处理页面。如果本程序产生了异常或者错误,而该JSP 页面没有对应的处理代码,则会自动调用该指令所指定的JSP 页面。使用JSP 页面时,可以不处理异常,即使是checked 异常。
isErroePage: 设置本JSP 页面是否为错误处理程序。如果该页面本身己是错误处理页面,则无须使用errorPage 属性。
contentType: 用于设定生成网页的文件格式和编码方式,即MIME 类型和页面宇符集类型,默认的MIME 类型是textlhtml; 默认的字符集为ISO-8859-1。
include 指令
使用include 指令,可以将一个外部文件嵌入到当前JSP 文件中,同时解析这个页面
中的JSP 语句(如果有的话)。这是个静态的include 语旬,不会检查所包含JSP 页面的变化。
include 既可以包含静态的文本,也可以包含动态的JSP 页面。静态的编译指令
include ,是将被包含的页面加入进来,生成一个完整的页面。
include 编译指令的语法:
〈%@ include file="relativeURLSpec" %〉
如果被嵌入的文件经常需要改变,建议使用<jsp:include>操作指令,因为它是动态的include 语句。
JSP 的7 个动作指令
动作指令与编译指令不间,编译指令是通知Servlet 引擎的处理消息,而动作指令只
是运行时的脚本动作。编译指令在将JSP 编译成Servlet 时起作用:处理指令通常可替换
成Java 脚本,是JSP 脚本的标准化写法。
JSP 动作指令主要有如下7 个。
jsp:forward: 执行页面转向,将请求的处理转发到下一个页面。
jsp:param: 用于传递参数,必须与其他支持参数曲标签一起使用。
jsp:include: 用于动态引入一个JSP 页面。
jsp:p1ugin: 用于下载JavaBean 或Applet 到客户端执行。
jsp:useBean: 使用JavaBean 。
jsp:setProperty: 修改JavaBean 实例的属性值。
jsp:getProperty: 获取JavaBean 实例的属性值。
【forward 指令】
forward 指令用于将页面响应控制转发给另外的页面。既可以转发给静态的HTML
页面,也可以转发到动态的JSP 页面,或者转发到容器中的Servlet
JSP 的forward 指令的格式如下:
对于JSP 1. 0 ,使用如下语法:
<jsp: forward page=" {relativeURL | <%=expression%>}"/>
对于JSP 1. 1 以上,可使用如下语法:
<jsp:forward page=" { relativeURL | <%=expression %>}">
{<jsp:param.../>}
</jsp:forward>
<jsp:forward page="forward-result.jsp">
<jsp:param name="age" value="29"/>
</jsp:forward>
【include 指令】
include 指令是一个动态include 指令,也用于导入某个页面,它的导入会每次检查
被导入页面的改变。下面是include 指令的使用格式:
<jsp: include page=" {relativeURL I <%=expression%>}" flush= “true” />
或者
<jsp:include page="{relativeURL I <%=expression%>}" flush="true 与
<jsp:param name="parameterName" value="patameterValue"l>
</jsp:include>
flush 属性用于指定输出缓存是否转移到被导入文件中。如果指定为true,则包含在被导入文件中:如果指定为false,则包含在原文件中。对于JSP 1.1旧版本,只能设置为false。
对于第二种格式,可用于在导入页面中加入参数值。
【useBean, setProperty, getProperty 指令】
这三个都是与JavaBean 相关的指令,其中第一个指令用于在JSP 页面中初始化一个Java 实例; setProperty 指令用于修改JavaBean 实例的属性; getProperty 用于获取JavaBean实例的属性。
useBean 的语法格式如下:
<jsp:useBean id="name" class="classname" scope="page | request | session | application" />
id 属性是JavaBean 的实例名, class 属性确定JavaBean 的实现类。
其中scope 属性用于确定JavaBean 实例的生存范围,该范围有以下四个值。
page: 该JavaBean 实例仅在该页面有效。
request: 该JavaBean 实例在本次请求有效。
session: 该JavaBean 实例在本次session 内有效。
application: 该JavaBean 实例在本应用内一直有效。
setProperty 的语法格式如下:
<jsp:setProperty name="BeanName" proterty="propertyName" value="value"/>
其中name 属性确定需要设定JavaBean 的实例名; property 属性确定需要设置的属性名; value 属性则确定需要设置的属性值。
getProperty 的语法格式如下:
<jsp:setProperty name="BeanName" proterty="propertyName" />
其中name'属性确定需要输出的JavaBean 的实例名; property 属性确定需要输出的属性名。
【plugin 指令】
plugin 指令主要用于下载服务器端的JavaB ean 或Applet 到客户端执行。由于程序在
客户端执行,因此客户端必须安装虚拟机。
plugin 的语法格式如下:
<jsp:plugin type=bean | applet"
code="classFileName"
codebase="classFileDiretoryName"
[name=" instanceName"]
[archive="URLtoArchive"]
algin= "bottom 1 top I middle 1 left 1 right"]
[heigh="displayPixels"]
[width="displayPixels"]
[hspace="leftRightPixels"]
[vspace="topBottomPiexels"]
[jreversion=JREVersionNumber11.2"]
[nspluginurl="URLToPlugin"]
[iepluginurl="URLToPlugin"]>
[<jsp:parames>
[jsp:param name="parameterName" value="parameterValue"I>]
</jsp:params>]
[<jsp:fallback>text message for user that can no see the plugin
</jsp:fallback> ]
</jsp:plugin>
关于这些属性的说明如下。
type: 指定被执行的Java 程序的类型。
code: 指定被执行的文件名,该属性值必须以" .class" 扩展名结尾。
codebase: 指定被执行文件所在的目录。
name: 给该程序起一个名字用来标识该程序。
archive: 指向一些要预先载入的将要使用到的类的路径。
hspace,vspace: 显示左右,上下的留白。
jreversion: 能正确运行该程序必需的JRE 版本,默认值是1.2
nsplugin,ieplugin:Netscape Navigator, Internet Exploer下载运行所需JRE 的地址。
<jsp:fallback>指令:当不能正确显示该Applet 时,代替显示的提示信息。
【pararn 指令】
可以与以下三个指令结合使用:
jsp:include
jsp:forward
jsp:plugin
当与include 指令结合使用时, pararn 指令用于将参数值传入被导入的页面:当与
forward 指令结合使用时, pararn 指令用于将参数值传入被转向的页面:当与plugin 指令
结合使用时,则用于将参数传入页面中的JavaBean 实例或Applet 实例。
pararn 指令的语法格式如下:
<jsp:param name="pararnName" value="paramValue"/>
9 个内置对象
application: javax.servlet. ServletContext 的实例,该实例代表JSP 所属的Web 应用
本身,可用于JSP 页面,或者Servlet 之间交换信息。
常用的方法有
getAttribute(String attNarne) , setAttribute(String attNarne , String attValue)
和getInitParameter(String paramNarne)等。
config: javax.servlet. ServletConfig 的实例,该实例代表该JSP 的配置信息。
常用的方法有
getInitPararneter(String paramNarne) 及getInitPararneternarnes() 等方法。事实上, JSP 页面通常无须配置,也就不存在配置信息。因此,该对象更多地在Servlet 中有效。
exception: java.lang.Throwable 的实例,该实例代表其他页面中的异常和错误。只有当页面是错误处理页面,即编译指令page 的isErrorPage 属性为true 时,该对象才可以使用。常用的方法有getMessageO和printStackTrace等。
out: javax.servlet.jsp.JspWriter 的实例,该实例代表JSP 页面的输出流,用于输出内容,形成HTML 页面。
page: 代表该页面本身,通常没有太大用处。也就是Servlet 中的this ,其类型就是生成的Servlet 。
pageContext: javax.servlet.jsp.PageContext 的实例,该对象代表该JSP 页面上下文,使用该对象可以访问页面中的共享数据。常用的方法有getServletContext和getServletConfig等。
request: javax.servlet. http:HttpServletRequest 的实例,该对象封装了一次请求,客
户端的请求参数都被封装在该对象里。这是一个常用的对象,获取客户端请求参
数必须使用该对象。常用的方法有getPararneter(String paramNarne),
getPararneterValues(String paramName),
setAttribute(String atttibuteName,Object attributeValue),
getAttribute(String attributeName)和setCharacterEncoding(String env)等。
response: javax.servlet.http.HttpServletResponse 的实例,代表服务器对客户端的响应。通常,也很少使用该对象直接响应,输出响应使用out 对象,而response 对象常用于重定向。常用的方法有sendRedirect(j ava.lang.String location)等。
session: javax.servlet.http.HttpSession 的实例,该对象代表一次会话。从客户端浏览器与站点建立连接起,开始会话,直到关闭浏览器时结束会话。常用的方法有:
getAttribute(String attName), setAttribute(String attName, String attValue)等。
JSP 定义
JSP 属性定义使用<jsp-property-group/>元素配置,主要包括如下四个方面。
·是否允许使用表达式语言:使用<el-ignored/>元素确定,默认值为false 。
·是否允许使用Java 脚本:使用<scripting-invalid/>元素确定,默认值为false 。
·声明JSP 页面的编码:使用<page-encoding/>元素确定。
·使用隐式包含:使用<include-prelude/>和<include-codal>元素确定。
看下面的配置文件:
<?xm1 version="1.0" encoding="ISO-8859-1"?>
<!--Serv1et2.4 以上版本的Web 应用配置的根元素->
<web-app xm1ns=''http://java.sun.com/xml/ns/j2ee"
xmlns:xsi=''http://www.w3.org /2 001/XMLSchema-instance''
xsi:schemaLocation=''http://java.sun.com/xml/ns/j2ee http://java.sun.com
/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<1-- 关于JSP 的配置信息-->
<jsp-config>
<]sp-property-group>
<!-- 对哪个文件应用配置-->
<url-pattern>/test1.jsp</url-pattern>
<!--忽略表达式语言-->
<el-ignored>true</el-ignored>
<'--页面编码方式-->
<page-encoding>GBK</page-encoding>
<'--不允许使用Java 脚本-->
<scripting-invalid>true</scripting-invalid>
<'--隐式导入页面头-->
〈工nclude-prelude>/inc/top.jspf</inc1ude-prelude>
<'--隐式导入页面尾-->
<include-coda>/inc/bottom.jspf</include-coda>
</jsp-property-group>
<]sp-property-group>
<1- 对哪个文件应用配置->
<url-pattern>/test2.jsp</url-pattern>
<el-ignored>false</el-ignored>
<!-- 页面编码方苯-->
<page-encoding>GBK</page-encoding>
<!一允许使用Java 脚本一〉
<scripting-invalid>false</scripting-invalid>
</jsp-property-group>
</jsp-config>
</web-app>
注意:如果在不允许使用Java 脚本的页面中使用Java 脚本,则页面将出现错误。
即test1 .jsp 页面中不允许出现Java 脚本。
表达式语言的内置对象
使用表达式语言可以直接获取请求参数,可获取页面中某个JavaBean 的属性值,获取请求头及获取session 属性值等,这些都得益于表达式语言的内置对象。
表达式语言包含如下11 个内置对象。
pageContext: 代表该页面的pageContext 对象,与JSP 的pageContext 内置对象相同。
pageScope: 用于获取page 范围的属性值。
requestScope: 用于获取request 范围的属性值。
sessionScope: 用于获取session 范围的属性值。
applicationScope: 用于获取application 范围的属性值。
param: 用于获取请求的参数值。
paramValues: 用于获取请求的参数值,与param 的区别在于,该对象用于获取属
性值为数组的属性值。
header: 用于获取请求头的属性值。
headerValues: 用于获取请求头的属性值,与header 的区别在于,该对象用于获取属性值为数组的属性值。
initParam: 用于获取请求Web 应用的初始化参数。
cookie: 用于获取应用的Cookie 值。
表达式语言的自定义函数
表达式语言除了可以使用基本的运算符外,还可以使用自定义函数。通过使用自定
义函数,加强了表达式语言的功能。
自定义函数的用法非常类似于标签的用法,同样需要定义函数处理类和使用标签库。
下面介绍定义函数的开发过程。
(1)开发函数处理类:函数处理类就是普通类,这个普通类中包含若干个静态方法,
每个静态方法都可定义成一个函数。
public class Functions{
//对字符串进行反转
public static String reverse( String text ){
return new StringBuffer(text).reverse().toString();
}
//统计字符串的个数
public static int countChar( String text) {
return text.length();
}
}
(2) 使用标签库定义函数,定义函数方法与定义标签库方法相同。下面是定义函的配置文件:
<?xml version="l.O" encoding="UTF-8" ?>
<1 一标签库配置文件的根元素一〉
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/200l/XMLSchema-instance"
xsi:schemaLocation="http://j ava.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<jsp-version>2.0</jsp-version>
<tlib-version>l.O</tlib-version>
<1-- 定义第一个函数>
<function>
<!- 定义第一个函数:reverse-->
<name>reverse</name>
<!一定义函数的处理类>
<function-class>lee.Functction/function-class>
<!- 定义函数的对应的方法-->
<function-signature>java.lang.String reverse( java.lang.String )
</function-signature>
</function>
<function〉
<!-- 定义第二个函数: countChar-->
<name>countChar</name>
<!一定义函数的处理类->
<function-class>lee.Functions</function-class>
<1- 定义函数的对应的方法->
<function-signature>int countChar( java.lang.String )</function-signature>
</function>
</taglib>
发表评论
-
Spring官网改版后下载
2014-04-11 10:39 776Spring官网改版后找了好久都没有找到直接下载Jar包的链接 ... -
Java 系统架构设计
2014-03-31 21:18 1502首先分为网关和引擎等多个部分: 第一部分:网关 1、主要负责转 ... -
Java 提高系统性能
2014-03-03 22:22 2615首先是从三方面来提高的,应用层面,服务器端层面,数据库层面。 ... -
2013年11月份艺龙旅行网面试题
2013-11-22 23:39 12681.给你两个字符串s1="abc",s2= ... -
国猪555555555
2013-11-22 00:16 1113国足第一招:场地太差,不适应。 国足第二招:场地太好,不适应。 ... -
自己认为的一些技术点
2013-08-14 00:12 12621.rest风格的编程。 2.memcached的命中率低的问 ... -
HttpClient
2013-01-14 23:57 1058package org.abin.lee.test.http; ... -
JAVA单例模式读取properties配置文件
2012-12-16 01:12 2673前段时间出差去做一个数据接口的项目,有很多参数需要从工程中的配 ... -
Java 反射调用方法
2012-10-22 23:52 979package lc.abin.lee.reflect; i ... -
Java Https单向,双向验证
2012-09-23 22:47 3021https一般来说有单项SSL和双向SSL连接之分。 单项 ... -
Java中的transient,volatile和strictfp关键字
2012-09-12 18:00 838http://www.iteye.com/topic/5295 ... -
Server JBoss v5.0 at localhost was unable to start within 50 seconds.
2012-09-05 11:35 1887[标题]:[转]JBoss was unable to sta ... -
HttpUrlConnection 开发例子
2012-03-25 16:23 3364/*** * * 发送HTTP请求 * @ ... -
Java Enum类型定义的方法
2012-03-12 12:34 2354//枚举接口 package com.abin.info.s ... -
Rational Rose 2003 下载及破解方法
2012-03-06 12:49 1397FROM:http://blog.csdn.net/fengl ... -
使用Spring进行面向切面(AOP)编程
2012-02-22 10:35 23521.aop理论知识 横切性关注点:对哪些方法拦截,拦截后怎么处 ... -
BASE64、MD5、SHA、HMAC几种加密算法
2012-02-21 12:53 8811BASE64编码算法不算是真正的加密算法。 MD5、 ... -
文本文件和二进制文件区别及java中字节流和字符流归纳
2012-02-17 15:48 2999首先在物理上文本文件和二进制文件并没有区别,都是以二进制01的 ... -
Java 字节流转化为文件
2012-02-17 15:46 5766已知:byte[] bytes=new FileToBytes ... -
Java核心之Java内存分配原理
2012-02-17 13:40 957JAVA内存分配与管理是Java的核心技术之一,之前我们曾介绍 ...
相关推荐
### Tomcat+Jsdk配置Jsp环境详解 #### 一、引言 随着Web技术的发展,JSP(Java Server Pages)作为一种重要的服务器端脚本语言,被广泛应用于动态网页的开发之中。为了能够正常地运行和调试JSP程序,开发者需要在...
### Android开发手记一_NDK编程实例 #### 一、开发环境的搭建 在开始具体的NDK编程之前,首先需要确保开发环境已经被正确地搭建起来。对于初次接触Android NDK开发的朋友来说,拥有一个良好的环境配置是至关重要的...
### JFreeChart 开发手记(一):完整柱状图及数据下钻实现方法 #### 1. 概述 本文档旨在介绍如何利用开源图表库 JFreeChart 制作一个完整的柱状图,并实现商业智能 (BI) 软件中常见的“数据下钻”功能。通过本...
JSP(JavaServer Pages)则是一种服务器端脚本语言,用于动态网页的生成,可以将HTML、CSS、JavaScript与Java代码混合编写。 2. **EJB(Enterprise JavaBeans)**:EJB是J2EE的核心组件之一,提供了分布式计算环境...
FusionCharts 可以无缝集成到各种 Web 开发框架中,如 ASP.NET、PHP、JSP、Ruby on Rails 等。在这些环境中,通常会将数据处理和渲染图表的任务分离,以便更好地管理代码和优化性能。 六、FusionCharts 的高级特性 ...
创建Struts2项目,配置struts.xml,编写Action类和JSP页面,启动服务器,即可运行HelloWorld示例。 7. **Vaadin** Vaadin是一个基于服务器端组件的框架,提供丰富的UI库。安装包括下载Vaadin SDK,创建Maven或...
作者手记:我看到许多论坛的朋友, 寻找 中文的javaAPI, 无奈sun没有提供中文的,这是SUN对中国程序员的轻视,有日文,为什么不能有中文,小日本为什么不用看英文。 我利用JavaWebStudio里提供的, 制作chm格式的, ...
传统高校宿舍管理仍然使用人工手记管理模式,其效率低下且工作繁琐,极容易造成信息丢失或信息遗漏。 知识点3:互联网技术在高校宿舍管理中的应用 将互联网技术与高校宿舍管理结合,能够极大的提升高校宿舍管理的...
本项目采用Java语言,结合jsp和servlet技术,构建了一个简单易懂的俄罗斯方块游戏。这篇文章将深入探讨这个项目的实现细节,帮助读者理解和掌握相关知识点。 一、Java基础 Java是一种面向对象的编程语言,以其“一...
**JSTL(JavaServer Pages Standard Tag Library)**是Java服务器端的一个重要库,它提供了一系列预定义的标签,用于简化JSP页面的开发。这些标签主要用于处理常见的任务,如迭代、条件判断、XML处理等,使得JSP代码...
传统的宿舍管理模式,如人工手记,不仅效率低下,还存在信息丢失或遗漏的风险,严重影响了宿舍管理工作的效果。因此,采用先进的信息技术,构建高效、规范、自动化的宿舍管理系统显得尤为必要。 本论文以Java编程...
spring mvc 4+mybatis 3+bootstrap+逆向工程+分页插件实现增删改查完整项目源码。 ①项目源码完整。 ②前端页面精美大气。 ③代码可读性强。 ④注释丰富。 ⑤所用技术为前沿技术。
作者手记:我看到许多论坛的朋友, 寻找 中文的javaAPI, 无奈sun没有提供中文的,这是SUN对中国程序员的轻视,有日文,为什么不能有中文,小日本为什么不用看英文。 我利用JavaWebStudio里提供的, 制作chm格式的, ...
- `struts-el-example-1.3.10.war`:EL(Expression Language)是JSP 2.0引入的一种表达式语言,用于简化视图层的数据访问。这个例子可能演示了如何在Struts 1中集成EL来增强表现力。 - `struts-cookbook-1.3.10....