1、动做元素语法:html
与JSP指令元素不一样的是,JSP动做元素在请求处理阶段起做用。JSP动做元素是用XML语法写成的。java
利用JSP动做能够动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。express
<jsp:action_name attribute="value" />
动做元素基本上都是预约义的函数,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页面和文档中使用写入文本的模板 |
常见的属性session
全部的动做要素都有两个属性:id属性和scope属性。app
id属性是动做元素的惟一标识,能够在JSP页面中引用。动做元素建立的id值能够经过PageContext来调用。jsp
该属性用于识别动做元素的生命周期。 id属性和scope属性有直接关系,scope属性定义了相关联id对象的寿命。 scope属性有四个可能的值: (a) page, (b)request, (c)session, 和 (d) application。函数
(一)jsp:include 动做标记post
该动做把指定文件插入正在生成的页面。ui
语法以下:
<jsp:include page="{相对URL地址|<%=expression%>}" flush="true|false" />
或
<jsp:include page="{relativeURL|<%=expression%>}" flush="true|false"> <jsp:param name="parameterName" value="{parameterValue|<%=expression%>}"/> </jsp:include>
参数能够从另一个页面的getParameter方法获取。
page属性:指定要包含的文件的位置
flush属性:指示在读入包含内容以前是否清空如何现有的缓冲区。
jsp:include 动做 与 include指令不同,插入文件的时间是在页面被请求的时候。
(二)jsp: forward 动做标记
jsp:forward动做把请求转到另外的页面。jsp:forward标记只有一个属性page。语法以下:
<jsp:forward page="相对 URL 地址" />
jsp:forward的转发操做都是在服务端进行的,不会引发客户端的二次请求。
<jsp:forward>其实是调用了PageContext的forward方法。
示例以下:
<jsp:forward page="success.jsp">//跳转至success.jsp <jsp:param name="user" value="<%=name%>" />//携带参数"user" </jsp:forward>
(三)jsp:plugin 动做标记
此操做是用来产生客户端浏览器的特别标签(Object或者embed),能够使用它来插入Applet或者JavaBean。
通常来讲<jsp:plugin>元素指定的对象是Applet仍是Bean,一样也会指定class的名字,另外还会指定将从哪里下载这个Java插件。
示例以下:
<jsp:plugin type=applet code="efly.testMyApplet.class" codebase="."> <jsp:params> <jsp:param name="aParameterName" value="aParameterNameValue"/> </jsp:params> <jsp:fallback> <p>Unable to load applet.</p> </jsp:fallback> </jsp:plugin>
<fallback>元素是一个新元素,在组件出现故障的错误是发送给用户错误信息。
(四)jsp:param 动做标记
此标记用来以"键-值"对的形式为其余标记提供附加信息。它和 < jsp : include>、 < jsp : forward>、<jsp:plugin>一块儿使用。
语法以下:
<jsp:param name="parameterName"
value="{parameterValue|<%=expression%>}"/>(五)jsp:useBean 动做标记o
jsp:useBean 动做用来加载一个将在JSP页面中使用的JavaBean。
语法以下:
<jsp:useBean id="name" class="package.class" scope="{page\request\session\application}"/>
id属性:指定此JavaBean实例对象的名称。
class属性: 指定此JavaBean类的全路径限定名(包名+类名)
scope属性: 指定此JavaBean 实例对象的存在范围(默认值page)
示例以下:
1.建立一个javaBean(UserName.java),代码以下:
package cn.edu.test; public class UserBean { public UserBean(){} private String userName; private String password; private int age; public String getUserName(){ return userName; } public void setUserName(String userName){ this.userName=userName; } public String getPassword(){ return password; } public void setPassword(String password){ this.password=password; } public int getAge(){ return age; } public void setAge(int age){ this.age=age; } }
2.建立一个注册页面reg.html提交表单到javabean.jsp,代码以下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>用户信息</h1> <hr> <form action="javabean.jsp" method="post"> <label for="username">用户名:</label> <input id="username" type="text" name="userName" placeholder="请输入用户名"> <br> <label for="password">密 码:</label> <input id="password" type="password" name="password" placeholder="请输入密码"> <br> <label for="age">年 龄:</label> <input id="age" type="text" name="age" placeholder="请输入年龄"> <br> <input type="submit" name="submit" value="提交"> </form> </body> </html>
3.javabean.jsp代码以下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <jsp:useBean id="user" scope="page" class="cn.edu.test.UserBean"></jsp:useBean> <jsp:setProperty property="*" name="user"/> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>javaBean示例</title> </head> <body> <h1>注册成功</h1> <hr> <p><jsp:getProperty property="userName" name="user"/></p> <p><jsp:getProperty property="password" name="user"/></p> <p><jsp:getProperty property="age" name="user"/></p> </body> </html>
4.运行结果以下:
(六)jsp:setProperty 动做标记
jsp:setProperty用来设置已经实例化的Bean对象的属性。
第一种用法:jsp:useBean元素的外面(后面)使用jsp:setProperty。此时,无论jsp:useBean是找到了一个现有的Bean,仍是新建立了一个Bean实例,jsp:setProperty都会执行。
<jsp:useBean id="myName" ... /> ... <jsp:setProperty name="myName" property="someProperty" .../>
第二种用法:把jsp:setProperty放入jsp:useBean元素的内部。此时,jsp:setProperty只有在新建Bean实例时才会执行,若是是使用现有实例则不执行jsp:setProperty。
<jsp:useBean id="myName" ... > ... <jsp:setProperty name="myName" property="someProperty" .../> </jsp:useBean>
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 动做标记
jsp:getProperty动做提取指定Bean属性的值,转换成字符串,而后输出。
语法以下:
<jsp:useBean id="myName" ... /> ... <jsp:getProperty name="myName" property="someProperty" .../>
<jsp:element> 、 <jsp:attribute>、 <jsp:body>动做元素动态定义XML元素。动态是很是重要的,这就意味着XML元素在编译时是动态生成的而非静态。
<jsp:text>动做元素容许在JSP页面和文档中使用写入文本的模板