JSP动作指令详解
2016-04-02 23:16
393 查看
动作指令和编译指令的区别:
编译指令是通知serverlet引擎处理消息,只在jsp被转化成serverlet的时候起作用。
动作指令是在jsp被客户端请求时动态执行的。也就是说:每次客户端请求时都有可能被执行一次。
动作元素只有一种语法,它符合XML标准:
所有的动作要素都有两个属性:id属性和scope属性。
id属性:id属性是动作元素的唯一标识,可以在JSP页面中引用。动作元素创建的id值可以通过PageContext来调用。
scope属性:该属性用于识别动作元素的生命周期。id属性和scope属性有直接关系,scope属性定义了相关联id对象的寿命。scope属性有四个可能的值:(a)page,(b)request,(c)session,和(d)application。
forward指令用于将当前的程序重新定向到一个html页面或者一个动态程序,例如jsp,serverl。
forward指令有两种形式:带参数和不带参数。
语法格式如下:
以下是forward相关联的属性:
注:forward指令是一个重定向指令,所以forward指令下面的指令是不会被执行到的。
实例:
直接访问index.jsp然后重定向到login.jsp。
index.jsp
login.jsp
执行结果如下:
include指令:动态包含指令,用来在一个jsp文件中包含一个静态或者动态的文件。静态文件一般为html文件,动态文件一般为jsp文件
静态文件处理:直接文将静态件加入到jsp程序中
jsp文件处理:首先将jsp程序执行,然后将生成的内容加入到当前的jsp程序中
语法格式如下:
以下是include动作相关的属性列表。
与编译指令中的include指令区别:
静态导入是将被导入的页面代码完全融入,两个页面融合成一个整体的serverlet
动态导入是将serverlet中使用include方法来引入被导入的页面的内容
静态导入被导入页面的编译作用会起作用。而动态导入是被导入的页面的编译作用会失去作用,只是插入到被导入页面的body体。
执行include动态导入时还可以增加额外的参数
实例:
添加一个头部html页面,body提添加一个jsp文件。并传递参数
header.html
body.jsp
index.jsp
首先解释下javaBean:
必须有一个公共的、默认的构造函数
javaBean的所有属性必须通过get/set访问
javaBean必须是可序列化的
jsp:useBean动作用来装载一个将在JSP页面中使用的JavaBean。
这个功能非常有用,因为它使得我们既可以发挥Java组件重用的优势,同时也避免了损失JSP区别于Servlet的方便性。
jsp:useBean动作最简单的语法为:
以下是useBean动作相关的属性列表。
实例:
实现注册功能:register.jsp文件用于录入注册信息,do_register.jsp用来显示注册信息
首先,创建一个javaBean,User类
register.jsp
do_register.jsp
显示结果:
编译指令是通知serverlet引擎处理消息,只在jsp被转化成serverlet的时候起作用。
动作指令是在jsp被客户端请求时动态执行的。也就是说:每次客户端请求时都有可能被执行一次。
动作元素只有一种语法,它符合XML标准:
<jsp:action_nameattribute="value"/>
语法 | 描述 |
---|---|
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。
动作指令-forward指令
forward指令用于将当前的程序重新定向到一个html页面或者一个动态程序,例如jsp,serverl。forward指令有两种形式:带参数和不带参数。
语法格式如下:
<jsp:forwardpage="RelativeURL"/>
以下是forward相关联的属性:
属性 | 描述 |
---|---|
page | page属性包含的是一个相对URL。page的值既可以直接给出,也可以在请求的时候动态计算,可以是一个JSP页面或者一个JavaServlet. |
注:forward指令是一个重定向指令,所以forward指令下面的指令是不会被执行到的。
实例:
直接访问index.jsp然后重定向到login.jsp。
index.jsp
<%@pagecontentType="text/html;charset=UTF-8"language="java"%>
<jsp:forwardpage="login.jsp">
<jsp:paramname="userName"value="icarus"/>
<jsp:paramname="password"value="123456"/>
</jsp:forward>
login.jsp
<%@pagecontentType="text/html;charset=UTF-8"language="java"%>
<html>
<head>
<title>Login</title>
</head>
<body>
<%--登陆页面--%>
<%
StringuserName=request.getParameter("userName");
Stringpassword=request.getParameter("password");
out.println(userName);
out.print("<br/>");
out.println(password);
%>
</body>
</html>
执行结果如下:
动作指令-include指令
include指令:动态包含指令,用来在一个jsp文件中包含一个静态或者动态的文件。静态文件一般为html文件,动态文件一般为jsp文件静态文件处理:直接文将静态件加入到jsp程序中
jsp文件处理:首先将jsp程序执行,然后将生成的内容加入到当前的jsp程序中
语法格式如下:
<jsp:includepage="relativeURL"flush="true"/>
以下是include动作相关的属性列表。
属性 | 描述 |
---|---|
page | 包含在页面中的相对URL地址。 |
flush | 布尔属性,定义在包含资源前是否刷新缓存区。 |
与编译指令中的include指令区别:
静态导入是将被导入的页面代码完全融入,两个页面融合成一个整体的serverlet
动态导入是将serverlet中使用include方法来引入被导入的页面的内容
静态导入被导入页面的编译作用会起作用。而动态导入是被导入的页面的编译作用会失去作用,只是插入到被导入页面的body体。
执行include动态导入时还可以增加额外的参数
实例:
添加一个头部html页面,body提添加一个jsp文件。并传递参数
header.html
<head> <title>Title</title> </head>
body.jsp
<bodybgcolor="<%=request.getParameter("bgcolor")%>">
</body>
index.jsp
<%@pagecontentType="text/html;charset=UTF-8"language="java"%>
<html>
<jsp:includepage="header.html"></jsp:include>
<jsp:includepage="body.jsp">
<jsp:paramname="bgcolor"value="red"/>
</jsp:include>
</html>
动作指令-useBean指令
首先解释下javaBean:必须有一个公共的、默认的构造函数
javaBean的所有属性必须通过get/set访问
javaBean必须是可序列化的
jsp:useBean动作用来装载一个将在JSP页面中使用的JavaBean。
这个功能非常有用,因为它使得我们既可以发挥Java组件重用的优势,同时也避免了损失JSP区别于Servlet的方便性。
jsp:useBean动作最简单的语法为:
<jsp:useBeanid="name"class="package.class"/>
以下是useBean动作相关的属性列表。
属性 | 描述 |
---|---|
class | 指定Bean的完整包名。 |
type | 指定将引用该对象变量的类型。 |
beanName | 通过java.beans.Beans的instantiate()方法指定Bean的名字。 |
实例:
实现注册功能:register.jsp文件用于录入注册信息,do_register.jsp用来显示注册信息
首先,创建一个javaBean,User类
publicclassUserimplementsSerializable{
privateStringuserName;
privateStringpassword;
publicUser(){}
publicUser(StringuserName,Stringpassword){
this.userName=userName;
this.password=password;
}
publicStringgetUserName(){
returnuserName;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetUserName(StringuserName){
this.userName=userName;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
}
register.jsp
<%@pagecontentType="text/html;charset=UTF-8"language="java"%>
<html>
<head>
<title>录入注册信息</title>
</head>
<body>
<formaction="do_register.jsp"method="post">
用户名:<inputtype="text"name="userName"/>
密码:<inputtype="password"name="password"/>
<inputtype="submit"value="提交"/>
</form>
</body>
</html>
do_register.jsp
<jsp:useBeanid="user"class="com.icarus.example.User"></jsp:useBean>
<jsp:setPropertyname="user"property="userName"/>
<jsp:setPropertyname="user"property="password"/>
<%
StringuserName=request.getParameter("userName");
Stringpassword=request.getParameter("password");
out.println("用户名:"+userName);
out.println("<br/>");
out.println("密码:"+password);
%>
<br/>
用户名:
<jsp:getPropertyname="user"property="userName"/>
<br/>
密码:
<jsp:getPropertyname="user"property="password"/>
</body>
</html>
显示结果:
相关文章推荐
- JSP编译指令详解
- IntelliJ IDEA2016.1新建JSP工程
- JavaScript 原型模式的理解
- 30 段 JavaScript 代码
- javascript函数的几点总结
- js indexOf substring用法
- 【笔记】 《js权威指南》- 第6章 对象 - 6.8 对象的三个属性
- json使用方法
- Python和JavaScript中对超过数组长度的操作处理的不同
- JS实现全选、不选、反选
- JS正则表达式基本用法(经典全)
- JSON 之FastJson解析
- JavaScript面向对象及相关知识
- JavaScript继承
- js--面向对象--原型链
- javascript中的后退和刷新
- 【笔记】 《js权威指南》- 第6章 对象 - 6.7 属性的特性 (ECMAScript5)
- JS高级程序设置笔记(五)
- 观察者模式——JavaScript
- js设计模式-适配器模式