据我理解,标签是为了使得jsp内容更加简洁,编写起来更加方便,不用再去在jsp里写大段的java代码,标签就显得与html格外契合;当然,并不是一定要使用标签,只用jsp的语法来写java代码也可以实现功能,只是稍显繁琐。
言归正传,我们在使用标签之前首先需要导入两个依赖
<dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl-api</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency>
导入以来之后,我们的标签就可以使用了。
1.JSP标签
常用的JSP标签有三个,分别为
<jsp:include page=""></jsp:include>
<jsp:forward page=""></jsp:forward>
<jsp:param value="" name=""/>
第一个标签是用来进行网页之间的拼接,page里面写入的是需要拼接页面的路径,前面在网页拼接中已经使用过,在此就不再展示效果;
第二个标签是请求转发,page里面写入的是请求转发到的页面的路径;
第三个标签是通常与上面两个标签混合使用,它的作用是携带一些参数,获取这些参数的方法是request.getParameter(String key),接下来我们结合第二个请求转发的标签做一下测试
首先定义两个页面,一个是pa1.jsp,一个是pa2.jsp
pa1.jsp
<%@page import="java.net.URLEncoder"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>ja1</title> </head> <body> <jsp:forward page="ja2.jsp"> <jsp:param value="jms" name="name"/> <jsp:param value="100" name="age"/> </jsp:forward> </body> </html>
pa2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>ja2</title> </head> <body> <h1>姓名:<%= request.getParameter("name") %></h1> <h1>年龄:<%= request.getParameter("age") %></h1> </body> </html>
我们访问pa1.jsp,看一下能不能请求到pa2.jsp并读取到数据
没有问题。
2.JSTL标签
常用的JSTL标签是核心标签了
第一步:引用核心标签库的语法:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>,将这一句话加在jsp文件的开头;
我们来说一些常用的标签
(1).<c:if></c:if>和<c:out/>
<c:if></c:if>就还跟程序中的if是一样的,它具有以下三个属性:
test:if的判断条件语句,是必须的;
var:储存条件结果的变量,就是定义一个变量值为true或false,非必须;
scope:var属性的作用域,默认是当前页面(page),非必须;
<c:out/>就是输出语句,也具有三个属性:
value:输出的内容,必须;
default:输出的默认值,默认就是主题内容,非必须;
escapeXml:是否忽略XML特殊字符。默认是true,非必须;
下面我们来看一下这两个标签的实际用法:
建立一个页面coreif.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>coreif</title> </head> <body> <form action="coreif.jsp" method="get"> 用户名:<input type="text" name="username" value="${param.username }"><br> <input type="submit" value="登录"><br> </form> <c:if test="${param.username == 'guanliyuan001'}" var="logined"> <c:out value="登陆成功"></c:out> </c:if> <c:out value="${logined }"></c:out> </body> </html>
然后我们输入用户名为“guanliyuan001”再登陆
(2).<c:set/>和<c:choose></c:choose>
<c:set/>适用于保存数据的标签,它具有五个属性:
var:储存信息的变量;
value:储存的值;
scope:作用域,默认是当前页面(page);
还有两个属性 不常用,在此就不做介绍了。
<c:choose></c:choose>与java switch语句和if else if else语句功能相似,他还有两个子标签<c:when></c:when>和<c:otherwise></c:otherwise>
具体语法如下:
<c:choose>
<c:when test ="">
...
</c:when/>
<c:when test ="">
...
</c:when/>
<c:when test ="">
...
</c:when/>
...
<c:otherwise>
...
</c:otherwise>
</c:choose/>
下面我们来看一下这两个标签的实际用法:
建立一个页面setchose.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>setchoose</title> </head> <body> <form action="setchoose.jsp" method="get"> 成绩<input type="text" name="s" value="${param.s }"><br> <input type="submit"><br> </form> <c:set var="score" value="${param.s }"/> <c:choose> <c:when test="${score >= 90 }"> <h1>成绩优秀</h1> </c:when> <c:when test="${score >= 80 }"> <h1>成绩良好</h1> </c:when> <c:when test="${score >= 70 }"> <h1>成绩一般</h1> </c:when> <c:when test="${score >= 60 }"> <h1>成绩及格</h1> </c:when> <c:when test="${score >= 0 }"> <h1>成绩不及格</h1> </c:when> <c:otherwise> <h1></h1> </c:otherwise> </c:choose> </body> </html>
(3).<c:forEach></c:forEach>
这个标签封装了java的for、while、dowhile循环,它具有以下属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
items | 要被循环的信息 | 否 | 无 |
begin | 开始的元素(0=第一个元素,1=第二个元素) | 否 | 0 |
end | 最后一个元素(0=第一个元素,1=第二个元素) | 否 | Last element |
step | 每一次迭代的步长 | 否 | 1 |
var | 代表当前条目的变量名称 | 否 | 无 |
varStatus | 代表循环状态的变量名称 | 否 | 无 |
接下来我们演示以下它的实际用法:
建立一个页面foreach.jsp
<%@page import="java.util.ArrayList"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>foreach</title> </head> <body> <% ArrayList<String> arry = new ArrayList<>(); arry.add("this is 1"); arry.add("this is 2"); arry.add("this is 3"); arry.add("this is 4"); arry.add("this is 5"); request.setAttribute("number", arry); %> <c:forEach var = "num" items="${number }"> <c:out value="${num }"/><br> </c:forEach> <c:forEach var = "i" begin="1" end="5"> i =<c:out value="${i }"/><br> </c:forEach> </body> </html>
3.EL表达式
EL 表达式语法如下:
${EL表达式}
(本文仅作个人学习记录用,如有纰漏,敬请指正)