第11天jsp el与jstl标签库.docx

上传人:b****8 文档编号:10811095 上传时间:2023-02-23 格式:DOCX 页数:26 大小:288.41KB
下载 相关 举报
第11天jsp el与jstl标签库.docx_第1页
第1页 / 共26页
第11天jsp el与jstl标签库.docx_第2页
第2页 / 共26页
第11天jsp el与jstl标签库.docx_第3页
第3页 / 共26页
第11天jsp el与jstl标签库.docx_第4页
第4页 / 共26页
第11天jsp el与jstl标签库.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

第11天jsp el与jstl标签库.docx

《第11天jsp el与jstl标签库.docx》由会员分享,可在线阅读,更多相关《第11天jsp el与jstl标签库.docx(26页珍藏版)》请在冰豆网上搜索。

第11天jsp el与jstl标签库.docx

第11天jspel与jstl标签库

第11天jspel表达式与jstl标签库

【教学内容】

JSP

◆jsp回顾

◆jsp指令介绍

◆page指令

◆include与taglib指令

◆jsp内置对象介绍

◆pageContext对象

◆jsp动作标签

EL表达式

◆El表达式介绍与作用分析

◆El表达式获取数据

◆El表达式执行运算

◆El表达式内置对象

◆El函数使用

JSTL标签库

◆Jstl标签介绍

◆Jstl核心标签

【教学总结】

【第一阶段】

【学习目标】

【内容:

JSP】

jsp回顾

jsp作用

将内容的生成和显示进行分离

用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面,并使用JSP标识或者小脚本来生成页面上的动态内容

jsp原理

jsp注释

在jsp页面中可以使用三种注释

Ø可以使用html中注释

--html的注释-->

Ø可以对jsp脚本内容使用java注释

//单行注释/*多行注释*/

Ø可以使用jsp注释

<%--jsp注释--%>

jsp脚本

有三个基本的脚本元素,作用是使JAVA代码可以直接插入java代码

Ø声明标签

格式<%!

inta=1;%>

声明的变量在类的成员位置上

Ø脚本片断

格式<%inta=1;out.println(a);%>

内容会生成在_jspService()方法中

Ø脚本表达式

<%="hello"+a%>

它就相当于是out.println()将内容直接输出到页面中,注意表达式不能以分号结尾

jsp指令介绍

什么是指令及其作用

当我们创建一个jsp页面时,在页面第一行有一段代码如下:

<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%>

这个就是指令,对于指令它有以下作用

Ø用于指示JSP执行某些步骤

Ø用于指示JSP表现特定行为

指令格式

指令的格式<%@指令名attr1=””attr2=””%>

其中attr1和attr2表示指令中的属性,通常我们将JSP指令写在JSP文件的的最上方,但是这不是必须的。

Jsp中三种指令介绍

JSP中有三大指令,分别是以下三个:

●page

●include

●taglib

其中这三个指令中,page是最复杂的,后面我们会详细讲解;include指令表示静态包含,我们之前学习的请求包含属于动态包含;taglib指令是用来导入标签库,后面会学习一些标签库,在这里只做简单介绍。

page指令

重点属性

Øimport

作用是在jsp页面上导包操作.

这个属性可以有多个.

ØpageEncoding

该属性的作用是:

指定当前jsp页面的编码。

这个编码是给服务器看的,服务器需要知道当前页面的编码,否则服务器无法正确的把jsp翻译成Java文件。

ØcontentType

在jsp文件中有如下指令:

<%@pagelanguage="java"import="java.util.*"contentType="text/html;charset=ISO-8859-1"%>

其中contentType属性的作用等同于response.setContentType(“text/html;charset=ISO-8859-1”)的作用。

response的setContentType()方法这里我们就不再多说,当我们在jsp文件中提供了contentType属性,那么jsp对应的java文件中就会存在response.setContentType(“text/html;charset=ISO-8859-1”)这句代码。

contentType属性的默认值就是“text/html;charset=ISO-8859-1”,但是我们知道iso-8859-1并不支持中文,所以我们需要将charset的值修改为“utf-8“。

pageEncoding与contentType的区别与联系

pageEncoding与contentType都是page指令的属性,它们都是用来设置编码,有如下联系:

如果这两个属性只提供了其中一个,那么没有提供的那个属性的编码值就是提供的这个属性的编码值,例如:

在jsp页面中设置了contentType=”text/html;charset=utf-8”,那么没有设置的pageEncoding的值就为utf-8,反之亦然;

如果两个属性都没有提供,那么两者的默认编码就是ISO-8859-1。

根据对这两个属性的讲解,它们有如下区别:

pageEncoding是设置当前页面的编码,该编码是给服务器看的,可以让服务器正确的将jsp文件翻译成Java文件;

contentType有两个作用:

一是设置响应字符流的编码,二是设置Content-Type响应头,即通知浏览器使用什么编码方式解码响应信息。

了解属性

Ølanguage

代表在jsp脚本中可以写的语言只有一个值java

Øextends

它用于设置jsp翻译后的java类的父类.要求必须是HttpServlet或其子类.

ØSession

面上是否禁用session。

可取值为true/false如果值为false,在页面上不能使用session。

ØisELIgnored

用是否忽略el表达式.可取值为true/false如果值为true,那么页面上的el表达式就不会被解析.

ØautoFlush与buffer

用于设置jsp中out流的默认缓冲区大小以及是否自动刷新.

ØerrorPage

设置错误页面,当jsp中如果出现了异常,会自动跳转到指定的错误页面

ØisErrorPage

指示当前页面是一个错误页面,这时就可以使用一个内置对象exception,

通过这个内置对象就可以获取异常信息.

include与taglib指令

include指令

Øinclude指令作用

include指令的作用是在JSP页面中静态包含一个文件,同时由JSP解析包含的文件内容

Øinclude指令格式

<%@includefile=“filename”%>

Øinclude指令功能分析

包含的是目标文件的源码;包含过来,一起翻译

main.jsp

<%

Strings=“abc”;

%>

<%includefile=“part.jsp”%>

part.jsp

<%=s%>没有定义变量s

尽管part.jsp本身会有错误

但是运行main.jsp就可以正确引入part.jsp

taglib指令

Øinclude指令作用

作用:

是用于导入标签库.

Øinclude指令格式

<%@taglibprefix=""uri=""%>

uri标签文件的URI地址

prefix标签组的命名空间前缀

 

jsp内置对象介绍

jsp九个内置对象及其类型

requestHttpServletRequest

responseHttpServletResponse

sessionHttpSession

applicationServletContext

configServletConfig

pagethis(HttpServlet)

pageContextPageContext

exceptionThrowable(所有异常父类)

outJspWriter

jsp九个内置对象创建过程

我们可以创建一个demo1.jsp页面,启动服务器,在浏览器中访问demo1.jsp页面,在tomcat下的work目录中查找到它翻译后的demo1_jsp.java文件,在java文件中我们可以查找到每一个内置对象的创建。

request,response这两个对象是_jspService的参数

finaljavax.servlet.jsp.PageContextpageContext;

javax.servlet.http.HttpSessionsession=null;

finaljavax.servlet.ServletContextapplication;

finaljavax.servlet.ServletConfigconfig;

javax.servlet.jsp.JspWriterout=null;

finaljava.lang.Objectpage=this;

pageContext

pageContext=_jspxFactory.getPageContext(this,request,response,null,true,8192,true);

excepption

java.lang.Throwableexception=org.apache.jasper.runtime.JspRuntimeLibrary.getThrowable(request);

if(exception!

=null){

response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);

}

注意:

exception对象只有在jsp页面上设置了page指令的isErrorPage才会有exception对象。

jsp中四个域/对象

jsp有四个域对象,分别是:

●application:

域范围是整个应用;

●session:

域范围是整个会话,注意一个会话中只有一个用户,如果要统计站点的访问次数,使用的域是ServletContext,因为这个时候统计的是多个用户,而非一个用户;

●request:

域范围是整个请求链;

●pageContext:

域范围是一个jsp页面,在一个页面中存数据再取数据没有任何意义,所以这里所说的域指的是在当前jsp页面和当前jsp页面中使用的标签之间共享数据。

pageContext对象

pageContext对象作用

Ø获取其它内置对象

可以通过pageContext对象获取jsp中其他的内置对象.PageContext类中定义了如下八个方法:

getPage()、getRequest()、getResponse()、getServletConfig()、getServletContext()、getException()、getSession()等方法,其中getOut()放是在其父类中定义的,有了这些方法,pageContext对象自然能够获取其他八个内置对象了。

Ø操作四大作用域

首先来了解pageContext对象的域功能:

⏹voidsetAttribute(Stringname,Objectvalue)

⏹ObjectgetAttribute(Stringname);

⏹VoidremoveAttribute(Stringname);

可以利用pageContext对象向request、session、application域中存取数据。

⏹ObjectgetAttribute(Stringname,intscope):

该方法的第一个参数是域属性的名称,第二个参数指定是从那个域中取出域属性;在PageContext中已经定义了如下几个静态常量作为scope的可选值:

◆intAPPLICATION_SCOPE:

当参数为这个常量时,表示从application域中获取数据;

◆intPAGE_SCOPE:

当参数是这个常量时,表示从page域中获取数据;

◆intREQUEST_SCOPE:

当参数是这个常量时,表示从request域中获取数据;

◆intSESSION-SCOPE:

当参数是这个常量时,表示从session域中获取数据。

⏹voidsetAttribute(Stringname,Objectvalue,intscope):

该方法的第一个参数指的是域属性的名称,第二参数指的是域属性的值,第三个参数指定域属性保存的域,scope的取值同上;

⏹voidremoveAttribute(Stringname,intscope):

该方法的第一个参数指的是域属性的名称,第二个参数指的是将指定域属性从哪个域中移出,scope的取值同上;

有了以上三个方法,pageContext对象就可以操作其他三个域对象了,例如:

pageContext.setAttribute(“name”,”zhangsan”,PageContext.SESSION_SCOPE).

Ø便捷查询域中数据

PageContext类的父类中定义了如下方法:

ObjectfindAttribute(Stringname):

该方法是从jsp的四个域page、request、session、application依次查找指定名称的域属性,如果找到就停止,这说明如果这四个域中存在同名的属性,那么返回的数据是从page范围中获取的。

即表示谁的域范围越小,谁的优先级越高。

注意:

这里说的page范围和九大内置对象中的page对象不是一个意思,page范围可以理解为是pageContext对象的域范围,即一个jsp页面。

jsp动作标签

什么是标签及其作用

JSP标签也称之为JspAction(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护。

Jsp中常用动作标签

Øjsp:

forward

forward>标签是用来做请求转发,它与RequestDispatcher接口的forward()方法一样,唯一不同的是它是在jsp页面中使用。

Øjsp:

include

include>标签的作用使用来包含其他jsp页面,之前学习的include指令属于静态包含,而include动作标签是动态包含,它和RequestDispatcher接口的include()方法一样,是运行级别的包含

Øjsp:

param

param>标签作为

forward>标签和

include>标签的子标签,用来给转发或包含的页面传递数据。

 

静态包含与动态包含的区别

include标签与inclue指令区别:

1.include指令是静态包含,包含文件中包含了被包含文件的内容.

include标签是动态包含,它包含的是被包含文件执行后的结果.

2.include指令不能带参数

include标签是可以带参数的

【笔试面试题】

Jsp中九个内置对象及其类型

Jsp中静态包含与动态包含的区别

【重点总结】

大家掌握jsp中九个内置对象,并理解jsp中四个域对象,掌握四个域对象的使用其常用API

【第二阶段】

【学习目标】

【内容:

EL表达式】

El表达式介绍与作用分析

什么是EL表达式

EL是ExpressionLanguage的缩写,它是jsp内置的表达式语言,从jsp2.0开始,就不让再使用java脚本,而是使用el表达式或动态标签来代替java脚本。

EL表达式的格式如下:

${表达式}

EL表达式代替的是java脚本中的<%=…%>,也就是说EL表达式也是向浏览器端输出数据。

例如${1+2}会向浏览器端输出3。

为什么使用EL表达式及其作用

为了使JSP写起来更加简单,更加安全,可以通过EL表达式来替换我们jsp页面上的脚本

EL主要作用:

◆获取数据:

EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域中检索java对象、获取数据。

(某个web域中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)

◆执行运算:

利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。

${user==null}

◆获取web开发常用对象

EL表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。

◆调用Java方法

EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。

EL表达式使用时注意事项

EL表达式是JSP2.0(JavaEE1.4)规范中的一门技术。

因此,若想正确解析EL表达式,需使用支持Servlet2.4/JSP2.0技术的WEB服务器。

注意:

有些Tomcat服务器如不能使用EL表达式

(1)升级成tomcat6

(2)在JSP中加入<%@pageisELIgnored="false"%>

El表达式获取数据

EL表达式之域查找

1.page-----------------------------${pageScope.xxx}

2.request--------------------------${requestScope.xxx}

3.session--------------------------${sessionScope.xxx}

4.application----------------------${applicationScope.xxx}

通过el获取时,如果没有查找到,会返回"".

关于.与[]区别

[]与.在使用方式上是一样的.但是如果名称中包含了"."或"_"等特殊字符,就必须使用[]来获取.例如

request.setAttribute("login.message","登录失败");

${requestScope.login.message}
错误的

${requestScope["login.message"]}正确的

如果没有写范围,会默认从page,request,session.application依次查找

Øpage域查找

Ørequest域查找

Øsession域查找

Øapplication域查找

Ø全域查找

EL表达式获取复杂数据

Ø获取数组中数据

Ø获取List中数据

Ø获取Map中数据

EL表达式之javaBean导航

如果在域中保存的是javaBean对象,那么也可以使用EL表达式来访问javaBean的属性,因为EL表达式只做读操作,所以javaBean一定要为属性提供get方法,而对set方法没有要求。

使用EL表达式获取javaBean属性就是javaBean导航。

El表达式执行运算

常用运算符介绍

算术运算符

Ø关系运算符

Ø逻辑运算符

Ø三元运算符

关于运算符使用注意事项

ØEL表达式不可以嵌套

${a+${b}}这种是不允许的。

ØEL中的加号问题

EL表达式中加号两边必须是数字

empty运算符介绍

empty我们在开发中检查对象是否为null或“空”或判断容器size是否为0

El表达式内置对象

EL表达式11个内置对象介绍

EL表达式的11个内置对象。

11个内置对象如下所示:

●pageScope

●requestScope

●sessionScope

●applicationScope

●param;

●paramValues;

●header;

●headerValues;

●initParam;

●cookie;

●pageContext;

其中,pageScope,requestScope,sessionScope,applicationScope是域相关的内置对象,这里我们就不再多说。

这11个内置对象中,有10个内置对象的类型是Map类型,只有pageContext的类型不是Map类型,它的类型是PageContext。

关于pageContext内置对象介绍

EL表达式的11个内置对象中,有10个内置对象的类型是Map类型,只有pageContext的类型是PageContext。

它的使用类似于我们jsp的内置对象pageContext,.通过pageContext对象可以获取其他内置对象的任意的属性值。

常用操作:

${pageContext.request.contextPath}

关于请求参数相关内置对象介绍

请求参数相关的内置对象是:

●param:

该内置对象的类型是Map,可以用来获取值为单值的请求参数,其中key指的是请求参数的名称,value指的是请求参数的值,使用param获取请求参数与request.getParameter()方法一样。

●paramValues:

该内置对象的类型是Map,可以用来获取值为多值的请求参数,其中key是参数名,value是多个参数值组成的字符串数组。

注意,在使用EL获取参数时,如果参数不存在,返回的是空字符串,而不是null。

这一点与使用request.getParameter()方法是不同的。

关于请求头相关内置对象介绍

与请求头相关的内置对象是:

●header:

该内置对象的类型是Map,用来获取值为单值的请求头信息,其中key代表的是请求头名称,value代表的是请求头的值;

●headerValues:

该内置对象的类型是Map,用来获取值为多值的请求头信息,key代表的是请求头名称,value代表的是请求头的多个值。

关于全局初始化参数相关内置对象介绍

我们再学习Servlet时,讲过在web.xml文件中配置全局初始化参数,并且全局初始化参数可以使用ServletContext对象获取,现在在EL表达式中内置了一个与初始化参数相关的对象:

●initParam:

该内置对象的类型是Map,用来获取web.xml文件中标签的参数值,其中key代表的是参数名,value代表的是参数值。

关于cookie相关内置对象介绍

EL表达式也内置一个名为cookie的对象,该内置对象与cookie相关,如下:

●cookie:

该内置对象的类型为Map,其中key是Cookie的名字,value是Cookie对象本身。

El函数使用

El函数库介绍

EL函数库是由第三方对EL的扩展,我们现在学习的EL函数库是有JSTL提供的,JSTL我们会在后面的课程中详解。

EL函数库就是定义了一些有返回值的静态方法,然后通过EL表达式来调用它们

在jsp页面中使用taglib指令导入EL函数库,就可以在页面中使用函数库中的方法。

另外,导入的函数库可以使用的前提是,我们的项目中有相关的jar包

El函数库使用

要使用E

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1