我是靠谱客的博主 苹果萝莉,最近开发中收集的这篇文章主要介绍JSP中的常用标签,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

JSP中的常用标签---JSTL

2016-09-10 23:40:01

 jstl是java中的一个定制标记库集,提高了JSP页面的代码复用性和可读性。

环境搭建

在http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/ 下载对应的JSTL的jar,导入web工程的lib,add to path。

EL表达式 --- Expression Language

EL表达式的格式   ${表达式}

EL的运算符  "." 和 "[]"

例子:User对象中有一个成员为 name。   可这样获取${User.name}或者${User["name"]}。

注意:一般情况下两个可以互换使用,以下两种情况除外:

1、属性中包含了特殊字符  

${User.family-name} 此种表达错!

${User["family-name"]} 此种表达正确!

2、要取未知属性时,即通过变量动态取值

如:${User[param]}

 

JSP内置对象与EL表达式的对应关系

EL的一些隐藏对象

EL表达式在页面取值时,如果值为null或者"",页面显示为空白

EL表达式的运算符

对于empty,在判断null 或者 空串时,很好用。 是空串或者null即返回true。

注意:以上所有的null,指的都是对象null,而非字符串"null"。

 

JSTL的四大分类及函数

1.核心标签

2.格式化标签

3.SQL标签

4.XML标签

JSTL函数

 一、核心标签

核心标签13个,分为4大类:

表达式控制:out、set、remove、catch

流程控制:if、choose、when、otherwise

循环控制:forEach、forTokens

URL控制:import、url、redirect

 

out用法:输出常量和变量,在变量不存在时,可通过default输出默认值。还有个

属性escapeXml ,默认为true,就是忽略xml的格式

<c:out value="&lt" escapeXml="false"></c:out>

在页面显示一个 < ,若设置为true,就是原样输出。

set用法:存值到scope中

两种写法都可以,值可以写在value中,也可以写在标签之间。

   <c:set value="time" var="tt" scope="session"></c:set>
<c:set var="ddd" scope="session">ttt</c:set>
<c:out value="${ddd}"></c:out>

remove用法:remove一个常量,bean中的属性值是不能通过remove删除的。

catch用法:对可能存在问题的标签代码存储其报错信息,也是通过EL表达式可以输出

if用法:var中的值用于存放test判断的结果,值为false/true

<form action="demo.jsp" method="post">
<input type="text" name="haha" value="${param.haha}"/>
<input type="submit" />
</form>
<c:if test="${param.haha > 90}" var="re" scope="page">
<c:out value="congratulations!"></c:out>
</c:if>
<c:out value="${re}"></c:out>
View Code

choose、when、otherwise用法:要么三个一起出现,要么choose和when一起出现

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path;
%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!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>JSTL Demo</title>
<script type="text/javascript">
function go(){
var rules = /^d*$/;
if(rules.test(document.getElementById("in").value)) {
document.form1.submit();
}else {
alert("非法字符");
}
}
</script>
</head>
<body>
<form name="form1" action="demo.jsp" method="post">
<input id="in" type="text" name="haha" value="${param.haha}"/>
<input type="button" onclick="go();" />
</form>
<c:choose>
<c:when test="${param.haha >= 60 && param.haha <= 100}">
<c:out value="老年"></c:out>
</c:when>
<c:when test="${param.haha >= 40 && param.haha < 60}">
<c:out value="壮年"></c:out>
</c:when>
<c:when test="${param.haha >= 30 && param.haha < 40}">
<c:out value="中年"></c:out>
</c:when>
<c:when test="${param.haha >= 20 && param.haha < 30}">
<c:out value="青年"></c:out>
</c:when>
<c:when test="${param.haha >= 3 && param.haha < 20}">
<c:out value="少年"></c:out>
</c:when>
<c:when test="${param.haha >= 0 && param.haha < 3}">
<c:out value="幼儿"></c:out>
</c:when>
<c:otherwise>
<c:out value="非人类"></c:out>
</c:otherwise>
</c:choose>
</body>
</html>
View Code

forEach用法:

属性介绍

item 表示将要遍历的集合

var 表示item集合中的每一个

step 表示步长,每隔step个元素取一次

begin 表示从哪里开始遍历

end 表示遍历到哪里结束 注意:begin和end所给数字均为元素下标

varStatus 表示一个元素的状态,有4个状态量index,count,first,last

  注意:index表示当前元素的下标,count表示当前元素是本次循环元素中的第几个,

      first和last为布尔值,表示当前元素是否为第一个和最后一个。

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path;
%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!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>JSTL Demo</title>
</head>
<body>
<%
List<String> list = new ArrayList();
for (int i = 0; i < 20; i++) {
list.add("哈哈" + i);
}
request.setAttribute("list", list);
%>
<!-- 全遍历
<c:forEach items="${list}" var="ll">
<c:out value="${ll}"></c:out>
<br />
</c:forEach>
-->
<!-- 部分遍历
假如输出 哈哈 3 到 10
<c:forEach items="${list}" var="ll" begin="3" end="10">
<c:out value="${ll}"></c:out>
<br />
</c:forEach>
-->
<!-- 部分遍历
携带步长
假如输出 哈哈 3 到 10 设置为2时 ,会输出 3 5 7 9
<c:forEach items="${list}" var="ll" begin="3" end="10" step="2">
<c:out value="${ll}"></c:out>
<br />
</c:forEach>
-->
<!--
varStatus -->
<c:forEach items="${list}" var="ll"
varStatus="i" begin="3" end="10">
<c:out value="${ll} 的属性 index: ${i.index}"></c:out><br />
<c:out value="${ll} 的属性 count: ${i.count}"></c:out><br />
<c:out value="${ll} 的属性 first: ${i.first}"></c:out><br />
<c:out value="${ll} 的属性 last: ${i.last}"></c:out><br /><br />
<br />
</c:forEach>
</body>
</html>
View Code

forTokens用法:浏览字符串,并且根据指定的字符截取字符串

<c:forTokens items="010@@8595855@@132123" delims="@@" var="re">
  <c:out value="${re}"></c:out><br/>
</c:forTokens>

它也有 step,begin,end,varStatus,用法和forEach一样。 

 import用法:不仅可以导入本工程的资源,还可以导入网络资源

url:被导入资源的URL

context:相同服务器下的其他web项目,必须以"/"开头

var:以String类型存入被包含文件的内容

Scope:var变量的JSP范围

charEncoding:被导入文件的编码格式

varReader:以Reader类型存储被包含文件的内容

注意:要想引入同一服务器下web其他项目的页面资源,需要在tomcat的context.xml中,给Context标签加上

crossContext="true",同时将tomcat的发布路径改为安装路径下的webapp

<!-- C标签的 import标签 -->
<c:catch var="errorImport1">
<c:import url="http://www.baidu.com" charEncoding="UTF-8"></c:import>
</c:catch>
<c:out value="${errorImport1}"></c:out>
<br />
<!-- 导入相对路径的文件
d:/test.properties -->
<c:catch var="errorImport2">
<c:import url="test.properties" charEncoding="UTF-8" var="re" scope="session"></c:import>
</c:catch>
<c:out value="${errorImport2}"></c:out>
<c:out value="${sessionScope.re}"></c:out>
<br/>
<!-- context -->
<c:catch var="errorImport3">
<c:import url="/index.jsp" charEncoding="UTF-8" context="/watermark"></c:import>
</c:catch>
<c:out value="${errorImport3}"></c:out>

redirect用法:重定向,可携带参数给目标页面

	<!-- redirect -->
<c:redirect url="http://www.baidu.com">
<c:param name="dd" value="123"></c:param>
</c:redirect>

url用法:可以动态生成url


<!-- url标签 -->
<c:if test="${8 > 2}">
<c:set scope="session" var="add" value="haha"></c:set>
</c:if>
<c:url var="theUrl" value="http://www.baidu.com/${add}"></c:url>
<a href="${theUrl}">theURL</a>

JSTL函数

fn:contains  <c:out value="${fn:contains('123','1')}"></c:out>  判断123中是否含有1  返回true or false

fn:indexOf  <c:out value="${fn:indexOf('adc','a')}"></c:out> 判断adc中是否含有 返回 0 or  -1

 

 

更多java干货交流,欢迎关注微信公众号:haizidie1321
手机公众号搜索:haizidie1321或者扫下面的二维码关注,关注即得java权威电子书。


 

转载于:https://www.cnblogs.com/momo0731/p/5860015.html

最后

以上就是苹果萝莉为你收集整理的JSP中的常用标签的全部内容,希望文章能够帮你解决JSP中的常用标签所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(90)

评论列表共有 0 条评论

立即
投稿
返回
顶部