jsp02
el表达式,jstl标签
1.el表达式是什么?
sun制定的一种规范,主要是给标签的属性赋值,或者直接输出。
<%=user.name%>
java5版本以上支持jsp的el表达式和jstl标签
否则需要引入两个jar包
jstl.jar
standard.jar
2.el基本语法
${el表达式}
1)用于访问bean属性
设置了get,set方法的类,get,set方法就是bean属性
语法1:${user.name} 直接输出用户的名称
<body>
<%
User u=new User();
u.setName("煲仔");
u.setAge(23);
u.setHobbies(new String[]{"吃饭","睡觉"});
User u2=new User();
u2.setName("xiaoli");
u.setLover(u2);
//将对象放入作用域
request.setAttribute("u",u);//将新建的对象放入request作用域中,通过‘u’关键字找到
%>
<!-- Java代码写法 -->
<%=u.getName() %>
<!-- 语法1 -->
${u.name}
<!-- 语法2 -->
${ u["name"]} <br>
${u["hobbies"][1] }
${u.hobbies[1] }
<!-- 语法2通常用来做绑定名 -->
<%
request.setAttribute("propname","name");
%>
${u[propname] }<!-- 这里[]内不要写双引号 -->
<!-- 访问引用类型 -->
${u.lover.name }
<!-- 指定查找范围 -->
===========${sessionScope.u.name }
</body>
步骤:
1)定义实体类对象 User -》属性和get,set方法
2)在jsp中引入该实体类
3)(前提是作用于中有user对象)使用el表达式访问对象的属性
语法2:${user["name"]}
[]:可以写下标
可以写绑定名
查找规则:
容器会根据绑定名,依次从pageContext,request,session,application四个作用域中查找,找到了之后会调用getXXX方法,获取对应的属性值,如果找不到,返回"",
可以指定范围,如pageScope,requestScope,sessionScope,applicationScope
2)获取请求参数
如:请求地址
http://localhost:8080/servlet09/jsp02.jsp?name=bz&hobbies=sing&hobbies=sleep
${param.name} ->获取name参数的值
${paramValues.hobbies} ->获取hobbies参数的值 ${paramValues.hobbies[0]} ${paramValues.hobbies[1]}
<body>
${param.name }
${paramValues.hobbies[0] }
${paramValues.hobbies[1] }
</body>
3)常规的计算
*算术运算 + - * / %
*关系运算> < ==
*逻辑运算 & | ! (不支持&&,||)
*非空运算 empty
<body>
<!-- 算术运算 -->
${1+2}
${"12"+"12" } <!-- 关系运算 -->
${"ab"=="ab" }
${"ab" eq "ab" }
${3>2 } <%
pageContext.setAttribute("checkCode","abx");
%>
<!-- 比较checkCode的值是否等于"abx" -->
${"abx" eq checkCode } ${"ab" != "ab" } <% request.setAttribute("str","");
List list =new ArrayList();
request.setAttribute("list",list);
request.setAttribute("obj",null);
%>
空字符串的运算结果:
${empty str }<br/>
集合内容为空,结果
${empty list }<br/>
对象内容为空,结果
${empty obj }<br/>
访问一个不存在的绑定名
${empty aa } </body>
3.jstl标签
jsp头文件<%@page language="java" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
使用步骤:
1)引入jar包(jstl.jar 和standard.jar)
2)在jsp界面中,通过taglib指令引入标签库
3)在jsp页面中使用jstl标签
1))判断标签
<c:if test="" var="" scope="" ></c:if>
test:true/false,返回true 执行标签体,返回false,不执行
var:指定一个绑定名,绑定值就是表示test的值
scope:表示指定变量的绑定范围
2))分支标签
<c:choose>
<c:when test=""></c:when> //条件,可以有多个
<c:otherwise></c:otherwise> //表示上面的情况都不成立,执行这条语句
</c:choose>
test:true/false,返回true,执行标签体,如果返回false,继续往下执行
when至少一个,otherwise最多一个
3))循环标签
-循环的对象是集合
<c:forEach items="" var="" varStatus="" ></c:forEach>
-循环的对象是数组
<c:forEach begin="" end="" var=""></c:forEch>
<body>
<c:if test="${1==1}">1等于1哦</c:if>
<c:if test="${1==2}">1等于2哦</c:if> <%
User u=new User();
u.setName("煲仔");
u.setAge(23);
u.setHobbies(new String[]{"吃饭","睡觉"});
User u2=new User();
u2.setName("xiaoli");
u.setLover(u2);
//将对象放入作用域
request.setAttribute("u",u);//将新建的对象放入request作用域中,通过‘u’关键字找到
%> <c:choose>
<c:when test="${u.age>18}">成年</c:when>
<c:when test="${u.age>18}">成人</c:when>
<c:otherwise>未成年</c:otherwise>
</c:choose> <% User u1=new User();
u1.setName("王1");
User u3=new User();
u3.setName("王2");
List<User> us=new ArrayList<User>();
us.add(u1);
us.add(u3);
//将集合绑定到作用域
request.setAttribute("us",us);
%> <table>
<tr>
<td>序号</td>
<td>用户名</td>
</tr>
<!--
items:需要遍历的集合
var:每一次遍历取出的单个对象,相当于us[i]
varStatus:指定一个绑定名,绑定值是一个Java对象,该对象中,封装了当前遍历的信息,如:遍历的次数(count),遍历的下标(index)
-->
<c:forEach items="${us}" var="u" varStatus="rs">
<tr>
<td>${rs.count}</td>
<td>${u.name}</td>
</tr>
</c:forEach>
</table>
</body>
案例:
1)用el表达式和jstl标签改写list和update
2)实现分页功能
思路:求总页数:总页数=总记录数%每页显示记录数==0?总页数:总页数+1
totalPage=allnum%perPage==0?allnum/perPage:allPage/perPage+1;
6条记录 w1 w2 w3 w4 w5 w6
每页显示2条记录 查询第一页的记录 w1 w2
select*from admin limit 'from','size';
from:从第几条开始查询
size:查询几条数据
page:当前页码
perPage:每页显示记录数 = size
from=(page-1)*perPage;
jsp02的更多相关文章
- Servlet/JSP-02 Servlet相关类
ServletConfig / ServletContext / ServletRequest / ServletResponse 一. ServletConfig:封装了Servlet得配置信息,并 ...
- jsel、tl是什么
el 表达式是什么? * sun 制订的一种用于计算的一种规则,可以给元素赋值,也可以直接输出 el表达式:${el表达式}实验1:简单的使用el表达式获取值<%request.setAttri ...
- 十五、web中处理乱码问题总结
一.jsp变成之道---中文乱码 jsp在转换为Servlet的过程经过三次编码转化: 转自 http://www.cnblogs.com/chenssy/p/4235191.html 二.java ...
随机推荐
- git上传的文件夹为空的时候
1,先删除空的文件夹 参考:https://www.cnblogs.com/wang715100018066/p/9694532.html 2,这个只能说是技巧不能说是方法,原理是在每个空文件夹新建一 ...
- 完全卸载Oracle数据库软件
软件环境: 1.Windows xp+ORACLE 8.1.7 2.ORACLE安装路径为:C:\ORACLE 实现方法: 1. 开始->设置->控制面板->管理工具->服务 ...
- linux alternatives命令详解
alternatives是Linux下的一个功能强大的命令.只能在root权限下执行.如系统中有几个命令功能十分类似,却又不能随意删除,那么可以用 alternatives 来指定一个全局的设置. a ...
- GitStack系统RCE漏洞学习
漏洞简介 漏洞简情 漏洞程序 GitStack 影响版本 <=2.3.10 漏洞类型 RCE 漏洞评价 高危 漏洞编号 CVE-2018-5955 漏洞程序介绍 GitStack是一款基于Pyt ...
- 自定义容器启动脚本报错:exec user process caused "no such file or directory"
创建容器起不来,一直是restarting状态,查看容器的报错日志如下: standard_init_linux.go:178: exec user process caused "no s ...
- 分布式搜索elasticsearch几个概念解析
原文链接:http://blog.csdn.net/july_2/article/details/24367177 介绍下es的几个概念:cluster 代表一个集群,集群中有多个节点,其中有 ...
- 【BZOJ5094】硬盘检测 概率
[BZOJ5094]硬盘检测 Description 很久很久以前,小Q买了一个大小为n单元的硬盘,并往里随机写入了n个32位无符号整数.因为时间过去太久,硬盘上的容量字眼早已模糊不清,小Q也早已忘记 ...
- 静态类(static)与java值传递、引用传递小测
java中都是值传递.直接上代码了: class TestStaticA { static { System.out.println("b"); } public TestStat ...
- javascript中top、clientTop、scrollTop、offsetTop的讲解(转载加总结)
scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最 ...
- SSH教程从零打造在线网盘系统前言&目录
本系列教程内容提要 本系列教程是一个学习教程,是关于Java工程师的SSH(Struts2+Spring+Hibernate)系列教程,本教程将会分为四个部分和大家一同打造一个在线网盘系统,由于教程是 ...