javaweb:JSP、JSTL标签和EL表达式

打印 上一主题 下一主题

主题 930|帖子 930|积分 2790

据我理解,标签是为了使得jsp内容更加简洁,编写起来更加方便,不用再去在jsp里写大段的java代码,标签就显得与html格外契合;当然,并不是一定要使用标签,只用jsp的语法来写java代码也可以实现功能,只是稍显繁琐。
言归正传,我们在使用标签之前首先需要导入两个依赖
  1.         <dependency>
  2.             <groupId>javax.servlet.jsp.jstl</groupId>
  3.             <artifactId>jstl-api</artifactId>
  4.             <version>1.2</version>
  5.         </dependency>
  6.         <dependency>
  7.             <groupId>taglibs</groupId>
  8.             <artifactId>standard</artifactId>
  9.             <version>1.1.2</version>
  10.         </dependency>
复制代码
导入以来之后,我们的标签就可以使用了。
 
1.JSP标签
常用的JSP标签有三个,分别为



第一个标签是用来进行网页之间的拼接,page里面写入的是需要拼接页面的路径,前面在网页拼接中已经使用过,在此就不再展示效果;
第二个标签是请求转发,page里面写入的是请求转发到的页面的路径;
第三个标签是通常与上面两个标签混合使用,它的作用是携带一些参数,获取这些参数的方法是request.getParameter(String key),接下来我们结合第二个请求转发的标签做一下测试
首先定义两个页面,一个是pa1.jsp,一个是pa2.jsp
pa1.jsp
  1. <%@page import="java.net.URLEncoder"%>
  2. <%@ page language="java" contentType="text/html; charset=UTF-8"
  3.     pageEncoding="UTF-8"%>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title>ja1</title>
  9. </head>
  10. <body>
  11. <jsp:forward page="ja2.jsp">
  12. <jsp:param value="jms"  name="name"/>
  13. <jsp:param value="100" name="age"/>
  14. </jsp:forward>
  15. </body>
  16. </html>
复制代码
pa2.jsp
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2.     pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="UTF-8">
  7. <title>ja2</title>
  8. </head>
  9. <body>
  10. <h1>姓名:<%= request.getParameter("name") %></h1>
  11. <h1>年龄:<%= request.getParameter("age") %></h1>
  12. </body>
  13. </html>
复制代码
我们访问pa1.jsp,看一下能不能请求到pa2.jsp并读取到数据

 
 
没有问题。
 
2.JSTL标签
常用的JSTL标签是核心标签了
第一步:引用核心标签库的语法:,将这一句话加在jsp文件的开头;
我们来说一些常用的标签
(1).和 
就还跟程序中的if是一样的,它具有以下三个属性:
test:if的判断条件语句,是必须的;
var:储存条件结果的变量,就是定义一个变量值为true或false,非必须;
scope:var属性的作用域,默认是当前页面(page),非必须;
就是输出语句,也具有三个属性:
value:输出的内容,必须;
default:输出的默认值,默认就是主题内容,非必须;
escapeXml:是否忽略XML特殊字符。默认是true,非必须;
下面我们来看一下这两个标签的实际用法:
建立一个页面coreif.jsp
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2.     pageEncoding="UTF-8"%>
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title>coreif</title>
  9. </head>
  10. <body>
  11. <form action="coreif.jsp"  method="get">
  12. 用户名:<input type="text" name="username" value="${param.username }"><br>
  13. <input type="submit" value="登录"><br>
  14. </form>
  15. <c:if test="${param.username == 'guanliyuan001'}" var="logined">
  16.     <c:out value="登陆成功"></c:out>
  17. </c:if>
  18. <c:out value="${logined }"></c:out>
  19. </body>
  20. </html>
复制代码

 
 然后我们输入用户名为“guanliyuan001”再登陆

 
 (2).和
适用于保存数据的标签,它具有五个属性:
var:储存信息的变量;
value:储存的值;
scope:作用域,默认是当前页面(page);
还有两个属性 不常用,在此就不做介绍了。
与java switch语句和if else if else语句功能相似,他还有两个子标签和
具体语法如下:

  
  ...
  
  
  ...
  
  
  ...
  
  ...
  
  ...
  

下面我们来看一下这两个标签的实际用法:
建立一个页面setchose.jsp
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2.     pageEncoding="UTF-8"%>
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title>setchoose</title>
  9. </head>
  10. <body>
  11. <form action="setchoose.jsp"  method="get">
  12. 成绩<input type="text" name="s" value="${param.s }"><br>
  13. <input type="submit"><br>
  14. </form>
  15. <c:set var="score" value="${param.s }"/>
  16. <c:choose>
  17.     <c:when test="${score >= 90 }">
  18.         <h1>成绩优秀</h1>
  19.     </c:when>
  20.     <c:when test="${score >= 80 }">
  21.         <h1>成绩良好</h1>
  22.     </c:when>
  23.     <c:when test="${score >= 70 }">
  24.         <h1>成绩一般</h1>
  25.     </c:when>
  26.     <c:when test="${score >= 60 }">
  27.         <h1>成绩及格</h1>
  28.     </c:when>
  29.     <c:when test="${score >= 0 }">
  30.         <h1>成绩不及格</h1>
  31.     </c:when>
  32.     <c:otherwise>
  33.         <h1></h1>
  34.     </c:otherwise>
  35. </c:choose>
  36. </body>
  37. </html>
复制代码

 
 

 
 
 
 
 
 (3).
这个标签封装了java的for、while、dowhile循环,它具有以下属性:
 
属性描述是否必要默认值items要被循环的信息否无begin开始的元素(0=第一个元素,1=第二个元素)否0end最后一个元素(0=第一个元素,1=第二个元素)否Last elementstep每一次迭代的步长否1var代表当前条目的变量名称否无varStatus代表循环状态的变量名称否无
 
接下来我们演示以下它的实际用法:
建立一个页面foreach.jsp
  1. <%@page import="java.util.ArrayList"%>
  2. <%@ page language="java" contentType="text/html; charset=UTF-8"
  3.     pageEncoding="UTF-8"%>
  4. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  5. <!DOCTYPE html>
  6. <html>
  7. <head>
  8. <meta charset="UTF-8">
  9. <title>foreach</title>
  10. </head>
  11. <body>
  12. <%
  13.     ArrayList<String> arry = new ArrayList<>();
  14.     arry.add("this is 1");
  15.     arry.add("this is 2");
  16.     arry.add("this is 3");
  17.     arry.add("this is 4");
  18.     arry.add("this is 5");
  19.     request.setAttribute("number", arry);
  20. %>
  21. <c:forEach var = "num" items="${number }">
  22.     <c:out value="${num }"/><br>
  23. </c:forEach>
  24. <c:forEach var = "i" begin="1" end="5">
  25.     i =<c:out value="${i }"/><br>
  26. </c:forEach>
  27. </body>
  28. </html>
复制代码

 
 3.EL表达式
EL 表达式语法如下:
${EL表达式}
 
(本文仅作个人学习记录用,如有纰漏,敬请指正)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81429

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表