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 ...
随机推荐
- python按修改时间顺序排列文件
import os def sort_file_by_time(file_path): files = os.listdir(file_path) if not files: return else: ...
- python的mutable变量与immutable变量
python的变量分为mutable(可变的)和immutable类型. mutable:dict, list immutable:int , string , float ,tuple..
- vue监听滚动事件 实现某元素吸顶或者固定位置显示
https://blog.csdn.net/wang1006008051/article/details/78003974 1.监听滚动事件 利用VUE写一个在控制台打印当前的scrollTop, 首 ...
- jenkins windows slave 构建c/c++代码
关于如何再centos系统上的jenkins master下搭建windows系统的jenkins slave节点,本篇博客中不做介绍,如果有需要的话,请参考我的另外一篇博客,在其中介绍了不同系统的j ...
- CentOS6.5安装python3.7
1.下载python3 wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz 2.解压 [root@mycentos ~]# ta ...
- kdevelp 导入makefile工程
比如upx工程,将upx/src/makefile中makefile改为makefile.am,自用kdevelop导入工程找到makefile.am,生成工程后去掉.am,这样就可以像vs一样调试程 ...
- java基础(三) -基本数据类型
变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义不同类型的变量,可以在内存 ...
- UGUI之Scrollbar使用
这个效果主要用到了3个组件(对象): 1:Scrollbar对象 滚动条 2:Scroll Rect组件 让对象具有滑动效果 3:Mask组件 遮罩层.把多余的部分隐藏不显示 Scrollbar ...
- Hibernate框架第三天
**课程回顾:Hibernate第二天** 1. 持久化类和一级缓存 * 持久化类:JavaBean + 映射的配置文件 * 持久化对象的三种状态 * 瞬时态 * 持久态:有自动更新数据的能力 * 托 ...
- sqli-labs(六)
第十一关: 这关是一个登陆口,也是一个sql注入的漏洞,也就是常说的万能密码. 在输入框账号密码种分别输入 1' 和1' 页面会报错. 后台使用的单引符号进行的拼接.账号输入1' or '1'=' ...