概述
一.EL表达式
1.1EL表达式简介
1、目的:简化jsp界面,减少HTML代码与java代码的耦合。(减少jsp中java代码)
2、基本语法:${EL表达式}
3、“.”和[]运算符
${user["username"]} ${user.username} |
4、算术运算符
在EL表达式中也能够使用:+,-,*,/(div),%(mod)运算符的。例如:
${list[0]-list[1]} |
5、关系运算符EL表达式的关系运算符和JAVA中的关系运算符一样。(==,!=,>(gt),<(lt),>=(ge),<=(le))
${list[0]>=list[1]} ${list[0] ge list[1]} |
6、逻辑运算符&&(and) ||(or) !(not)
${list[0]>90 && list[1]<100} ${list[0]>90 and list[1]<100} ${!(list[0]<100)} ${not(list[0]<100)} |
7、三目运算符
${lsit[0]>list[1]? list[0]:list[1]}
8、empty运算符(重点)
作用1:判断对象是否存在,不存在返回true,否则返回false
作用2:判断集合数组中是否存在元素,不存在返回true,存在返回false。
作用3:判断字符串是否为空或null,为空返回true,否则返回false
1.2EL表达式的作用域
page--》request--》session--》application
例如:${username}这个表达式,会首先从page的属性中去找username,如果找到那么输出;如果没有找到,那么继续到request对象中去找,一直到找到为止。如果到application中都没有找到,那么输出空。
示例:
session.setAttribute("uname", "zhangsan"); request.setAttribute("uname", "李四"); |
${uname} |
上面这段程序输出结果:“李四”,而不会输出”zhangsan”。
1.3其他对象
1、param对象:从URL参数,或者表单数据中获取内容。
例如:
http://127.0.0.1:8080/Servlet4/demo?id=123 |
${param.id} |
2、获取cookie
//写一个cookie Cookie cookie = new Cookie("cname", "wangwu"); response.addCookie(cookie); |
${cookie.cname.value} |
3、pageContext(用来获取项目的跟路径)
<%= pageContext.getServletContext().getContextPath() %> <br> ${pageContext.request.contextPath} |
二JSTL标签
要使用JSTL标签,那么必须向项目中条件JSTL的依赖JAR包:jstl-1.2.jar
2.1核心库
1.引入核心库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
2.核心库中的内容
3.流程控制标签-----if
<h4>流程控制标签if</h4> <p>如果年龄小于等于18岁,那么显示未成年人禁止访问~</p> <!-- 注意:if标签是没有else选项的。如果还要对结果进行再次判断,那么可以将结果放在 属性var中(相当于在page中给了一个level的属性,值就是if判断的结果)。 --> <c:if test="${age<18}" var="level">未成年人禁止访问</c:if> <c:if test="${!level}">已满18岁,可以访问了哦……</c:if> |
4.流程控制标签---choose when otherwise
choose when otherwise是一套标签,相当于:if..else if.......else....
<h4>流程控制标签:choose</h4> <p>下拉列表的初始化功能。根据sevlet传过来的学历信息来初始化下拉列表。</p> 学历: <select> <c:choose> <c:when test="${xl==1}"> <option value="1" selected="selected">初中</option> <option value="2">高中</option> <option value="3">大学</option> </c:when> <c:when test="${xl==2}"> <option value="1">初中</option> <option value="2" selected="selected">高中</option> <option value="3">大学</option> </c:when> <c:otherwise> <option value="1">初中</option> <option value="2" >高中</option> <option value="3" selected="selected">大学</option> </c:otherwise> </c:choose> </select> |
5.循环标签forEach
一般用于下拉表数据绑定
//servlet构建需要显示的数据列表 protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //手动构建一个userlist List<User> list = new ArrayList<>(); for(int i=0;i<12;i++){ User u = new User(); u.setUsername("用户"+i); u.setUserpwd("123"+i); list.add(u); } request.setAttribute("list", list); request.getRequestDispatcher("/userlist.jsp").forward(request, response); } |
//在jsp中使用foreach标签完成循环显示 <tbody> <c:forEach items="${list}" var="user"> <tr> <td>${user.username}</td> <td>${user.userpwd}</td> </tr> </c:forEach> </tbody> |
2.2国际化标签
1.引用国际化标签库
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
2.日期格式化formatDate
<fmt:formatDate vlue="${date}" pattern="yyyy-mm-dd HH:mm:ss"/>
2.3functions
1.引用函数标签库
<%@ taglib prefix = "fn" uri="http://java.sun.com/jsp/jstl/functions"%>
3、使用示例
<td title="${user.username}"> ${(fn:length(user.username)>3)?(fn:substring(user.username,0,3)):user.username} </td> |
最后
以上就是火星上汽车为你收集整理的JSTL标签&EL表达式的全部内容,希望文章能够帮你解决JSTL标签&EL表达式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复