JSP-常用的标签(JSTL+EL)

文章目录

  • 一、含义
    • 1.1 JSTL含义
    • 1.2 JSTL环境搭建
    • 1.3 四大类标签
    • 1.4 EL表达式
      • 1.4.1 含义
      • 1.4.2 作用
      • 1.4.3 语法
      • 1.4.4 “.”与“[]”运算符
      • 1.4.5 EL变量
      • 1.4.6 EL自动类型转换
      • 1.4.7 EL隐式对象
      • 1.4.8 EL运算符
  • 二、核心标签
    • 2.1 set标签
      • 2.1.1 存值到scope(四种作用域对象)中。
      • 2.1.2 存值到JavaBean中。
    • 2.2 remove标签
    • 2.3 catch标签
    • 2.4 if标签
  • 三、格式化标签
  • 四、SQL标签
  • 五、XML标签
    • 5.1 导包
    • 5.2 注意
  • 六、JSTL函数
    • 6.1 导包
    • 6.2 示例

一、含义

1.1 JSTL含义

JSP常用标签:简称JSTL(JavaServer Pages Standard Tag Library )。JSTL是Java中的一个定制标记库集。是一个JSP标签集合。
定制标记库集:不用自己编写,直接使用。
作用
(1)实现JSP页面中的代码复用
代码复用原理:基于标签库原理,重复率较高的代码块支持复用,提高效率。
(2)书写JSP页面时可读性更强
原因:长得很像XML,方便前端查看和参与开发。
JSP代码的效果:

<%
  String role = "";
  if(request.getParameter("role") != null){
    role = request.getParameter("role");
    if("user".equals(role)){
%>    
    	欢迎用户!
<%
    }
    if("admin".equals(role)){
%> 
    	欢迎管理员!
<%
    }
  }
%>

JSTL标签的效果:

<c:if test="${param.role == 'user'" var="adminchok">
	<c:out value="欢迎用户!">c:out>
c:if>	
<c:if test="${param.role == 'admin'" var="adminchok">
	<c:out value="欢迎管理员!">c:out>
c:if>	

1.2 JSTL环境搭建

第一步:确定服务器的版本。
原因:JSTL标签和Servlet及JSP页面有着比较严格的版本对应关系。版本不正确,容易抛出异常。
Tomcat7.0(JSTL1.1.2)
第二步:下载对应的jakarta-taglibs-standard-1.1.2。解压。
第三步:找到\jakarta-taglibs-standard-1.1.2\lib\jstl.jar和\jakarta-taglibs-standard-1.1.2\lib\standard.jar两个jar包,并复制。
第六步:粘贴到项目名\WebContent\WEB-INF\lib中。在点击右键—BuildPath—a…。

1.3 四大类标签

(1)核心标签
(2)格式化标签
(3)SQL标签
(4)XML标签

1.4 EL表达式

1.4.1 含义

EL:Expression Language。
EL表达式访问作用域的顺序是从小到大的:
pageScope→requestScope→sessionScope→applicationScope

1.4.2 作用

解决JSTL标签中属性“value = 变量”的问题。常与JSTL标签配合使用,使得JSP页面更直观、写法更简单。

1.4.3 语法

${表达式}
普通写法:

<%=session.getValue("name") %>

(JSTL + EL表达式)写法:

<c:out value="${sessionScope.name}" />

1.4.4 “.”与“[]”运算符

(1)通常情况下,在EL表达式中,二者可通用。

${user.sex} <=> ${user["sex"]}

(2)集合元素定位。使用[]

${booklist[0].price}

(3)包含特殊字符。使用[]。

${user["frist_nme"]}

(4)通过变量动态取值。使用[]。

${user[param]} <=> ${user.name} or ${user.sex}..........

1.4.5 EL变量

JSP内置对象 EL名称
page pageScope
request requestScope
session sessionScope
application applicationScope

限定搜索范围时:

用户名:${sessionScope.username}

未设置范围是时:
从小到大查找(page →request→session →application)。

用户名:${username}
用户名:<c:out value="${username}">c:out>

1.4.6 EL自动类型转换

问题:获取文本框输入的数字。
普通方法:

<%
	String str = request.getParameter("id");
	int id1 = Integer.parseInt(str);
	id1 = id1 + 1;
%>

EL表达式方法:

<c:out value="${param.id + 1}"/>

1.4.7 EL隐式对象

JSP内置对象 EL名称
pageContext PageConext实例对象。对应于当前页面的处理。
pageScope 页面作用域(Map类)
requestScope 请求作用域(Map类)
sessionScope 会话作用域(Map类)
applicationScope 应用程序作用域(Map类)
param 请求参数的主要值(Map类)
paramValues 请求参数的所有值作为String数组存储(Map类)
Header 请求头的主要值(Map类)
headerValues 请求头的所有值(Map类)
cookie 请求的cookie值(Map类)
initParam Web应用程序初始化参数(Map类)

1.4.8 EL运算符

类别 运算符
算术运算符 +、-、*、/(或div)、%(或mod)。
关系运算符 ==(eq)、!=(ne)、<(lt)、>(gt)、<=(le)、>=(ge)。
逻辑运算符 &&(and)、||(or)、!(not)。
验证运算符 empty。
<%
	String username = "张三";
	request.setAttribute("username",username);
%>	
<c:out value="${empty.username}"><c:out>



<c:out value="小于号:<。大于号:>" escapeXml="false"/>

二、核心标签

标签 含义
用于在JSP中显示数据,就像<%= … >
用于保存数据。
用于删除数据
用来处理产生错误的异常状况,并且将错误信息储存起来
与我们在一般程序中用的if一样
本身只当做的父标签
的子标签,用来判断条件是否成立
的子标签,接在标签后,当标签判断为false时被执行
检索一个绝对或相对 URL,然后将其内容暴露给页面
遍历集合
字符串截取
用来给包含或重定向的页面传递参数
重定向至一个新的URL.
使用可选的查询参数来创造一个URL
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

2.1 set标签

2.1.1 存值到scope(四种作用域对象)中。

语法1:

<c:set var="varName" scope="scopeName">var_valuec:set>

2.1.2 存值到JavaBean中。

<jsp:useBean id="objectName" class="packageName.className"/>
<c:set target="${objectName}" property="objectAttribute" value="objectAattributeValue"/>

2.2 remove标签

<c:remove var="waitDeletVarName"/>

2.3 catch标签

<c:catch var="errorName"/>
	<c:set target="aa" property="bb">此对象未创建,会出错!c:set>
c:catch>

<c:out value="${errorName}"/>

2.4 if标签

<form action="firstDemo.jsp" method="post">
	<input type="text" name="score" value="${param.score}"/>
	<input type="submit"/>
form>
<c:if test="${param.score>=90}" var="result" scope="page" />
	<c:out value="优秀"/>
c:if>
<c:out value="${pageScope.result}"/>

三、格式化标签

标签 含义
fmt:formatNumber 使用指定的格式或精度格式化数字
fmt:parseNumber 解析一个代表着数字,货币或百分比的字符串
fmt:formatDate 使用指定的风格或模式格式化日期和时间
fmt:parseDate 解析一个代表着日期或时间的字符串
fmt:bundle 绑定资源
fmt:setLocale 指定地区
fmt:setBundle 绑定资源
fmt:timeZone 指定时区
fmt:setTimeZone 指定时区
fmt:message 显示资源配置文件信息
fmt:requestEncoding 设置request的字符编码
<%@ taglib prefix="fmt"  uri="http://java.sun.com/jsp/jstl/fmt" %>

四、SQL标签

标签 含义
sql:setDataSource 指定数据源
sql:query 运行SQL查询语句
sql:update 运行SQL更新语句
sql:param 将SQL语句中的参数设为指定值
sql:dateParam 将SQL语句中的日期参数设为指定的java.util.Date 对象值
sql:transaction 在共享数据库连接中提供嵌套的数据库行为元素,将所有语句以一个事务的形式来运行
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

五、XML标签

标签 含义
与<%= … >,类似,不过只用于XPath表达式
解析 XML 数据
设置XPath表达式
判断XPath表达式,若为真,则执行本体中的内容,否则跳过本体
迭代XML文档中的节点
的父标签
的子标签,用来进行条件判断
的子标签,当判断为false时被执行
将XSL转换应用在XML文档中
共同使用,用于设置XSL样式表

5.1 导包

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

5.2 注意

在使用xml标签前,你必须将XML 和 XPath 的相关包拷贝至你的\lib下:
XercesImpl.jar下载地址: http://www.apache.org/dist/xerces/j/

xalan.jar下载地址: http://xml.apache.org/xalan-j/index.html

六、JSTL函数

标签 含义
fn:contains() 测试输入的字符串是否包含指定的子串
fn:containsIgnoreCase() 测试输入的字符串是否包含指定的子串,大小写不敏感
fn:endsWith() 测试输入的字符串是否以指定的后缀结尾
fn:escapeXml() 跳过可以作为XML标记的字符
fn:indexOf() 返回指定字符串在输入字符串中出现的位置
fn:join() 将数组中的元素合成一个字符串然后输出
fn:length() 返回字符串长度
fn:replace() 将输入字符串中指定的位置替换为指定的字符串然后返回
fn:split() 将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回
fn:startsWith() 测试输入字符串是否以指定的前缀开始
fn:substring() 返回字符串的子集
fn:substringAfter() 返回字符串在指定子串之后的子集
fn:substringBefore() 返回字符串在指定子串之前的子集
fn:toLowerCase() 将字符串中的字符转为小写
fn:toUpperCase() 将字符串中的字符转为大写
fn:trim() 移除首位的空白符

6.1 导包

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

6.2 示例

<c:out value="${fn:contains('ASDSFG','S')}"/>

你可能感兴趣的:(JSP)