ELJSTL表达式

news/2024/5/18 14:04:46 标签: jstl, jsp

EL&JSTL表达式

EL表达式

是为了简化咱们的jsp代码,具体一点就是为了简化在jsp里面写的那些java代码。

  • 语法结构

    ${expression }

  • 从指定的作用域取参数

    ${requestScope.表达式}

如果从作用域中取值,会先从小的作用域开始取,如果没有,就往下一个作用域取。 一直把四个作用域取完都没有, 就没有显示。

如何使用

  1. 取出4个作用域中存放的值。
jsp"><%
pageContext.setAttribute("name", "page");
request.setAttribute("name", "request");
session.setAttribute("name", "session");
application.setAttribute("name", "application");
%>

按普通手段取值<br>

<%= pageContext.getAttribute("name")%>
<%= request.getAttribute("name")%>
<%= session.getAttribute("name")%>
<%= application.getAttribute("name")%>

<br>使用EL表达式取出作用域中的值<br>

${ pageScope.name }
${ requestScope.name }
${ sessionScope.name }
${ applicationScope.name }
  1. 如果域中所存的是数组
jsp"><%
String [] a = {"aa","bb","cc","dd"};
pageContext.setAttribute("array", a);
%>
      		
使用EL表达式取出作用域中数组的值<br>

${array[0] } , ${array[1] },${array[2] },${array[3] }
  1. 如果域中锁存的是集合
jsp"><%
List<String> list =  new ArrayList<>();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("dd");

pageContext.setAttribute("li", list);
%>
使用EL表达式取出作用域中集合的值<br>

${list[0] } , ${li[1] },${li[2] },${li[3] }

  1. 取出Map集合的值
jsp"><%
Map map = new HashMap();
map.put("name", "zhangsna");
map.put("age",18);
map.put("address","北京..");

map.put("address.aa","深圳..");

pageContext.setAttribute("map", map);
%>
使用EL表达式取出作用域中Map的值<br>

<!-- map的key中有特殊字符时,我们必须用[]这种方式来获取值 -->
${map.name } , ${map.age } , ${map.address }  , ${map["address.aa"] }

EL表达式 的11个内置对象。

${ 对象名.成员 }

  • pageContext

作用域相关对象

  • pageScope
  • requestScope
  • sessionScope
  • applicationScope

头信息相关对象

  • header
  • headerValues

参数信息相关对象

  • param

  • paramValues

  • cookie

全局初始化参数

  • initParam

JSTL

全称 : JSP Standard Tag Library jsp标准标签库

简化jsp的代码编写。 替换 <%%> 写法。 一般与EL表达式配合

怎么使用

  1. 导入jar文件到工程的WebContent/Web-Inf/lib jstl.jar standard.jar

  2. jsp页面上,使用taglib 指令,来引入标签库

比如引入JSTL核心标签库

jsp"><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  1. 注意: 如果想支持 EL表达式,那么引入的标签库必须选择1.1以上的版本,1.0的版本不支持EL表达式。

JSTL标签分类

核心标签(最核心、最重用)

jsp"><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  • 表达式控制标签

    • out
    属性名含义是否必须
    value输出值,如果是常量直接赋值, 如果是变量需要通过EL表达式取值
    default当value为null时, 输出default属性配置的值
    escapeXml是否转义XML特殊字符,取值true/false, 默认是true
    • set
    属性名含义是否必须
    value搭配var属性使用,设置变量的值;搭配property和target使用,设置javabean属性的值
    var定义的变量名称
    scope变量保存到的作用域,默认是pageContext
    target给javabean设置属性,指定那个javabean。需配合<jsp:useBean>标签和property、value属性使用
    property设置javabean的哪个属性的值
    • remove
    属性名含义是否必须
    var删除指定的变量,只能删除变量,不能删除javabean的属性
    • catch
    属性名含义是否必须
    var存储错误信息
    jsp"><%-- <c:catch>用于包裹其他容易出错的标签,比如 --%>
    <c:catch var="error">
      <!-- aa为没有实例化的javabean -->
    	<c:set target="aa" property="name" value="zhangsan" />
    </c:catch>
    <c:out value="${error}" />
    
  • 流程控制标签

    • if
    jsp"><c:if test="${income > 8000}" var="ret">  
      <p>My income is: <c:out value="${income}"/><p>  
    </c:if>
    <!-- var属性ret存储的是test运算的结果 -->
    ${ret}
    
    • choose&when&otherwise
    jsp"><c:choose>  
        <c:when test="${income <= 1000}">  
           Income is not good.  
        </c:when>  
        <c:when test="${income > 10000}">  
            Income is very good.  
        </c:when>  
        <c:otherwise>  
           Income is undetermined...  
        </c:otherwise>  
    </c:choose>  
    
    • forEach
    jsp"><%
     List<String> students = new ArrayList<>();
     students.add("张三");
     students.add("李四");
     students.add("王五");
     students.add("赵六");
     
     request.setAttribute("stus", students);
    %>
    
    <!-- forEach遍历全部元素 -->
    <c:forEach var="stu" items="${stus}">
    	<c:out value="${stu}" /> <br />
    </c:forEach>
    
    <!-- forEach遍历部分元素 -->
    <c:forEach var="stu" items="${stus}" begin="1" end="3">
    	<c:out value="${stu}" /> <br />
    </c:forEach>
    
    <!-- forEach遍历部分元素,指定步长 -->
    <c:forEach var="stu" items="${stus}" begin="1" step="2">
    	<c:out value="${stu}" /> <br />
    </c:forEach>
    
    <!-- 用法四:部分遍历并带状态 -->
    <c:forEach var="stu" items="${stus}" begin="1" end="3" varStatus="status">
    <c:out value="${stu}——四个属性:"></c:out><br>
    <c:out value="index属性:${status.index}"></c:out><br>
    <c:out value="count属性:${status.count}"></c:out><br>
    <c:out value="first属性:${status.first}"></c:out><br>
    <c:out value="last属性:${status.last}"></c:out><br>
    <c:out value="----------"></c:out><br>
    </c:forEach>
    
    <!-- varStatus变量的几个属性:index从0开始;count从1开始;first是否第一个(boolean);last是否最后一个(boolean)。  -->
    
    
    • forTokens
    jsp"><c:forTokens items="zhangsan,lisi,wangwu" delims="," var="item">
    	<c:out value="${item}" /> <br />
    </c:forTokens>
    
    <!-- 另外forTokens也支持begin、end、step、varStatus几个属性,用法和forEach一样 -->
    
  • URL操作标签

    • url
    jsp"> <c:url value="http://localhost:8080/Test/index.jsp" var="newUrl" scope="session">
     		<c:param name="username">zhangsan</c:param>
    		<c:param name="password">a123456</c:param>
     </c:url>
    	<a href="${newUrl}">New URL</a>
    
    • redirect
    jsp">	<c:redirect url="www.baidu.com">
    		<c:param name="username">zhangsan</c:param>
    		<c:param name="password">a123456</c:param>
    	</c:redirect>
    
    • param

    一般作为其他标签的子标签使用,为其附加参数

格式化标签

jsp"><%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
  • 格式化时间
jsp"><%
	Date date = new Date();
	pageContext.setAttribute("d", date);
%>
<fmt:formatDate value="${d }" pattern="yyyy-MM-dd HH:mm:ss"/>
  • 格式化数字
jsp"><%
	double d1 = 3.5;
	double d2 = 4.4; 
	pageContext.setAttribute("d1", d1);
	pageContext.setAttribute("d2", d2);
%>
<fmt:formatNumber value="${d1 }" pattern="0.00"/><br/>
<fmt:formatNumber value="${d2 }" pattern="#.##"/>

SQL标签

jsp"><%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>  
  • setDataSource
jsp"><sql:setDataSource var="db" driver="com.mysql.jdbc.Driver"  
     url="jdbc:mysql://localhost/test"  
     user="root"  password="1234"/>  
  • query
jsp"><sql:query dataSource="${db}" var="rs">  
SELECT * from Students;  
</sql:query>  
  • update
jsp"><sql:update dataSource="${db}" var="count">  
INSERT INTO Students VALUES (154,'Nasreen', 'jaha', 25);  
</sql:update>  
  • param & dateParam
jsp"><%
Date DoB = new Date("2000/10/16");
int studentId = 151;
%>
<sql:update dataSource="${db}" var="count">
   UPDATE Student SET dob = ? WHERE Id = ?
   <sql:dateParam value="<%=DoB%>" type="DATE" />
   <sql:param value="<%=studentId%>" />
</sql:update>

  • transaction
jsp"><sql:transaction dataSource="${db}">  
   <sql:update var="count">  
      UPDATE Student SET First_Name = 'Suraj' WHERE Id = 150  
   </sql:update>  
   <sql:update var="count">  
      UPDATE Student SET Last_Name= 'Saifi' WHERE Id = 153  
   </sql:update>  
   <sql:update var="count">  
     INSERT INTO Student   
     VALUES (154,'Supriya', 'Jaiswal', '1995/10/6');  
   </sql:update>  
</sql:transaction>  

XML标签

用的不多,这里不在列举

ps: 更多详细内容,参见:https://www.javatpoint.com/jstl

jsp和el&jstl常混合用所以都要掌握哦
jsp上一篇传送门


http://www.niftyadmin.cn/n/899455.html

相关文章

tomcat请求超时解决办法

Eclipse中启动Tomcat超时的解决办法 Eclipse中启动Tomcat缓慢的解决方法 找到server下面的catalina.propertiers 找到这一行代码tomcat.util.scan.StandardJarScanFilter.jarsToScan\ 修改这一行代码为tomcat.util.scan.StandardJarScanFilter.jarsToSkip*.jar 然后在启动就可…

HTTP基础POST_GET请求

HTTP协议基础 什么是协议 双方在交互、通讯的时候&#xff0c; 遵守的一种规范、规则。 http协议 针对网络上的客户端 与 服务器端在执行http请求的时候&#xff0c;遵守的一种规范。 其实就是规定了客户端在访问服务器端的时候&#xff0c;要带上哪些东西&#xff0c; 服务器…

Servlet生命周期学习和ServletConfig学习

Servlet生命周期学习 生命周期 从创建到销毁的一段时间 生命周期方法 从创建到销毁&#xff0c;所调用的那些方法。 init方法 在创建该servlet的实例时&#xff0c;就执行该方法。 一个servlet只会初始化一次&#xff0c; init方法只会执行一次 默认情况下是 &#xff1a; 初次…

请求转发和重定向

请求转发和重定向 重定向 /** 之前的写法* response.setStatus(302);* response.setHeader("Location", "login_success.html");*///重定向写法&#xff1a; 重新定位方向 参数即跳转的位置 response.sendRedirect("login_success.html");重定…

文件上传3.0版本

文件上传3.0版本 在Servlet3.0之前我们要想实现文件上传必须借助common-fileupload或者SmartUpload&#xff0c;上传过程比较麻烦。而到了Servlet3.0&#xff0c;我们不需要导入任何第三方jar包&#xff0c;并且提供了很方便进行文件上传的功能 主要步骤如下&#xff1a; 在需…

冷链NO.1技能,物流人第一天就应该学会!

储藏室的温湿度是许多行业中的关键因素&#xff0c;如医疗、食品、冷链物流等。确保储藏室内的温湿度在规定的范围内是保护物品品质和价值的关键。 储藏室温湿度远程监控是一项重要的任务&#xff0c;特别适用于需要实时掌握储藏室环境条件的场景。通过远程监控&#xff0c;可以…

通用文件上传

通用文件上传 通用文件上传就是在Servlet 3.0之前我们要实现文件上传&#xff0c;必须借助apache的commons-fileupload、commons-io包。 1. 添加lib包到WEB-INF/lib目录: commons-fileupload-1.4.jar commons-io-2.2.jar2.客户端网页 <% page language"java" co…

Servlet查询分页之物理分页

Servlet查询分页物理分页 逻辑分页 一次从数据库中把所有数据读取到内存中&#xff0c; 在内存中进行数据切分&#xff0c;然后传到前端页面。 物理分页 在查询数据库时就按照页数只取需要的数据&#xff0c;不在内存中处理 分页的主要思路 物理分页 思路 前端页面发起…