JSTL

Posted xjs1874704478

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSTL相关的知识,希望对你有一定的参考价值。

JSTL介绍

  --JSP标准标签库(JavaServerPages Standard Tag Library)

与EL表达式关系

  --JSTL通常会与EL表达式合作实现JSP页面的编码

JSTL开发准备

  --在JSP页面添加taglib指令:<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c" %>

为什么要使用JSTL标签?

  #在jsp中不建议直接书写Java代码(规范性问题)。

  #EL表达式虽然可以解决“不用书写Java代码”问题,但是对于复杂的数据(如数组、集合等)取值会很麻烦。

  #使用JSTL标签配合EL表达式能够很好的解决取复杂类型数据的问题,简化代码书写。

JSTL标签库所需jar包

  jstl-1.2.jar

JSTL常用标签介绍

  #通用标签  set、out、remove

  #条件标签  if、choose

  #迭代标签  forEach

 

*set标签:将值保存到指定范围里

  --将value值存储到范围为scope的变量variable中

    <c:set var="username" value="张三" scope="request"/>

 *out标签:将结果输出显示

    <c:out  value="value"/>

*remove标签:删除指定域内数据

    <c:remove  var="username" scope="session"/>

代码示例:

1  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
2  <body>
3     <!-- set、out、remove -->
4     <c:set var="username" value="张三" scope="request"></c:set>
5     <c:out value="原值输出"></c:out><br>
6     <%=request.getAttribute("username") %><br>
7     <c:remove var="username" scope="request"/>
8     <%=request.getAttribute("username") %>
9   </body>

if使用

 1  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 2  <body>
 3       <c:set var="age" value="23" scope="request"></c:set>
 4     <!-- if标签
 5         test:判断的条件,如果条件为true,会执行标签体中的内容
 6      -->
 7      <c:if test="${age==23 }">
 8          您的年龄为23岁
 9      </c:if>
10     hello world
11   </body>

结果:

您的年龄为23岁 hello world

choose标签的使用:

 1 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 2    <body>
 3       <c:set var="age" value="23" scope="request"></c:set>
 4     <!-- choose标签 -->
 5     <c:choose>
 6         <c:when test="${age==23 }">
 7             您的年龄为23岁
 8         </c:when>
 9         <c:otherwise>
10             您的年龄不是23岁
11         </c:otherwise>
12     </c:choose>
13   </body>

结果:

您的年龄为23岁

forEach标签的使用:

 1 public class JSTLELServlet extends HttpServlet {
 2 
 3     public void doGet(HttpServletRequest request, HttpServletResponse response)
 4             throws ServletException, IOException {
 5         /*
 6          * 1.首先创建一个List集合,我们往这个集合中存放多条数据
 7          * 2.将存放多条数据的List集合保存到request域中
 8          * 3.我们在jsp中取出request域中存放的list集合
 9          */
10         Map<String,Object> datamap1=new HashMap<String, Object>();
11         datamap1.put("shopName", "联想笔记本");
12         datamap1.put("address", "北京");
13         datamap1.put("price", 5600);
14         Map<String,Object> datamap2=new HashMap<String, Object>();
15         datamap2.put("shopName", "惠普笔记本");
16         datamap2.put("address", "郑州");
17         datamap2.put("price", 4999.00);
18         
19         List<Map<String,Object>> lists=new ArrayList<Map<String,Object>>();
20         lists.add(datamap1);
21         lists.add(datamap2);
22         
23         request.setAttribute("lists", lists);
24         request.getRequestDispatcher("/2.jsp").forward(request, response);
25     }
26 
27 }

2.jsp:

 1 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 2 <body>
 3     <table border="1" cellspacing="0px">
 4             <tr>
 5                 <td>商品名称</td>
 6                 <td>商品产地</td>
 7                 <td>商品价格</td>
 8             </tr>
 9         <c:forEach items="${lists }" var="Map">
10             <tr>
11                 <td>${Map.shopName }</td>
12                 <td>${Map.address }</td>
13                 <td>${Map.price }</td>
14             </tr>
15         </c:forEach>
16     </table>
17 </body>

结果:

技术图片

 

以上是关于JSTL的主要内容,如果未能解决你的问题,请参考以下文章

JSTL的if-else表式

jsp&el&jstl-01

JSTL

什么是Taglib?

可以注释掉 JSTL 代码吗?

El表达式详解