十一 JSP&EL&JSTL
1 什么是JSP?
从用户角度看待,是一个网页
从程序员角度,其实是一个Java类,他继承了Servlet,所以可以直接说JSP就是一个Servlet
为什么会有JSP?
html多数情况下用来显示静态内容,是一程不变的,不支持Java代码。
jsp支持Java,动态网页
2 jsp三大指令 page include taglib
page指令: pageCoding:jsp内容编码
extends: 用于指定jsp翻译成java文件后,继承的父类是谁
import:导包
session: true or false ,用于这个jsp页面能否直接使用session对象。
在代码的体现:有无getSession方法的调用,也就是有无session对象
errorPage:错误界面,
exception:需要开启isErrorPage为true
include指令:包含另外一个jsp进来,例如:<%@ include file="index.jsp" %>
taglib指令:uri:标签库路径 prefix:标签库的别名
3 jsp动作标签:
<jsp:include page=""/>
<jsp:param value="" name=""/>
<jsp:forward page=""/>
jsp:include:动态包含,不包含元素,而是把它的运行结果拿过来
jsp:param:跳转页面的时候把参数带过去
jsp:forward:前往哪个个页面
4 JSP四个作用域和五个内置对象(重点)
所谓内置对象 ,就是我们可以直接在jsp页面<%%>中使用这些对象,不用创建,
四大作用域的使用:
使用作用域来存取数据<br>
<%
pageContext.setAttribute("name", "pageContext");
request.setAttribute("name", "request");
session.setAttribute("name", "session");
application.setAttribute("name", "application");
%>
取出四个作用域的值<br>
<%=pageContext.getAttribute("name")%><br>
<%=request.getAttribute("name")%><br>
<%=session.getAttribute("name")%><br>
<%=application.getAttribute("name")%><br>
四个作用域的区别:
pageContext:作用域限于当前页面,在当前页面设置请求转发,跳转到另外一个页面后发现getAttribute为null
request:作用域限于一次请求,在当前页面使用重定向两次请求,第一次请求存的值,第二次跳转后发现getAttribute为null
session:作用域限于一次会话(多次请求与响应),重启浏览器,直接跳转04页面,第二次会话,setAttrubute为null
application:作用域限于整个工程,但服务器关闭就不能访问了
以上是四个作用域对象:可以存取数据,他们的取值范围有限定 setAttribute getAttribute
五大内置对象:
out(JspWriter)
response(HttpResponse)
exception(throwable)
config(ServletConfig)
page(object) 就是这个jsp翻译成java类的实例对象
5 EL表达式:${} 为了简化jsp代码,简化jsp里面的java代码,EL表达式没有提示
用EL表达式取出四个作用域中存放的值:<br>
${ pageScope.name}<br>
${ requestScope.name}<br>
${ sessionScope.name}<br>
${ applicationScope.name}
<br>--------------------------------<br>
<%
String[] a = {"aa","bb","cc","dd"};
pageContext.setAttribute("array", a);
%>
使用EL表达式取出作用域数组的值<br>
${array[0]},${array[1]},${array[2]},${array[3]}
<%%>
<br>-------------集合数据-------------------<br>
<%
List list = new ArrayList();
list.add("aa");
list.add("1");
list.add("2");
list.add("aa");
pageContext.setAttribute("array", list);
%>
使用EL表达式取出作用域集合的值<br>
${array[0]}, ${array[1]}, ${array[2]}, ${array[3]}
<br>-------------Map数据-------------------<br>
<%
Map map = new HashMap();
map.put("name","zhangsan");
map.put("age",18);
map.put("address.aa","北京1");
pageContext.setAttribute("map", map);
%>
使用EL表达式取出作用域Map的值<br>
${map.name},${map.age},${map["address.aa"]}
取值方式与次序:
<!-- 从域中取值,先要存值 -->
<%
// pageContext.setAttribute("name", "pageContext");
// request.setAttribute("name", "request");
session.setAttribute("name", "session");
// application.setAttribute("name", "application");
%>
<!-- 直接指定,去这个作用域找name<br> -->
${pageScope.name}<br>
<!-- 先从page找,然后是request、session、application找<br> -->
${name}<br>
<!-- 指定从session找 -->
${sessionScope.name}
<br>-------------domain.User-------------------<br>
<%
User user = new User("zhangsan",18);
session.setAttribute("u", user);
%>
${u.name},
${u.age}
<!-- 判断是否为空 -->
${empty user }
一般使用EL表达式,取出的都是从一个对象中取出它的属性值,比如取出一个学生的姓名
6 EL表达式的11个隐式对象,可以直接操作
${对象名.成员}
pageContext,实例对应于当前页面的处理
以下全是map相关的
四个作用域:
pageScope
requestScope
sessionScope
applicationScope
请求头:
header
headerValues
请求参数:
param
params
Cookie:
cookie
初始化参数:
initParam
7 JSTL表达式 JSP Standard Tab Library jsp标准标签库
简化jsp的代码编写,替换<%%>,一般与EL表达式配合,EL只能做取值的工作,JSTL可以做遍历等操作
注意:如果要使用EL表达式,那么要使用1.1版本,1.0版本不支持EL表达式
引入标签库<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="s"%>
常用标签库
<c:set></c:set> :声明了一个变量,存到域里面,域可以指定,默认为page
<c:if test=""></c:if> : 判断test里面,如果符合条件,就输出中间的内容
<c:forEach></c:forEach> : forEach遍历,其中items属性必须写EL表达${}
<!-- 相当于声明了一个String类型的变量,存到域里面,域可以指定,默认为page -->
<c:set var="name" value="zhangsan" scope="session" ></c:set>
${sessionScope.name }
<br>-----------------<br>
<c:set value="18" var="age"></c:set>
<c:set value="15" var="age1"></c:set>
<c:if test="${age>16}">
年龄大于16岁
</c:if>
<c:if test="${age1<16}">
年龄小于16岁
</c:if>
<br>-----------------<br>
<c:forEach var="i" begin="1" end="10" step="2">
${i }
</c:forEach>
<c:forEach var="user" items="${list}">
${user.name}----${user.age}<br>
</c:forEach>
十一 JSP&EL&JSTL的更多相关文章
- JavaEE之动态页面技术(JSP/EL/JSTL)
动态页面技术(JSP/EL/JSTL) JSP技术 jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%= ...
- JavaWeb之JSP & EL & JSTL
JSP & EL & JSTL JSP Java Server Page 什么是JSP 从用户角度看,就是一个网页.从程序员角度看,就是一个Java类,它继承Servlet,所以可以说 ...
- jsp&el&jstl mvc和三层架构
jsp:java在html中插入java 一.JSP技术 1.jsp脚本和注释 jsp脚本:(翻译成servlet,源码位置apache-tomcat-7.0.52\work\Catalina\loc ...
- 动态页面技术JSP/EL/JSTL
本节内容: jsp脚本和注释 jsp运行原理 jsp指令(3个) jsp内置/隐式对象(9个) jsp标签(动作) EL技术 JSTL技术 JavaEE的开发模式 动态页面技术:就是在html中嵌入j ...
- 回锅的美食:JSP+EL+JSTL大杂烩汤
title: Servlet之JSP tags: [] notebook: javaWEB --- JSP是什么 ? JSP就是Servlet,全名是"JavaServer Pages&qu ...
- request+response+jsp+el+jstl
response: 1.设置响应行的状态码: response.setStatus(int sc); 2.设置response缓冲区的编码:response.setCharacterEncoding( ...
- JSP & EL & JSTL
JSP 什么是JSP 用户角度看待 ,就是是一个网页,从程序员角度看待 ,是继承了servlet的java类,所以可以直接说jsp 就是一个Servlet. 为什么用JSP 用于显示一些动态数据,可以 ...
- javaweb(3)之JSP&EL&JSTL
JSP(Java Server Page) 介绍 什么是 JSP ? 从用户角度看,JSP 就是一个网页. 从开发者角度看,它其实就是一个继承了 Servlet 的 java 类,所以可以直接说 JS ...
- 04 jsp,EL,JSTL
jsp:Java Server Page 什么是jsp?从用户角度看待 ,就是是一个网页 , 从程序员角度看待 , 其实是一个java类, 它继承了servlet,所以可以直接说jsp 就是一个Se ...
随机推荐
- 在Eclipse或Myeclipse安装Maven插件的几种方法
http://blog.csdn.net/lfsfxy9/article/details/9397937
- NLP直播-1 词向量与ELMo模型
翻车2次,试水2次,今天在B站终于成功直播了. 人气11万. 主要讲了语言模型.词向量的训练.ELMo模型(深度.双向的LSTM模型) 预训练与词向量 词向量的常见训练方法 深度学习与层次表示 LST ...
- 水平居中显示CSS
HTML代码部分 <div class="center" > <img style="margin:0 auto ;" :src=item.i ...
- php的注释、变量、类型、常量、运算符、比较符、条件语句;
php的注释 1.// 2.# 3./* */ 变量 变量是储存信息的容器: 变量规则: 1.变量以$开头,后面跟名称>>>$sum; 2.变量必须以字母或下滑先开头,不能用数字开 ...
- nyoj 57
6174问题 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替 ...
- 3.java发展简史
1991年,James Gosling在SUN(Stanford University Network)公司的工程师小组想要设计这样一种小型计算机语言.该语言主要用于像电视盒这样的消费类电子产品.另外 ...
- 区间树Splay——[NOI2005]维护数列
无指针Splay超详细讲解 区间树这玩意真TM玄学. 学这东西你必须要拥有的 1.通过[模板]文艺平衡树(Splay),[模板]普通平衡树,GSS3 - Can you answer these qu ...
- SQL SERVER 2005还原差异备份、日志备份 2012-03-29 11:43
其实要备份,还原最安全最有保障的是完全备份.但是完全备份肯定是需要更多的磁盘空间的开销.尤其是数据量比较大的.比如基数是500M,每天的增长量为10M,那么第一次完全备份是500M,第二次是510M, ...
- 借助工具解决DNS污染
我第一次接触到DNS污染,是在GitHub上面进行学习的时候,发现头像加载出问题,加载失败,而且文档里面的图片也无法显示...... 百度了很多内容,差不多都试了一下,最终选择了使用DNS工具去解决 ...
- LeetCode 445. Add Two Numbers II(链表求和)
题意:两个非空链表求和,这两个链表所表示的数字没有前导零,要求不能修改原链表,如反转链表. 分析:用stack分别存两个链表的数字,然后从低位开始边求和边重新构造链表. Input: (7 -> ...