简述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 ...
随机推荐
- echo, print, print_r
echo 不是函数,没有返回值,因此只是用作输出的话会更快 print 和 print_r 有返回值,区别在于: print 用于打印一个字符串,print_r 可以打印一些复合类型,如: $arr= ...
- PAT 5-8 File Transfer (25分)
We have a network of computers and a list of bi-directional connections. Each of these connections a ...
- 关于C语言编译器Dev c++的调试
大家应该都安装了C语言的编译软件,不过我个人认为Dev C++比VC6.0好用,所以只是说明DEv C++软件的调试方法 如果英文不好的,可以先汉化,再调试. 汉化:工具-----环境选项------ ...
- Jenkins - 持续集成环境搭建
1. Jenkins 概述 Jenkins是一个开源的持续集成工具.持续集成主要功能是进行自动化的构建.自动化构建包括自动编译.发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件. 2 ...
- JAVA并发框架之Semaphore实现生产者与消费者模型
分类: Java技术 锁和信号量(Semaphore)是实现多线程同步的两种常用的手段.信号量需要初始化一个许可值,许可值可以大于0,也可以小于0,也可以等于0. 如果大于0,表示 ...
- grafana+graphit安装笔记
OS:MAC 10.11查看测试线运行demo请访问http://10.103.13.101:3000/dashboard/db/graphite-carbon-metrics?editorTab=O ...
- thinkphp在模型中自动完成session赋值
相信用过thinkphp的用户都知道thinkphp的模型可以完成很多辅助功能,比 如自动验证.自动完成等,今天在开发中遇到自动完成中需要获取session值 然后自动赋值的功能,具体看代码:clas ...
- Recylerview的使用系列教程
转发自:http://edu.csdn.net/course/detail/2877
- 《C专家编程》第一章——C:穿越时空的迷雾
这一章讲的是C语言的发展史,包括它是多么不经意的诞生,而后又经历了早期C.K&C.ANSI C的各种阶段,直到它现在形成的这个样子.C语言从来不是一门完美的语言,所以它一直在发展,直到今日,它 ...
- 【WEB前端】CSS常用选择器
1.1 标签选择器 就是用标签名来当做选择器. 1) 所有标签都能够当做选择器,比如body.h1.dl.ul.span等等 2) 不管这个标签藏的多深,都能够被选择上. 3) 选择的是所有的,而不是 ...