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的更多相关文章

  1. Servlet/JSP-02 Servlet相关类

    ServletConfig / ServletContext / ServletRequest / ServletResponse 一. ServletConfig:封装了Servlet得配置信息,并 ...

  2. jsel、tl是什么

    el 表达式是什么? * sun 制订的一种用于计算的一种规则,可以给元素赋值,也可以直接输出 el表达式:${el表达式}实验1:简单的使用el表达式获取值<%request.setAttri ...

  3. 十五、web中处理乱码问题总结

    一.jsp变成之道---中文乱码 jsp在转换为Servlet的过程经过三次编码转化: 转自  http://www.cnblogs.com/chenssy/p/4235191.html 二.java ...

随机推荐

  1. Visual Studio 2013附加进程调试IE加载的ActiveX Control无效解决方法

    默认Attach to选择了Automatically determine the type of code to debug,显示Native Code.但附加进程到iexplore.exe断点无法 ...

  2. centos7和Ubuntu上的关机需要手动关闭电源的问题

    author:heandsen chen date: 2018-11-11  20:36:38. # halt  执行后会出现这个问题 解决办法: # init 0 # shutdown -h now ...

  3. STM32 ADC转换时间

    STM32F103XX的ADC的采样时钟最快14MHz,最快采样率为1MHz. ADC时钟: 这个ADC时钟是从哪来的呢.我们看下面这个STM32的时钟结构图: 我们大多使用STM32的最快PCLK2 ...

  4. python nose测试框架全面介绍五--attr介绍

    之前写了一系列nose框架的,这篇介绍下attr tag 在nose框架中attr用来标识用例,使得在运行时可以通过标识来执行用例,之前在nose测试框架全面介绍四中有说明,但没有说明清楚,这里再总结 ...

  5. Mongoose学习参考资料

    我们学习node操作mongodb数据库时,可能经常要用到MongoDB 数据库的模型工具Mongoose,下面是我整理的一些学习资料: 番外篇之——使用 Mongoose:https://githu ...

  6. iOS - Block的简单使用

    Block 的使用有两种: .独立Block .内联Block   <一>独立Block 使用方式   一.定义一个Block Object,并调用.   1.定义   // 定义一个Bl ...

  7. nginx动静分离小示例

    server { listen ; server_name www.xxx.cn; #静态页面 #匹配首页,url:www.xxx.cn index index.html; root /usr/loc ...

  8. 2018No-java面试知识

    1.框架 1. springboot比spring的优点? 2. Springmvc的基本流程? 3. 微服务之间调用不会慢吗? 4. 大图片和大数据库怎么存储? 5. spring事物?四大特征, ...

  9. Java不定参数

    先看两个简单的例子,来感受一下Java的不定长度参数 第一个例子: public class VariArgs { public static void main(String[] args) { t ...

  10. Mac操作技巧

    Command+Option+P+R,重置PRAM的. 官方关于重置PRAM的说明.(有助于电脑提速) 安装新版系统的时候失败,原因是下载的镜像有问题版本不对,具体是中国区暂未更新镜像,下载下来的有问 ...