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及其使用的更多相关文章

  1. JSP、EL表达式、JSTL标签库干货(建议收藏)

    JSP(Java Server Pages)类似于ASP技术,它是在传统的网页HTML文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件, ...

  2. JSP和El表达式和JSTL标签库使用

    核心标签库: <%@ page language="java" import="java.util.*" pageEncoding="utf-8 ...

  3. JSP、EL表达式、JSTL

    JSP 1.什么是jsp? Java Server Pages: java服务器端页面.可以理解为一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码.其本质就是一个Servlet. ...

  4. 个人整理的jsp、EL表达式、JSTL标签库的笔记,少概念多实用,需要的留下邮箱,会第一时间分享原稿PDF给大家!

    jsp 第一章 jsp介绍及对比servlet 作用: 动态网页技术,动态的从数据库获取数据 jsp和servlet的优缺点: jsp优点:页面表现方便,利于写html代码 jsp缺点:业务逻辑处理麻 ...

  5. jsp EL表达式和JSTL标签if-else if-else用法

    java web javaEE ,jsp EL表达式和JSTL标签if-else if-else四种用法一.条件运算符 ${user.gender==?'男':'女'} 二.if() <c:if ...

  6. jsp页面使用EL表达式 使用Jstl标签库中的标签,需要引入jstl.jar和standard.jar

    spring boot 中使用jstl 首先在pom中加入 <dependency> <groupId>jstl</groupId> <artifactId& ...

  7. jsp之el表达式jstl标签

    不管是el表达式还是jstl标签最终的目的都是要消除jsp中的java代码,当然是消除显式的java代码 el表达式的出现是为了简化jsp中读取数据并写入页面的操作. el表达式的功能不多,也很好记 ...

  8. jsp(3,6,9) EL表达式及JSTL

    1. jsp 1.1jsp是什么 全称: Java Server Pages,java服务器页面.和Servlet一样,是sun公司定义的一种动态网页开发技术.    特点:基于html模版,可以在h ...

  9. [转]EL表达式和JSTL表达式实例

    /* **Title:EL表达式和JSTL表达式实例 **Author:Insun **Blog:http://yxmhero1989.blog.163.com/ */ 为了方便写JSP,我们引入了E ...

随机推荐

  1. C语言程序设计第十次作业

    一.实验内容        1.有5名学生,每名学生有语文.数学和外语3门课的考试成绩.编程统计各学生的总分和平均分以及所有学生各科的平均分.要求成绩在程序中初始化,结果以表格的形式输出.      ...

  2. 安装R语言扩展包diveRsity-1

    今天去了学院的运动会呢-扮熊本熊超开心-写完这篇我补上我的图么么哒 ××××××××××××文末高能预警!!!!!这个包的安装并不是本周的任务!!!!!我真是萌萌哒×××××××××××××× ××× ...

  3. Ubuntu下libpcap安装

    1.首先按下面的博客教程下载和安装四个软件包: 点击打开链接 2.这四个软件都安装好之后按下面教程新建Makefile文件和test.c文件: 点击打开链接 Makefie: all: test.c ...

  4. 修改Android系统属性SystemProperties.set("sys.powerctl", "shutdown")关机分析

    简介: 从之前的博文中我们提到过,关机流程中最后是通过修改Android属性进行关机操作(SystemProperties.java通过JNI调用访问系统属性),当然我们也可以通过adb命令修改And ...

  5. ubuntu 下更新PHP版本 ZT

    sudo add-apt-repository ppa:ondrej/php5 如果报错 add-apt-repository: command not found add-apt-repositor ...

  6. c++ float能到小数点后多少位

    float xiaoshu=0.0000000000000000000000000000000000000000000001; cout<<"xiaoshu"<& ...

  7. setInterval和setTimeout

    setTimeout和setInterval的基本用法我们不谈,无非是1.指定延迟后调用函数,2.以指定周期调用函数 让我们想象一个意外情况,比如说下面的setInterval setInterval ...

  8. Autorun.inf文件(2):改变硬盘分区图标

    改变F盘图标. 原理:在f盘下新建一个Autorun.inf文件,文件内容是 [AutoRun]icon=favicon.ico准备名为favicon.ico图标文件,将其放在工程目录里,设计程序将它 ...

  9. ORA-20000 ORU-10027 buffer overflow limit of 2000 bytes

    这是在pl/sql中执行存储过程报的错,原因是serveroutput限制存储, 解决方案:set serveroutput on size 10000000;

  10. HttpContext.Current.User is null after installing .NET Framework 4.5

    故障原因:从framework4.0到framework4.5的升级过程中,原有的form认证方式发生了变化,所以不再支持User.Identity.Name原有存储模式(基于cookie),要恢复这 ...