据我理解,标签是为了使得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表达式}
(本文仅作个人学习记录用,如有纰漏,敬请指正)
来源:https://www.cnblogs.com/jmsstudy/p/16530986.html
本站部分图文来源于网络,如有侵权请联系删除。