简述jsp之EL表达式和jstl及其使用
Jsp的指令之include指令
include指令:代表的是页面的包含。
作用:可以把一些jsp的页面包含在一起,对外展示。
页面的布局,现在已经不用了,现在都用css+div进行布局。
include的语法
<%@ include file="要包含的页面" %>
比方说/personal/WebContent/jsp/base/tag.jsp需要引入tag.jsp,则<%@ include file="/jsp/base/tag.jsp" %>
include的原理
include指令是静态包含的原理,默认把其他包含的所有的文件的源代码全部复制到main.jsp的文件中一起翻译成一个.java的文件,一起编译成一个.class,最后执行。
Jsp的指令之taglib指令
taglib指令:作用是用来导入其他的标签库。
taglib的语法
<%@ taglib uri="" prefix="" %>
uri:引入标签的地址
prefix:标签的前缀名称,每一种标签都有自己的前缀名称
Jsp的内置对象
jsp的内置对象:可以在jsp页面中直接使用的对象。
内置对象的引用,内置对象真实对象,内置对象的常用方法
引用 内置对象 常用方法
request HttpServletRequest 域对象,获取请求参数
response HttpServletResponse 响应头,回写cookie,输出中文
session HttpSession 域对象
application ServletContext 域对象,getRealPath(),getResourceAsStream()
config ServletConfig 获取初始化参数
page Object
exception Throwable 获取的异常的信息
out ProntWriter 打印输出流
pageContext pageContext 代表的是当前页面的上下文对象(重点)
为什么内置对象就可以直接来使用呢?
jsp的文件在翻译成.java文件的时候,定义了内置对象,并且赋值了。
总结:
jsp的内置对象可以在jsp页面中直接来使用。
el表达式与jstl标签库及其使用
el表达式:翻译是表达式语言,jsp内置的一种表达式的语言。
目的:el表达式的出现替换掉java的脚本。
el表达式的写法:
在jsp页面上:${ 表达式语言 }
el表达式的作用:
获取域对象中的值(必须掌握)
执行运行(符号掌握)
el表达式内置的常用的对象(掌握)
调用java的方法(了解)
总结:
从域对象中取值,2种写法:
.的方式:如果key值有特殊字符,不可以取值
[""]的方式:如果key值有特殊字符,也可以取值
如果使用el表达式获取不存在的key值,返回""字符串
el表达式获取域对象中的数据
注意:el表达式操作的都是域对象中的值。
学会el表达式在域对象中获取值
代码:
<h3>从数组中获取值</h3>
<%
String [] arr = {"美美","小风","小花"};
// EL表达式获取的是域对象中的值
pageContext.setAttribute("arr", arr);
%>
${ pageScope.arr[0] }
${ pageScope.arr[1] }
${ arr[2] }
<h3>从Map集合获取值</h3>
<%
Map<String,String> map = new HashMap<String,String>();
map.put("aaa", "美美");
map.put("bbb", "小风");
map.put("ccc", "小花");
pageContext.setAttribute("map", map);
%>
${ map.aaa }
${ map.ccc }
<h3>从Java的对象中获取值</h3>
<%
User user = new User();
user.setUsername("aaa");
user.setPassword("123");
pageContext.setAttribute("user", user);
%>
${ user.username }
${ user.password }
<h3>从List集合中获取Java的对象的值</h3>
<%
List<User> list = new ArrayList<User>();
list.add(new User("aaa","123"));
list.add(new User("bbb","456"));
list.add(new User("ccc","789"));
pageContext.setAttribute("list", list);
%>
${ list[0].username }
el表达式的运算符
el表达式支持运算。
常用的运算符
+ - * / %
== eq
!= ne
< lt
> gt
<= le
>= ge
&& and
! not
|| or
empty 判断对象是否是null或者判断集合的长度是否为0
el表达式的内置对象
pageScope 代表当前的页面
requestScope 代表request范围
sessionScope 代表session
applicationScope 代表application
param 代表请求的参数(request.getParameter())
paramValues 代表请求的参数(request.getParameterMap() Map<String,String[]>)
header 代表获取请求头
headerValues 代表请求头
initParam 代表的是全局的初始化参数
cookie 代表的所有的Cookie对象
pageContext 1个顶9个,获取到其他的内置对象
${ pageContext.request.contextPath } 代表WEB项目的虚拟路径
<%
pageContext.getRequest().getContextPath(); /personal
%>
${pageContext.request.contextPath} /personal
jstl标签库
jstl:jsp的标准的标签库,是Apache提供的标签库,需要导入jar包。
jstl依赖el表达式,jstl的标签,获取值使用el表达式来取值。
导入2个jar包,如果开发工具使用的是Myeclipse不用导入开发的jar包,否则,需要导入jar包。
jstl.jar
standard.jar
jstl标签库的语法
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
jstl的原理:jstl的标签,真正的运行时后台的java类在运行。
jstl的标签
out标签
作用:输出内容(域对象中的值,常量)
属性:
value:必须要出现的,代表输出的内容
default:代表默认值
escapeXml:设置是否转义
代码:
<h3>out标签</h3>
<%
request.setAttribute("msg", "out标签");
%>
<c:out value="${ msg }"></c:out>
<c:out value="<a href='http://www.baidu.com'>点击</a>" escapeXml="false"></c:out>
页面输出结果:out标签 点击(点击可跳转至百度)
set标签
作用:向域对象中存入值
属性:
var:key值
value:值
scope:作用域(page request session application)
代码:
<h3>set标签</h3>
<%
request.setAttribute("msg", "A");
%>
<c:set var="msg" value="B" scope="request"></c:set>
${ msg }
页面输出结果:B
remove标签
作用:从域对象中移除值
属性:
var:移除的key值
代码:
<h3>remove标签</h3>
<c:set var="msg" value="美美"/>
${ msg }
<h3>已经把msg移除了</h3>
<c:remove var="msg"/>
${ msg }
if标签
作用:进行语句的判断。注意:只有if,没有else
属性:
test:必须要出现的,判断的条件
var:把判断条件的结果(true或者false)保存到var变量中
scope:作用域
代码:
<h3>if标签</h3>
<%
int n = 20;
request.setAttribute("n", n);
%>
<c:if test="${ n eq 10 }" var="i">
<font color="red">n=10</font>
</c:if>
<c:if test="${ n ne 10 }">
<font color="blue">n!=10</font>
</c:if>
${ i }
页面输出结果:n!=10 false
choose标签
作用:用来进行判断,但是复合的标签
<c:choose>
<c:when test=""></c:chen>
<c:when test=""></c:chen>
<c:otherwise></c:otherwise>
</c:choose>
属性:
关注when标签,test属性
代码:
<%
int n = 10;
request.setAttribute("n", n);
%>
<c:choose>
<c:when test="${ n eq 20 }">
n=20
</c:when>
<c:otherwise>
n=其他
</c:otherwise>
</c:choose>
页面输出结果:n=其他
forEach标签
作用:用来迭代数据
forEach当成普通的for循环。for(int i=1; i<=10; i++){}
forEach当成增强的for循环。for(String key : 集合){}
属性:
var:声明变量
begin:从哪开始
end:到哪结束
step:步长
varStatus:在迭代的过程中会产生一些信息,把信息保存在varStatus属性。其中属性有一些值:
count:代表计数
index:代表下标
first:判断是否是第一个元素
last:判断是否是最后一个元素
current:代表当前迭代的元素
items:代表的是要迭代的集合(数组 list set map)
代码:
<%@page import="com.pers.domain.User"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 导入JSTL的标签库 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
for(int i=0;i<=10;i++){
}
%>
<h3>普通for循环</h3>
<c:forEach var="j" begin="0" end="10" step="1" varStatus="vs">
${ vs.count }
</c:forEach>
<h3>模拟增强for循环</h3>
<c:forEach var="s" items="${ list }">
${ s }
</c:forEach>
<h3>遍历数据,数据需要存入在域对象中,遍历List集合</h3>
<%
List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
request.setAttribute("list", list);
%>
<c:forEach var="s" items="${ list }">
${ s }
</c:forEach>
<h3>遍历Map集合</h3>
<%
Map<String,String> map = new HashMap<String,String>();
map.put("a", "A");
map.put("b", "B");
map.put("c", "C");
request.setAttribute("map", map);
%>
<c:forEach var="entry" items="${ map }">
${ entry.key } -- ${ entry.value }
</c:forEach>
<h3>List集合中有Java对象</h3>
<%
List<User> ulist = new ArrayList<User>();
ulist.add(new User(1,"张三","zhangsan123","zhangsan@163.com"));
request.setAttribute("ulist", ulist);
%>
<c:forEach var="user" items="${ ulist }">
${ user.username } -- ${ user.email }
</c:forEach>
</body>
</html>
简述jsp之EL表达式和jstl及其使用的更多相关文章
- JSP、EL表达式、JSTL标签库干货(建议收藏)
JSP(Java Server Pages)类似于ASP技术,它是在传统的网页HTML文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件, ...
- JSP和El表达式和JSTL标签库使用
核心标签库: <%@ page language="java" import="java.util.*" pageEncoding="utf-8 ...
- JSP、EL表达式、JSTL
JSP 1.什么是jsp? Java Server Pages: java服务器端页面.可以理解为一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码.其本质就是一个Servlet. ...
- 个人整理的jsp、EL表达式、JSTL标签库的笔记,少概念多实用,需要的留下邮箱,会第一时间分享原稿PDF给大家!
jsp 第一章 jsp介绍及对比servlet 作用: 动态网页技术,动态的从数据库获取数据 jsp和servlet的优缺点: jsp优点:页面表现方便,利于写html代码 jsp缺点:业务逻辑处理麻 ...
- jsp EL表达式和JSTL标签if-else if-else用法
java web javaEE ,jsp EL表达式和JSTL标签if-else if-else四种用法一.条件运算符 ${user.gender==?'男':'女'} 二.if() <c:if ...
- jsp页面使用EL表达式 使用Jstl标签库中的标签,需要引入jstl.jar和standard.jar
spring boot 中使用jstl 首先在pom中加入 <dependency> <groupId>jstl</groupId> <artifactId& ...
- jsp之el表达式jstl标签
不管是el表达式还是jstl标签最终的目的都是要消除jsp中的java代码,当然是消除显式的java代码 el表达式的出现是为了简化jsp中读取数据并写入页面的操作. el表达式的功能不多,也很好记 ...
- jsp(3,6,9) EL表达式及JSTL
1. jsp 1.1jsp是什么 全称: Java Server Pages,java服务器页面.和Servlet一样,是sun公司定义的一种动态网页开发技术. 特点:基于html模版,可以在h ...
- [转]EL表达式和JSTL表达式实例
/* **Title:EL表达式和JSTL表达式实例 **Author:Insun **Blog:http://yxmhero1989.blog.163.com/ */ 为了方便写JSP,我们引入了E ...
随机推荐
- 安装R语言扩展包vegan
这周的作业我开始得好迟啊...然而还是要努力做啊... ××××××××××××××我是萌萌哒分割线×××××××××××××××××××××××××××××××××××× 首先,百度进入官方页面,看 ...
- Linux内核分析—完成一个简单的时间片轮转多道程序内核代码
---恢复内容开始--- 20135125陈智威 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-10 ...
- Android实战技巧:ViewStub的应用
在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局.那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在 ...
- 【Python】二分查找算法
二分查找:在一段数字内,找到中间值,判断要找的值和中间值大小的比较.如果中间值大一些,则在中间值的左侧区域继续按照上述方式查找.如果中间值小一些,则在中间值的右侧区域继续按照上述方式查找.直到找到我们 ...
- savedInstanceState的作用
在activity的生命周期中,只要离开了可见阶段,或者说失去了焦点,activity就很可能被进程终止了!,被KILL掉了,,这时候,就需要有种机制,能保存当时的状态,这就是savedInstanc ...
- 【转】最佳Restful API 实践
原文转自:https://bourgeois.me/rest/ REST APIs are a very common topic nowaday; they are part of almost e ...
- PHP易混淆函数的区分方法及意义
1.echo和print的区别 PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的.echo输出后没有返回值,但print有返回值,当其执行失败时返回flase.因此 ...
- 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序 解决方法
最近在搞asp.net.今天在做数据库操作的时候,老发生错误,还以为是自己代码有问题,检查了好久都发现错误. 错误提示: 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程 ...
- CSS3中:nth-child和:nth-of-type的区别深入理解。 关于:nth-child和:nth-of-type的区别之前一直没太注意,经深入理解才发现里面其实暗藏玄机
关于:nth-child和:nth-of-type的区别之前一直没太注意.最近打算深入了解一些CSS3,才发现里面其实暗藏玄机. :nth-child可以选择父元素下的字元素,:nth-of-type ...
- git format-patch & git apply & git clean
一.打补丁 git format-patch & git apply 最近在工作中遇到打补丁的需求,一来觉得直接传文件有些low(而且我尝试了一下,差点把项目代码毁了) ,二来也是想学习一下, ...