Java Server Pages(JSP)——5. 动作指令

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zy2317878/article/details/80341535

写在前面

动作是第三种类型的语法元素, 它们被转换成Java代码来执行操作, 如访问一个Java对象或调用方法。 本节仅讨论所有JSP容器支持的标准动作。 除标准外, 还可以创建自定义标签执行某些操作。动作指令与编译指令不间,编译指令是通知 Servlet 引擎的处理消息,而动作指令只是运行时的脚本动作。编译指令在将JSP 编译成 Servlet 时起作用:处理指令通常可替换成 Java脚本,是 JSP脚本的标准化写法。

下面只是自己根据书上与一些网络资料整理得到的,更加详细的可以参考:JSP 动作元素|菜鸟教程

JSP的七个动作指令

  1. jsp:forward: 执行页面转向,将请求的处理转发到下一个页面。
  2. jsp:param: 用于传递参数,必须与其他支持参数曲标签一起使用。
  3. jsp:include: 在页面被请求的时候引入一个文件。
  4. jsp:plugin: 用于下载 JavaBean 或 Applet 到客户端执行。
  5. jsp:useBean: 寻找或者实例化一个JavaBean。
  6. jsp:setProperty: 修改 JavaBean 实例的属性值。
  7. jsp:getProperty: 获取 JavaBean 实例的属性值

JSP动作指令的语法

动作元素只有一种语法,它符合XML标准:

<jsp:action_name attribute="value" />

注意最后面那个左斜杠。

jsp:useBean

useBean将创建一个关联Java对象的脚本变量。 这是早期分离的表示层和业务逻辑的手段。 随着其他技术的发展, 如自定义标签和表达语言, 现在很少使用useBean方式。

示例代码如下:

<html>
	<head>
		<title>useBean</title>
	</head>
		<body><jsp:useBean id="today" class="java.util.Date"/>
		<%=today%>
	</body>
</html>

在Tomcat中, 上述代码会被转换为如下代码:

java.util.Date today = null;
today = (java.util.Date) _jspx_page_context.getAttribute("today",javax.servlet.jsp.PageContext.REQUEST_SCOPE);
if (today == null) {
	today = new java.util.Date();
	_jspx_page_context.setAttribute("today", today, javax.servlet.jsp.PageContext.REQUEST_SCOPE);
}

jsp:setProperty 和 jsp:getProperty

setProperty动作可对一个Java对象设置属性, 而getProperty则会输出Java对象的一个属性。

下面将定义一个Empolyee类,代码如下:

package app03a;
public class Employee {
	private String id;
	private String firstName;
	private String lastName;
	
	public int getId(){
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getFirstName() {
		return firstName;
	}
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
}

然后将在JSP中通过setProperty 与 getProperty设置和定义之前定义的Empolyee类的firstName属性。

<html>
	<head>
		<title>getProperty and setProperty</title>
	</head>
	<body>
		<jsp:useBean id="employee" class="app03a.Employee"/>
		<jsp:setProperty name="employee" property="firstName"value="Abigail"/>
		First Name: <jsp:getProperty name="employee" property="firstName"/>
	</body>
</html>

jsp:include

include动作用来动态地引入另一个资源。 包含页面程序与被包含页面程序是彼此独立,互不影响的。可以引入另一个JSP页面, 也可以引入一个Servlet或一个静态的HTML页面。

include指令使用样式如下:

<jsp:include page="相对 URL 地址" flush="true" />

如果定义了一个名为date.jsp的文件,要在另一个名为main.jsp中引入这个JSP文件,两个文件都在服务器的根目录下,那么就可以按照如下方式引用:

<jsp:include page="date.jsp" flush="true" />

理解include指令和include动作非常重要。 对于include指令, 资源引入发生在页面转换时, 即当JSP容器将页面转换为生成的Servlet时。 而对于include动作, 资源引入发生在请求页面时。 因此, 使用include动作是可以传递参数的, 而include指令不支持。

include动作指令用来动态地引入另一个资源。注意这里的“动态”一词的含义。

第二个不同是, include指令对引入的文件扩展名不做特殊要求。 但对于include动作, 若引入的文件需以JSP页面处理, 则其文件扩展名必须是JSP。 若使用.jspf为扩展名, 则该页面被当作静态文件。

jsp:forward

forward将当前页面转向到其他资源。jsp:forward标记只有一个属性page。语法格式如下所示:

<jsp:forward page="相对 URL 地址" />

例如在一个JSP中从当前页面转向到login.jsp页面:

<jsp:forward page="jspf/login.jsp">
	<jsp:param name="text" value="Please login"/>
</jsp:forward>

写在最后

JSP的九大对象、七大指令、三大命令,我基本都过了一遍,但是还有很多地方不够完善,没有足够多的示例,没有足够多的实际场景应用的注意事项。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页