20210713_jstl标签


jstl

通俗:就是在jsp页面中使用的特殊标签而已,在jsp中才有意义
Day22jstl标签 - 图1

1.使用步骤

1)在工程中引用JSTL的jar包
2)在JSP页面中添加taglib指令,注意是jsp/jstl/core

  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

3)使用JSTL标签
Day22jstl标签 - 图2

2.分支结构标签的使用

if标签

  1. //servlet中的代码
  2. User u=new User();
  3. u.setLname("trump");
  4. u.setName("川建国");
  5. u.setUid(2);
  6. req.setAttribute("map1", u);
  7. //req.getRequestDispatcher("SecondJsp.jsp").forward(req, resp);
  8. req.getRequestDispatcher("ThirdJsp.jsp").forward(req, resp);
  9. //jsp中代码
  10. <!-- 单分支 -->
  11. <ly:if test="${!empty map1 }">
  12. <form action="">
  13. <input type="hidden" value="${map1.uid}"/>
  14. 账号:<input value="${map1.lname}"/><br/>
  15. 姓名:<input value="${map1.name}"/>
  16. <input type="submit">
  17. </form>
  18. </ly:if>

    choose标签,多分支

  19. //servlet代码

  20. List<String> list=new ArrayList<>();
  21. list.add("lucy");
  22. // list.add("川建国");
  23. // list.add("拜登");
  24. // list.add("奥巴马");
  25. // list.add("不舍");
  26. req.setAttribute("list", list);
  27. req.getRequestDispatcher("FourJsp.jsp").forward(req, resp);
  28. //jsp代码
  29. <!-- 可以分多种情况 -->
  30. <c:choose>
  31. <c:when test="${!empty map1 }">
  32. <form action="">
  33. <input type="hidden" value="${map1.uid}"/>
  34. 账号:<input value="${map1.lname}"/><br/>
  35. 姓名:<input value="${map1.name}"/>
  36. <input type="submit">
  37. </form>
  38. </c:when>
  39. <c:otherwise >
  40. <h1>没有数据</h1>
  41. </c:otherwise>
  42. </c:choose>
  43. <hr/>
  44. <!-- 多分支 -->
  45. <c:choose>
  46. <c:when test="${list.size()>=4}">至少有4个数据</c:when>
  47. <c:when test="${list.size()>=2}">至少有两个数据</c:when>
  48. <c:otherwise>
  49. 数据比较少
  50. </c:otherwise>
  51. </c:choose>

    foreach标签循环

    遍历list集合和数组
    items:要遍历的对象
    var:每次循环是数据放在在var值的对象上了
    varStatus:存放的是和行数相关的对象,主要使用其index属性

  52. //servlet代码

  53. List<String> list=new ArrayList<>();
  54. list.add("lucy");
  55. list.add("张三");
  56. list.add("李雪琴");
  57. list.add("王建国");
  58. list.add("张绍刚");
  59. list.add("李诞");
  60. ``
  61. req.setAttribute("names", list);//放置的list
  62. ``
  63. ``
  64. //jsp页面代码
  65. <ul>
  66. <c:forEach items="${names }" var="n" varStatus="vs">
  67. <li>${n},${vs.index+1}</li>
  68. </c:forEach>
  69. </ul>

c:forEach循环取数值 , begin开始数值,end结束数值,step跨度,var:每次循环的那个变量,就数值

  1. <c:forEach begin="0" end="9" step="3" var="i">
  2. ${i }<br/>
  3. </c:forEach>
  4. //循环出0到9的数值

    其余的标签(了解)

  5. <!-- set:就是给对象的属性进行赋值 target:对象, property对象的属性名,value要赋的值

  6. out:输出,value要输出的部分
  7. remove:删除的对象 var:key名
  8. -->
  9. 输出dname:<c:out value="${dept.dname }"></c:out><br/>
  10. <c:set target="${dept}" property="dname" value="开发部"></c:set>
  11. 赋完值的结果:${dept.dname} ,${dept }
  12. 删除<c:remove var="dept" />
  13. 看到dept:${dept}

    关于url的写法的总结

    在jsp和html上进行编写时使用base 标签,base中href的值写法是:/项目名称/ ,使用的base页面上访问本项目资源时都是加了 /项目名称/
    在servlet中写地址时,以 / 开头 ,此时的/代表就是:http://地址:端口/项目名称/