2020-10-21 JavaWeb

it2024-08-10  38

JSP中el于jstl的使用

el(表达式语言)

作用:替代JSP页面中的复杂代码,能够自动转换类型,el得到某个数据时可以自动转换类型,对于类型的限制更加宽松,使用简单,相比较再JSP中嵌入Java代码,el应用更简单。

el隐式对象

作用域访问对象:pageScope,requestScope,sessionScope,applicationScope 参数访问对象:param,paramValues JSP隐式对象:pageContext

举例:

//requestScope 对应request属性 <%=request.getAttribute("user") %> 等于 ${requestScope.user} //param <%=request.getParamter("user")%> 等于 ${param.user}

说明:

pageScope 返回页面范围的变量名,这些名称已映射至相应的值 requestScope 返回请求范围的变量名,这些名称已映射至相应的值 sessionScope返回会话范围的变量名,这些名称已映射至相应的值 applicationScope返回应用范围内的变量,并将变量名映射至相应的值 param 返回客户端的请求参数的字符串值,param.userName 相当 于request.getParameter(“userName”) paramValues 返回映射至客户端的请求参数的一组值${paramValues.love [下标]}相当 于String str[] = request.getParameterValues("love");pageContext提供对用户请求和页面信息的访问

el语法:

${EL exprission} ${bean.name} ${bean['name']}

el支持运算处理,支持如下运算符: 算术(+,-,*,/,%) 关系(==,!=,<,>,<=,>=) 逻辑(&&,||,!) 验证(empty)

使用示例

获取集合对象中的数据 在Session中保存了一个(list)集合users ${sessionScope.users[1]} 获取Map 中元素 Map names = new HashMap(); names.put("one","LiYang"); names.put("two","WangHua"); request.setAttribute("names",names); jsp中使用 姓名:${requestScope.names.one}<br/> 姓名:${requestScope.names["two"]}<br/>

jstl(JSP标准标签库)

作用: 虽然EL表达式可以访问JavaBean的属性,也可以进行一些运算处理,但是并不能实现在JSP中进行逻辑判断等,因而要使用JSTL标签。

优点:提供标准的标签,提升性能,便于分工,提升工作效率 。

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

核心标签: set,remove,out,if,choose,forEach

使用环境

项目引入jstl和standard两个jar包 jsp页面设置taglib指令

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

标签使用

set:设置指定范围内的变量值 out:计算表达式并将结果输出显示 remove:删除指定范围内的变量 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <body> <c:set var= "userAge" value="${100+1}" scope="session" /> <c:out value="${userAge}"/> <c:remove var= "userAge" scope="session"/> </body> ====================================================================================== <c:if></c:if> test:判断条件表达式,返回true或false var:定义变量名,用来保存返回的true或false scope:用来指定变量的作用域 控制登录,已经登录显示已登录,未登录显示表单 <body> <c:set var="loggedIn" value="${not empty sessionScope.userId}"/> <c:if test="${loggedIn}"> 已登录! </c:if> <c:if test="${not loggedIn}"> <form id="login" method="post" action="loginServlet"> 用户名:<input id="userName" name="userName" type="text"><br> 密 码:<input id="passWord" name="passWord" type="password"><br> <input type="submit" value="登陆"> </form> </c:if> </body> ===================================================================================== 对集合、数组的遍历 <c:forEach></c:forEach> Items指定要遍历的集合对象 Var:指定集合对象迭代时,当前的元素的变量名 begin:集合迭代时开始下标 end: 集合迭代时结束下标 step:迭代的增量 varStatus:指定var成员的信息 说明(了解): varStatus属性常用参数如下: current:当前这次迭代的(集合中的)项 index:当前这次迭代从 0 开始的迭代计数 count:当前这次迭代从 1 开始的迭代计数 first:用来表明当前这轮迭代是否为第一次迭代的标志,返回true/false last:用来表明当前这轮迭代是否为最后一次迭代的标志,返回true/false <table border="1" width="80%"> <!-- 表头信息 --> <tr> <th>商品名称</th> <th>产地</th> <th>价格</th> </tr> <!-- 循环输出商品信息 --> <c:forEach var="p" items="${requestScope.products}" varStatus="status"> <!-- 如果是偶数行,为该行换背景颜色 --> <tr<c:if test="${status.index % 2 == 1 }"> style="background-color:rgb(219,241,212);"</c:if>> <!-- 商品名称 --> <td> ${p.name } </td> <!-- 产地 --> <td> ${p.area } </td> <!-- 价格 --> <td> ${p.price } </td> </tr> </c:forEach> </table>
最新回复(0)