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 ...
随机推荐
- internal table operation
1: the basic operation *&---------------------------------------------------------------------* ...
- Windows本机搭建Redis
1 下载安装包 GIT:https://github.com/MicrosoftArchive/redis/releases Redis-x64-3.2.100.zip 百度网盘 :链接: ...
- Java 基础 引用数据类型 ArrayList集合
引用数据类型(类) 分类 提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类.Random类. 我们可以把类的类型为两种: 第一种,Java为我们提供好的类,如Scanner类, ...
- Mongodb 基础 复制集原理和搭建
数据复制原理 开启复制集后,主节点会在local库下生成一个集合叫 oplog.rs,这是一个有限的集合,即大小固定.这个集合记入了整个mongod实例一段时间内数据库的所有变更操作(如:增/删/改) ...
- tf.nn.embedding_lookup函数【转载】
转自:https://www.cnblogs.com/gaofighting/p/9625868.html //里边有两个很好理解的例子. tf.nn.embedding_lookup(params, ...
- maven设置每次构建获取最新版本号
build.gradle中的依赖是通过设置maven依赖实现.我们知道,maven可以说是通过一个坐标定位来确定唯一一个包的,所说的坐标定位分别是groupId,artifactId和version三 ...
- Tensorflow 搭建神经网络及tensorboard可视化
1. session对话控制 matrix1 = tf.constant([[3,3]]) matrix2 = tf.constant([[2],[2]]) product = tf.matmul(m ...
- python中的filter、map、reduce、apply用法
1. filter 功能: filter的功能是过滤掉序列中不符合函数条件的元素,当序列中要删减的元素可以用某些函数描述时,就应该想起filter函数. 调用: filter(function,seq ...
- ubuntu下ldd,查看程序动态库信息
ldd list, dynamic, dependencies linux-vdso.so. => (0x00007ffe9d9b6000) libstdc++.so. => /usr/ ...
- Cocos2d-JS studio基础控件的使用
在studio里把几个基础控件往场景文件一拖,然后导出json格式的资源文件 逻辑代码如下: 1 var HelloWorldLayer = cc.Layer.extend({ 2 sprite:nu ...