JSP动作标签,EL及JSTL

JSP动作标签

与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用。JSP动作元素是用XML语法写成的。 利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。

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

<jsp:action_name attribute="value" />

动作标签基本上都是预定义的函数,JSP规范定义了一系列的标准动作,它用JSP作为前缀,可用的标准动作元素如下:

动作语法
jsp:include在页面被请求的时候引入一个文件。
jsp:useBean寻找或者实例化一个JavaBean。
jsp:setProperty设置JavaBean的属性。。
jsp:getProperty把请求转到一个新的页面。
jsp:forward在页面被请求的时候引入一个文件。
jsp:plugin根据浏览器类型为Java插件生成OBJECT或EMBED标记。
jsp:element设置动态定义的XML元素内容。
jsp:body在页面被请求的时候引入一个文件。
jsp:text在JSP页面和文档中使用写入文本的模板

常见的属性
所有的动作要素都有两个属性:id属性和scope属性。

  • id属性: id属性是动作元素的唯一标识,可以在JSP页面中引用。动作元素创建的id值可以通过PageContext来调用。

  • scope属性: 该属性用于识别动作元素的生命周期。 id属性和scope属性有直接关系,scope属性定义了相关联id对象的寿命。

    scope属性有四个可能的值: (a) page, (b)request, ©session, 和 (d) application。

jsp:include动作元素

jsp:include动作元素用来包含静态和动态的文件。该动作把指定文件插入正在生成的页面。语法格式如下:

<jsp:include page="relative URL" flush="true" />

前面已经介绍过include指令,它是在JSP文件被转换成Servlet的时候引入文件,而这里的jsp:include动作不同,插入文件的时间是在页面被请求的时候。
以下是include动作相关的属性列表。

属性描述
page包含在页面中的相对URL地址。
flush布尔属性,定义在包含资源前是否刷新缓存区。

实例:
date.jsp文件代码:

<p>
   Today's date: <%= (new java.util.Date()).toLocaleString()%>
</p>

main.jsp文件代码:

<html>
<head>
<title>The include Action Example</title>
</head>
<body>
<center>
<h2>The include action Example</h2>
<jsp:include page="date.jsp" flush="true" />
</center>
</body>
</html>

现在将以上两个文件放在服务器的根目录下,访问main.jsp文件。显示结果如下:

The include action Example
Today's date: 12-Sep-2013 14:54:22

jsp:useBean动作元素

jsp:useBean动作用来装载一个将在JSP页面中使用的JavaBean。
这个功能非常有用,因为它使得我们既可以发挥Java组件重用的优势,同时也避免了损失JSP区别于Servlet的方便性。
jsp:useBean动作最简单的语法为:

<jsp:useBean id="name" class="package.class" />

在类载入后,我们既可以通过 jsp:setProperty 和 jsp:getProperty 动作来修改和检索bean的属性。
以下是useBean动作相关的属性列表。

属性描述
class指定Bean的完整包名。
type指定将引用该对象变量的类型。
beanName通过 java.beans.Beans 的 instantiate() 方法指定Bean的名字。

jsp:setProperty动作元素

jsp:setProperty用来设置已经实例化的Bean对象的属性,有两种用法。首先,你可以在jsp:useBean元素的外面(后面)使用jsp:setProperty,如下所示:

<jsp:useBean id="myName" ... />
...
<jsp:setProperty name="myName" property="someProperty" .../>

jsp:getProperty动作元素

jsp:getProperty动作提取指定Bean属性的值,转换成字符串,然后输出。语法格式如下:

<jsp:useBean id="myName" ... />
...
<jsp:getProperty name="myName" property="someProperty" .../>

下表是与getProperty相关联的属性:

属性描述
name要检索的Bean属性名称。Bean必须已定义。
property表示要提取Bean属性的值

实例(这里使用了bean)

/* 文件: TestBean.java */
package action;
 
public class TestBean {
   private String message = "No message specified";
 
   public String getMessage() {
      return(message);
   }
   public void setMessage(String message) {
      this.message = message;
   }
}

编译以上实例并生成 TestBean.class 文件,将该文件拷贝至服务器正式存放Java类的目录下,而不是保留给修改后能够自动装载的类的目录( 如:C:\apache-tomcat-7.0.2\webapps\WEB-INF\classes\action目录中,CLASSPATH 变量必须包含该路径。 )。例如,对于Java Web Server来说,Bean和所有Bean用到的类都应该放入classes目录,或者封装进jar文件后放入lib目录,但不应该放到servlets 下。   下面是一个很简单的例子,它的功能是装载一个Bean,然后设置/读取它的message属性。
现在让我们在main.jsp文件中调用该Bean:

 <html>
<head>
<title>Using JavaBeans in JSP</title>
</head>
<body>
<center>
<h2>Using JavaBeans in JSP</h2>
 
<jsp:useBean id="test" class="action.TestBean" />
 
<jsp:setProperty name="test"                      property="message"                      value="Hello JSP..." />
 
<p>Got message....</p>
 
<jsp:getProperty name="test" property="message" />
 
</center>
</body>
</html>

输出结果为

Using JavaBeans in JSP
Got message....
Hello JSP...

jsp:forward 动作元素

jsp:forward动作把请求转到另外的页面。jsp:forward标记只有一个属性page。语法格式如下所示:

<jsp:forward page="Relative URL" />

关联的属性

属性描述
pagepage属性包含的是一个相对URL。page的值既可以直接给出,也可以在请求的时候动态计算,可以是一个JSP页面或者一个 Java Servlet.

实例:
data.jsp 代码

<p>
   Today's date: <%= (new java.util.Date()).toLocaleString()%>
</p>

main.jsp 代码

<html>
<head>
<title>The forward Action Example</title>
</head>
<body>
<center>
<h2>The forward action Example</h2>
<jsp:forward page="date.jsp" />
</center>
</body>

访问main.jsp文件 显示结果为

Today's date: 12-Sep-2010 14:54:22

EL表达式(原文链接:https://blog.csdn.net/qq_38225558/article/details/83005113)

${ 域对象的数据名称 } 主要用于展示数据,数据来源主要来自于域对象 ex:

request.setAttribute(“a”,”数据”);

EL:  ${ a }

EL表达式获取域对象中数据的优先级

${ 域对象的数据名称 }

域对象中从小往大取值(注:pageContext为最小的域对象)

pageContext > request > session > servletContext【application】

不同域对象中如何存在相同的数据名称? ==》 ${ 域对象Scope.数据名称 }

Scope指定了域对象

pageScope requestScope sessionScope applicationScope

EL隐含对象

JSTL

JSP 标准标签库(JSTL)

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。
JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。
根据JSTL标签所提供的功能,可以将其分为5个类别。

  • List item
  • 核心标签
  • 格式化标签
  • SQL 标签
  • XML 标签
  • JSTL 函数

JSTL 库安装

Apache Tomcat安装JSTL 库步骤如下:

  • 从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
  • 下载jakarta-taglibs-standard-1.1.1.zip
    包并解压,将jakarta-taglibs-standard-1.1.1/lib/下的两个jar文件:standard.jar和jstl.jar文件拷贝到/WEB-INF/lib/下。

百度网盘 已下载好的压缩包

  • 在 web.xml 文件中添加以下配置:
<jsp-config>
	<taglib>
	<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
	<taglib-location>/WEB-INF/fmt.tld</taglib-location>
	</taglib>
	<taglib>
	<taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
	<taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
	</taglib>
	<taglib>
	<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
	<taglib-location>/WEB-INF/c.tld</taglib-location>
	</taglib>
	<taglib>
	<taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
	<taglib-location>/WEB-INF/c-rt.tld</taglib-location>
	</taglib>
	<taglib>
	<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
	<taglib-location>/WEB-INF/sql.tld</taglib-location>
	</taglib>
	<taglib>
	<taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
	<taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
	</taglib>
	<taglib>
	<taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
	<taglib-location>/WEB-INF/x.tld</taglib-location>
	</taglib>
	<taglib>
	<taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
	<taglib-location>/WEB-INF/x-rt.tld</taglib-location>
	</taglib>
	</jsp-config>

使用任何库,你必须在每个JSP文件中的头部包含标签。

核心标签

核心标签是最常用的JSTL标签。引用核心标签库的语法如下:

<%@ taglib prefix="c"            
           uri="http://java.sun.com/jsp/jstl/core" %>

标签分类
格式化标签

JSTL格式化标签用来格式化并输出文本、日期、时间、数字。

引用语法:

<%@ taglib prefix="fmt" 
           uri="http://java.sun.com/jsp/jstl/fmt" %>

格式化标签
SQL标签

JSTL SQL标签库提供了与关系型数据库(Oracle,MySQL,SQL Server等等)进行交互的标签。

引用语法:

<%@ taglib prefix="sql"             
           uri="http://java.sun.com/jsp/jstl/sql" %>

sql标签
XML 标签

JSTL XML标签库提供了创建和操作XML文档的标签。
在使用xml标签前,你必须将XML 和 XPath 的相关包拷贝至你的<Tomcat 安装目录>\lib下:
<liXercesImpl.jar:
下载地址: http://www.apache.org/dist/xerces/j/
xalan.jar:
下载地址: http://xml.apache.org/xalan-j/index.html

引用语法;

<%@ taglib prefix="x"             
           uri="http://java.sun.com/jsp/jstl/xml" %>

xml标签
JSTL函数

JSTL包含一系列标准函数,大部分是通用的字符串处理函数。

引用语法:

<%@ taglib prefix="fn"             
           uri="http://java.sun.com/jsp/jstl/functions" %>

JSTL函数图片

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值