JavaEE学习之路—–JSP(三)

来源:互联网 发布:清除mysql表碎片 编辑:程序博客网 时间:2024/05/17 09:23

1. JSP的7个动作指令

动作指令是运行时的动作,动作指令通常可以替换成JSP脚本,它只是JSP脚本的标准化写发。
JSP动作指令只要有七个:

  • jsp:forward:执行页面转向,将请求的处理转发到下一个页面。
  • jsp:param:用于传递参数,必须与其他支持参数的标签以前使用。
  • jsp:include:用于动态引入一个JSP页面。
  • jsp:plugin:用于下载JavaBean或Applet到客户端执行。
  • jsp:useBean:创建一个JavaBean的实例。
  • jsp:setProperty:设置JavaBean实例的属性值。
  • jsp:getProperty:输出JavaBean实例的属性值。

1.1 forward指令

forward指令用于将页面响应转发到另外的页面。既可以转发到静态的HTML页面,也可以转发到动态的JSP页面,或者转发到容器中的Servlet。
JSP的forward指令的格式:
JSP1.0

<jsp:forward page="{relativeURL|<%=expression%>}"/>

JSP1.1

<jsp:forward page="relativeURL|<%=expression%>">    {<jsp:param.../>}</jsp:forward>

第二种方法可以在转发的时候增加参数,参数可以通过HttpServletRequest类的getParameter()方法获取。
例:
下面的代码是跳转的初始也面:

<%@ 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>forward 原始页</title></head><body>    <h1>foward 原始页</h1>    <jsp:forward page="/forward-result.jsp">        <jsp:param name="age" value="25" />    </jsp:forward></body></html>

在该页面中,指定了转向的目标页“forward-result.jsp”和传递到目标也的参数:参数名“age”,值“25”。
接下来是跳转目标页代码:

<%@ 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>跳转目标页</title></head><body>    <%=request.getParameter("age") %></body></html>

在跳转目标页中,获取age参数并显示
这里写图片描述
由图可见,执行forward指令时,也面的地址没有发生变化,但是,页面的内容却已经被目标页面的内容替换掉了。

1.2 include指令

这里的include指令区分于之前编译指令中的include指令,在编译指令中include指令是静态指令,会将目标页面的所有内容包含进原页面中,这里的include指令是动态的include指令。动态include指令不会导入目标页面的编译指令,只是导入页面的body部分的内容到原页面。
include的语法格式:

<jsp:inlcude page="{relativeURL|<%expression%>}" flush=:"true">

或者

<jsp:include page="{relativeURL|<%expression%>}" flush=:"true">    <jsp:param value="parameterName" name="parameterValue"/></jsp:include>

flush属性用于指定输出缓存是否转移到被导入文件中,如果指定为true,则包含在被导入文件中;如果指定为false,则包含在原文件中。JSP1.1以前只能设置在原页面。
第二种格式,可以在被导入页面中加入请求参数。

动态include和静态include的区别:

  • 静态导入是将被导入页面的代码完全融入,而动态导入则在Servlet中使用include方法来引入被导入页面的内容。
  • 静态导入时被导入页面的编译指令会起作用,而动态导入时被导入页面的编译指令失去作用,只是导入body部分的内容。
  • 动态导入可以增加额外的参数。

1.3 useBean、setProperty、getProperty指令

这三个指令都是与JavaBean有关的指令,其中useBean指令用于在JSP页面中初始化一个Java实例:setProperty指令用于为JavaBean实例的属性设置值;setProperty指令用于输出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:getProperty name="BeanName" property="propertyName" value="value"/>

其中,name属性确定需要设定JavaBean的实例名;property属性确定需要设置的属性名,value属性确定要设置的属性值。
getProperty的语法格式:

<jsp:getProperty name="BeanName" property="propertyName"/> 

其中,name属性确定需要输出的JavaBean的实例名;property属性确定需要输出的属性名。
实例:

<%@ 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="webDemo1.Persion" scope="page"></jsp:useBean>    <jsp:setProperty property="name" value="lisi" name="p1" />    <jsp:setProperty property="age" name="p1" value="23" />    <jsp:getProperty property="name" name="p1" />    <jsp:getProperty property="age" name="p1" /></body></html>

Persion类是一个具有name、age两个属性,并且对name、age都实现了set、get方法的java类。
除了使用指令,也可以通过使用脚本的方式来实现相同的功能:

<%@page import="org.apache.tomcat.util.http.fileupload.RequestContext"%><%@page import="webDemo1.Persion"%><%@ 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="webDemo1.Persion" scope="page"></jsp:useBean>    <jsp:setProperty property="name" value="lisi" name="p1" />    <jsp:setProperty property="age" name="p1" value="23" />    <jsp:getProperty property="name" name="p1" />    <jsp:getProperty property="age" name="p1" />    <%    Persion p2 = new Persion();    p2.setName("zhangsan");    p2.setAge(12);    // 将p2放到页面作用域    pageContext.setAttribute("p2", p2);    // 将p2放到当前请求作用域    request.setAttribute("p2", p2);    // 将p2放到session作用域    session.setAttribute("p2", p2);    // 将p2放到application作用域    application.setAttribute("p2", p2);    out.print(p2.getName());    out.print(p2.getAge());    %></body></html>

使用Java脚本一样能实现指令的功能,并且使用Java脚本也能将实例设置到不同的作用域中去。

1.4 plugin指令

plugin指令主要用于下载服务器的JavaBean或者Applet到客户端执行。由于程序在客户端执行,因此客户端必须安装虚拟机。由于plugin指令使用的不多,就暂时不过多研究。

1.5 param指令

param指令用于设置参数值,这个指令本身不能单独使用,它可以与下面三个指令结合使用:

  • jsp:include
  • jsp:forward
  • jsp:plugin

当与include使用时,param将参数传递给被导入页面;当与forward结合使用时,将参数传入到转向的目标页面;当与plugin结合使用时,将参数传递到JavaBean实例或Applet实例。
param指令语法

<jsp:param value="value" name="paramName"/>
0 0
原创粉丝点击