jsp的7个动作指令
JSP的7个动作指令
动作指令与编译指令不同,编译指令是通知Serviet引擎的处理消息,而动作指令只是运行时的动 作。编译指令在将JSP编译成Serviet时起作用:而处理指令通常可替换成JSP脚本,它只是JSP脚本 的标准化写法。
JSP动作指令主要有如下7个:
jsp:forward 执行页面转向,将请求的处理转向下一个页面
jsp:param 用于传递参数,必须与其他支持参数的标签一起使用
jsp:include 用于动态的引入一个jsp页面
jsp:plugin 用于下载javaBean或applet到客户端执行
jsp:useBean 创建一个JavaBean的实例
jsp:setProperty 设置JavaBean实例的属性值
jsp:getProperty 输出JavaBean实例的属性值
1、jsp:forward指令
forward指令用于将页面响应转发到另外的页面。既可以转发到静态的HTML页面,也可以转发到 动态的JSP页面,或者转发到容器中的Servlet
JSP的forward指令的格式如下。
对于JSP1.0,使用如下语法:
<jsp:forward page=”{relativeURL I <%=expression%>}”/>
对于JSPI. I以上规范,可使用如下语法:
<jsp:forward page=”{relativeURL I <%=expression%>}”>
{<jsp:param ... />}
</jsp:forward>
第二种语法用于在转发时增加额外的请求参数。增加的请求参数的值可以通过HttpServletRequest 炎的getParameter()方法获取。
下面示例页面使用了forward动作指令来转发用户请求
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!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>Insert title here</title> </head> <body> <h3>forward的原始页面</h3> <jsp:forward page="forward-result.jsp"> <jsp:param value="29" name="age"/> </jsp:forward> </body> </html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!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>Insert title here</title> </head> <body> <%=request.getParameter("age") %> </body> </html>
form表单提交:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!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>Insert title here</title> </head> <body> <form method="post" action="formForward-result.jsp"> <input type="text" name="username"/> <input type="submit" value="提交"/> </form> </body> </html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!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>Insert title here</title> </head> <body> <%=request.getParameter("username") %> </body> </html>
2、jsp:include指令
include指令是一个动态的include指令,也用于包含某个页面, 它不会导入被include页面的编译指令,仅仅将被导入页面的 body 内容插入本页面
下面是include指令的语法格式:
<jsp:include page=” {relativeURL I <%expression>} flush="true" />
或者
<jsp:include page=” {relativeURL I <%expression>} flush="true" >
<jsp:param name="parameterName” value=”patameterValue” />
<jsp:include>
示例如下:
<%@ page info="this is a page" %>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" errorPage="error.jsp"%>
<!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>Insert title here</title>
</head>
<body>
<jsp:include page="scriptlet.jsp"></jsp:include>
<!-- 带参数 -->
<jsp:include page="forward-result.jsp">
<jsp:param value="39" name="age"/>
</jsp:include>
</body>
</html>
forward指令使用一jspx_page_ context 的 forward()方法来引入目标页面,而 include 指令则使用通过 JspRuntimeLibrary 的 include()方法来引入目标页面。
区别在于:执行 forward 时 被forward 的页面将完全代替原有页面; 而执行 include 时, 被 include 的页面只是插入原有页面。 简而言之, forward 拿目标页面代替原有页面, 而include 则拿目标页面插入原有页面。
3、useBean、setProperty、getProperty指令
这三个指令都是与JavaBean 相关的指令, 其中useBean 指令用于在JSP 页面中初始化一个Java实例 ; setProperty 指令用于为JavaBean 实例的属性设置值: getProperty 指令用于输出JavaBean 实例的属性。
如果多个JSP 页面中需要重复使用某段代码, 贝IJ可以把这段代码定义成Java 类的方法, 然后让多个JSP 页面调用该方法即可, 这样可以达到较好的代码复用。
use Bean 的语法格式如下:
<jsp:useBean id="narne" class=” classnarne" scope=”page I request I session I application"/>
其中, id 属性是JavaBean 的实例名, class 属性确定JavaBean 的实现类。scope 属性用于指定JavaBean
实例的作用范围, 该范围有以下4个值:
page: 该JavaBean 实例仅在该页面有效
request: 该JavaBean 实例在本次请求有效。
session: 该JavaBean 实例在本次session 内有效。
application: 该JavaBean 实例在本应用内一直有效。
setProperty 指令的语法格式如下:
<jsp:setProperty name=”BeanNarne” proterty=”propertyNarne” value=”value"/>
get Property 的语法格式如下:
<jsp:getProperty name=”BeanNarne" proterty="propertyNarne" />
其中, name 属性确定需要输出的JavaBean 的实例名; proterty 属性确定需要输出的属性名。
下面的JSP 页面示范了如何使用这三个动作指令来操作JavaBean。
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!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>Insert title here</title> </head> <body> <jsp:useBean id="p1" class="lee.Person" /> <jsp:setProperty property="name" name="p1" value="lidian"/> <jsp:setProperty property="age" name="p1" value="23"/> <jsp:getProperty property="name" name="p1"/> <jsp:getProperty property="age" name="p1"/> </body> </html>
javaBean,/webDemo/src/lee/Person.java
package lee; public class Person { private String name; private int age; private Person(String name,int age) { this.setName(name); this.setAge(age); } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
上面的 Person. va 只是源文件, 此处将该文件放在 Web 应用的 WEB-INF/src 路径下, 实际上 Java 源文件对 Web 应用不起作用, 所以此处会使用 Ant 来编译它, 并将编译得到的二进制文件放入 WEB-INF / classes 路径下。 而且, 为 Web 应用提供了新的 class 文件后, 必须重启该 Web 应用, 让它 可 以重新加载这些新的 class 文件。
其实上面的标签完全可以不使用,
<%@page import="lee.Person"%> <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!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>Insert title here</title> </head> <body> <% Person p1 = new Person("123", 23); /* 将p1放在request中 */ request.setAttribute("p1", p1); %> <h1><%=p1.getName() %></h1> <h1><%=p1.getAge() %></h1> </body> </html>
4、jsp:plugin指令
plugin指令主要用于下载服务器端的JavaBean或Applet到客户端执行。由于程序在客户端执行,所以必须安装虚拟机。实际由于现在很少使用Applet,而且就算要使用Applet,也完全可以使用支持AppletI ‘函,的HTML标签,所以jsp:plugin标签的使用场景并不多。
5、jsp:param指令
param指令用于设置参数值,这个指令本身不能单独使用,因为单独的param指令没有实际意义。 param指令可以与以F三个指令结合使用。
jsp:forward
jsp:include
jsp:plugin
语法如下:
param指令的语法格式如下:
<jsp:param name="paramName" value="paramValue” />