EL和jstl(概念和使用方法)
概念:
1 . JSP 标签 是用来替换java代码的技术,容器遇到标签后会将其转换成java代码,jsp标签类似于开始标记、属性、结束标记、标签体。
- EL表达式是一套简单的运算规则,用于给jsp标签的属性赋值,也可以脱离jsp标签直接使用。
- EL表示用法
1)访问bean属性
第一种方式:
语法 ${user.username}
执行过程: 从某些指定范围内查找绑定名为"user"的对象,如果找到了,则调用“getUsername”方法然后输出。
第二种方式:
语法 ${user['username']}
说明: 有两种特殊用法,允许[]里面出现绑定名,允许里面出现从0开始的下标,如访问某个元素。
2)做一些运算(算术、关系运算、逻辑运算)
注:运算结果可以给jsp标签的属性赋值,也可以直接输出。
eg:
C2.jsp
<%@ page contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="bean.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Insert title here</title>
</head>
<body style="font-size:30px;">
<%
User user = new User();
user.setUname("张飞");
user.setGender("x");
user.setAge(22);
request.setAttribute("user", user);
%>
性别:
<c:choose>
<c:when test="${user.gender == 'm'}">男</c:when>
<c:when test="${user.gender == 'f'}">女</c:when>
<c:otherwise>保密</c:otherwise>
</c:choose>
年龄:
<c:choose>
<c:when test="${user.age < 18 }">未成年</c:when>
<c:when test="${user.age > 65 }">老年</c:when>
<c:otherwise>成年</c:otherwise>
</c:choose>
</body>
</html>
package bean;
public class User {
private String uname;
private String gender;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
package web;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.User;
public class ListUserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException,
IOException {
List<User> users = new ArrayList<User>();
for(int i = 0; i < 8; i ++){
User user = new User();
user.setUname("用户" + i);
user.setGender("m");
user.setAge(22 + i);
users.add(user);
}
request.setAttribute("users", users);
request.getRequestDispatcher("c3.jsp").forward(request, response);
}
}
package web;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.User;
public class ListUserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException,
IOException {
List<User> users = new ArrayList<User>();
for(int i = 0; i < 8; i ++){
User user = new User();
user.setUname("用户" + i);
user.setGender("m");
user.setAge(22 + i);
users.add(user);
}
request.setAttribute("users", users);
request.getRequestDispatcher("c3.jsp").forward(request, response);
}
}
</body>
</html>
- jstl标签: jsp标签的一种。
使用:
Step1:导入jstl.jar
Step2: 用taglib指令导入要使用的jsp标签
<% taglib uri="jsp标签的命名空间" prefix="指定命名空间的别名,前缀"%>
核心标签:
if标签:类似于java中if语句
<c: if test="">
标签体
</c:if>
当test属性为true,执行标签体内容,test属性也可以用el表达式赋值。
choose标签:类似于java中switch…case语句
<c:choose>
<c:when
test="">
</c:when>
...
<c:otherwise>
</c:otherwise>
</c:choose>
forEach标签
<c:forEach items="要遍历的集合或者数组,可用el表达式赋值" var="绑订名" varStatus="绑订名">
</c:forEach>
注:
绑订范围固定是pageContext。该标签每次从集合或者数组中
取一个元素,然后绑订到pageContext上。
注:
绑订值是一个对象,由该标签创建。该对象提供了几个方法,
用于获得当前遍历的状态:
getCount(): 获得当前是第几次迭代(从1开始)。
getIndex(): 获得当前正在被迭代的元素的下标(从0开始)。
C3.jsp
<%@ page contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<html>
<head>
<title>Insert title here</title>
<style type="text/css">
.row1{
background-color:#fff8dc;
}
.row2{
background-color:#f0f0f0;
}
</style>
</head>
<body style="font-size:30px;">
<table border="1" width="60%"
cellpadding="0" cellspacing="0">
<tr>
<td>序号</td>
<td>下标</td>
<td>用户名</td>
<td>性别</td>
<td>年龄</td>
</tr>
<c:forEach items="${users}" var="u"
varStatus="s">
<tr class="row${s.index % 2 + 1}">
<td>${s.count}</td>
<td>${s.index}</td>
<td>${u.uname}</td>
<td>${u.gender}</td>
<td>${u.age}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
jsp标签如何执行?
容器依据标签的命名空间找到对应的描述文件(.tld文件),
接下来,依据标签名找到对应的标签类,然后将该标签类实例化
并调用相应的方法。(从描述文件到标签名,再到标签类,并将其实例化,并调用对应方法 也应该使用反射实现的)
EL和jstl(概念和使用方法)的更多相关文章
- 浅谈EL与JSTL
讲道理,自己在博大精深的Java世界里还只是一个很小很小的菜鸟.处于成长与学习之中,但学习一个漫长的过程.尤其对于那些知识点我觉得总结是尤为重要的.反正在我看来这段时间里虽然过了很多知识但却是一脸懵逼 ...
- JavaWeb部分视频\2-12JSP,EL和JSTL
JavaWeb知识结构图 第3节 EL介绍和运算符 && 第4节 EL获取域中存储的数据 ## EL表达式 1. 概念:Expression Language 表达式语言 2. 作用: ...
- java学习之EL和JSTL
0x00前言 EL和JSTL都是JSP的内容的拓展,都是开发的一些东西,稍微学习记录一下,避免以后忘记 0x01EL 0x1基本用法 概念:Expression language 表达式语言 作用:替 ...
- jsp学习---mvc模式介绍和el表达式,jstl标签库的使用入门
一.mvc模式介绍 下图是常用的mvc分层模式: 项目中的包命名规则,一般如下: com.amos.domain 封装JavaBean,一般我喜欢用model命名这个包com.amos.dao 封装d ...
- EL表达式 JSTL中的常用EL函数 动态数据的国际化
ELppt: EL 全名为Expression Language.EL主要作用: 获取数据: •EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数据.( ...
- JSP内置标签 JSP中JavaBean标签 JSP开发模式 EL和JSTL快速入门
2 JSP内置标签(美化+业务逻辑) 1)为了取代<%%>脚本形式,使用JSP标签/JSP动作,目的:与JSP页面的美化,即JSP面页都是由标签组成,不再有其它的内容 2)JSP内 ...
- 第75节:Java的中的JSP,EL和JSTL
第75节:Java中的JSP,EL和JSTL 哭吧看不完的!!! Cookie和`Session 请求转发和重定向的区别: 地址不一样 请求次数也不一样 数据无法传递 4.跳转范围有限制 效率 请求转 ...
- JSP、EL、JSTL
JSP(Java Server Pages) 什么是JSP Java Server Pages(Java服务器端的页面) 使用JSP:SP = HTML + Java代码 + JSP自身的东西.执行J ...
- Unit05: WEB项目的开发模式 、转发 和 Unit09: EL、JSTL
Unit05: WEB项目的开发模式 .转发 和 Unit09: EL.JSTL dao package dao; import java.io.Serializable; import jav ...
随机推荐
- TCP接收缓存大小的手动调整
给出了几个可调节的参数,它们可以帮助您提高 Linux TCP/IP 栈的性能. 表 1. TCP/IP 栈性能使用的可调节内核参数 可调节的参数 默认值 选项说明 /proc/sys/net/cor ...
- CMDB资产管理
.传统运维和自动化运维的区别: 传统运维: 1.项目上线: a.产品经理前期调研(需求分析) b.和开发进行评审 c.开发进行开发 d.测试进行测试 e.交给运维人员进行上线 上线: 直接将代码交给运 ...
- ssh tunnel 三种模式
环境介绍: 主机 位置 公网 内网IP 角色 host-a 局域网1 否 192.168.0.1 ssh client host-b 局域网2.公网 是 192.168.1.1 ssh server ...
- Mybatis中映射器实现方式总结
一种是通过XML文件方式(由一个java接口和一个XML文件构成) RoleMapper rm = session.getMapper(RoleMapper.class); List<Role& ...
- SecureCRT乱码问题的解决
== 安装后默认的设置是utf8,不是汉字乱码,是一块一块的看不清,OMG... 设置这两个页面就好了
- 服务请求比较慢SYN flooding
服务请求比较慢 dmesg 查看日志,发现SYN flooding 问题,某一端口居多 内核输出“TCP: Possible SYN flooding on port”信息,在内核syncookie机 ...
- matplotlib画的图保存为emf格式
在用matplotlib保存图片时,发现不能直接保存为emf格式.百度有人说要先另存为svg格式,再使用INKSCAPE软件转换成emf格式.我试了一下,发现还是不行,后来,发现先用matplotli ...
- Python字典和集合的内部实现
1. 哈希表(Hash tables) 在Python中,字典是通过哈希表实现的.也就是说,字典是一个数组,而数组的索引是经过哈希函数处理后得到的.哈希函数的目的是使键均匀地分布在数组中.由于不同的键 ...
- gcc 6.2.0/6.3.0/8.2.0 编译安装
参考:http://www.linuxfromscratch.org/blfs/view/stable/general/gcc.html 下载地址在这里:https://ftp.gnu.org/gnu ...
- cocos2d-x JS 纯代码加载播放plist与png动画
var cache = cc.spriteFrameCache; cache.addSpriteFrames(plist, png); var frames = []; for (var i = 1; ...