简述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 ...
随机推荐
- TransactionScope 使用记录
最近使用TransactionScope来进行处理不同数据库的操作问题,当看到这里的时候肯都是在使用或者要使用的吧,关于他的使用网络上一大堆,我在使用的时候遇到了一下的问题,作为记录,可能会对以后使用 ...
- entity framework 新手入门篇(4)-entity framework扩展之 entityframework.extended
对于EF的操作,我们已经有了大概的了解了,但对于实战来说,似乎还欠缺着一些常用的功能,那就是批量的删除,更新数据. 承接上面的部分,我们有一个叫做House的数据库,其中包含house表和seller ...
- cocos2dx 中使用的一些C++ 11 特性
0. placeholder 头文件:<functional> namespace: placeholder placeholder 就是一堆帮助bind占参数位置的东西,名字分别为 _ ...
- fushioncharts 使用教程要点---使用JSON数据方式
1.建立图表步骤: A.下载fushionChart,引入FusionCharts.js和FusionChartsExportComponent.js文件 B.建立图表对象 var chart1 = ...
- ASP.NET常用函数(参考用)
Abs(number) 取得数值的绝对值. Asc(String) 取得字符串表达式的第一个字符ASCII 码. Atn(number) 取得一个角度的反正切值. CallByName (object ...
- UE4 通过HTTP 接受JPG并动态 构建 UTexture2D 简单例子
s void UChildBaseUserWidget::setTextureFromLoadImg(FHttpRequestPtr _request, FHttpResponsePtr _respo ...
- H3C汇聚层交换机认证在线人数展示系统之需求说明和功能点说明
一.需求 (一)每五分钟查询一次交换机的连接情况: (二)每2.5分钟更新每栋楼的连接情况. 二.功能点 序号 功能点说明 待定 完成 未完成 完成时间 预计用时(min) 实际用时(min) 备注 ...
- System.Collections.Generic的各容器类的用法
演示System.Collections.Generic的各容器类的用法. 包括:Dictionary,KeyValuePair,SortedDic tionary,SortedList,HashSe ...
- Day22_IO第四天
1.合并流(序列流)-) { //不断的在a.txt上读取字节 fos.write(b1); //将读到的字节写到c.txt上 } fis1.close(); //关闭字节输入流 FileInputS ...
- The import javax.servlet cannot be resolved
在STS中,突然把配置的Tomcat删除,换另外一个Tomcat使用时,出现:The import javax.servlet cannot be resolved.这个错误可能是服务器自带的serv ...