7-EL、JSTL、自定义标签、过滤器

更新时间:2023-05-12 23:44:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

EL、JSTL、自定义标签、过滤器

本章目标

理解并会使用EL 理解并会使用常用的JSTL标签 描述过滤器 理解过滤器生命周期 实现过滤器

为什么需要EL和JSTL

JSP标准动作的局限一般是操作JavaBean的属性 JavaBean的属性只能为基本数据类型 不能进行逻辑操作

如何解决这个问题EL和JSTLpublic class School{ 请求 private Teacher teacher; private Student student; 响应 …//属性的getter、setter方法 }

JSP 页面静态内容 动态内容

JavaBean属性不是基本类 型,如何进行读取和赋值

什么是EL

什么是ELEL即Expression Language(表达式语言)

EL的功能与<jsp:getProperty />类似 简化<jsp:getProperty />

EL的语法${ EL exprission } ${ } 或 ${ bean['name'] }${}实质是调用bean的getName()方法

EL的使用

EL在output.jsp中的使用<%@page contentType="text/html; charset=GBk"%> <html> param是EL的隐式对象,等价 <head> 于request.getParameter("name"); <title>EL的使用</title> <jsp:useBean id= " bean" class="javaee.sg.ch07.Simplebean" scope="request" /> <jsp:setProperty name= " bean" property="name" value="${}" /> <jsp:setProperty name= " bean " property="age" value= "25" /> </head> <body> 姓名:${} 年龄:${bean.age} EL表达式 EL表达式更简洁、易懂 </body> </html> output.jsp

什么是JSTL

为了实现页面无脚本,还要借助于JSTL 什么是JSTLJSTL(JavaServerPages Standard Tag Library)JSP标准标 签库

JSTL 的优点

提供一组标准标签

可用于编写各种 动态 JSP 页面

用于访问数据库

JSTL标准标签库介绍

JSTL标准标签库内的标签JSTL标准标签库

核心标签库

SQL标签库 update

通用标签 set remove out

条件标签

迭代标签

param query

if

forEach

JSTL的使用

使用JSTL的步骤创建Web工程,选择JSTL1.1 在JSP页面添加taglib指令 使用JSTL标签…… <%@ taglib uri="/jsp/jstl/core" prefix="c"%> ……

通用标签

通用标签的使用set out remove

插入使用核心标签的指令 … <%@ taglib uri="/jsp/jstl/core" prefix="c"%> <body> <c:set var= "example" value="${100+1}" scope="session" /> <c:out value="${example}"/> set 标签用于给变量 out 标签在页面上显示信息或变量值 设置值和作用范围

scope= "page|request|session|application" <c:remove var= "example" scope="session"/> </body> remove 标签用于删除作用域内的变量 …

通用标签示例

通用标签的使用Books2.jsp …… <jsp:useBean id= "titlesBean" class="javaee.sg.ch03.TitlesBean" />

<c:set var=" titles" value="${titlesBean .titles}" scope="session" /> …… 等价等价 …… <% TitlesBean titlesBean = new TitlesBean(); List titles = titlesBean.getTitles(); session.setAttribute( "titles", titles ); %> …… books.jsp

条件标签示例 使用JSTL实现登录验证 -- register2

.jsp

<%@ taglib uri="/jsp/jstl/core" prefix="c"%> <jsp:useBean id="userManager" class="erManager" scope="request" /> <jsp:setProperty name="userManager" property="name" param="loginName" /> <jsp:setProperty name="userManager" property="password" 给对象的属性赋值 param="password" /> <c:if test="${userManager.valid}"> <jsp:forward page="books2.jsp" /> </c:if> <c:if test="${!userManager.valid}"> <jsp:forward page="register.html" /> </c:if> 调用getValid()方法,进行用户验证

如果返回true,转到books2.jsp, 否则返回到注册页面

条件标签

条件标签的使用if标签…… <%@ taglib uri="/jsp/jstl/core" prefix="c"%>var指定test条件的变量的名称 <body> <c:if test= "${ 条件运算 }" var= "varName" scope= "page" /> //条件为true时,执行的代码 scope指定范围 </c:if> test指定条件 …… page|request|session|application 运算符包含:,<,==,and等

常见错误 JSTL标签使用的jar包

加载JstlCoreTLV类失败

JstlCoreTLV类在 standard.jar包内 解决办法:把jstl.jar、standard.jar 拷贝到项目的WEB-INF/lib下

常见错误 部署描述文件路径错误

标签的部署描述文件路径错误

应该是uri="/jsp/jstl/core" …… <%@ taglib uri="/jstl/core" prefix="c"%> ……

迭代标签示例 迭代标签实现for循环功能

books2.jsp <%@ taglib uri="/jsp/jstl/core" prefix="c"%> 使用迭代标签实现for循环功能 <%@page import="javaee.sg.ch03.TitlesBean"%>

<jsp:useBean id= "titlesBean" class="javaee.sg.ch03.TitlesBean" /><body> <c:set var= "titles" value="${titlesBean.titles}" scope="session" /> <c:forEach var="currentBook" items="${sessionScope.titles}"> …//显示书籍信息 </c:forEach> </body>

迭代标签

迭代标签的使用forEach… <%@ taglib uri="/jsp/jstl/core" prefix="c"%> <body> <c:forEach var= "varName" items= "collection" >

//循环内容</c:forEach> </body> …

var指定集合内 数据的变量名称

items指定要遍 历的集合对象

迭代标签与for的关系 迭代标签与for循环的对应关系 -- books2.jsp… <jsp:useBean id= "titlesBean" class="javaee.sg.ch03.TitlesBean" /> <c:set var= "titles" value="${titlesBean.titles}" scope="session" /> <c:forEach var="currentBook" items="${sessionScope.titles}"> <a href="displayBook.jsp?isbn=${currentBook.ISBN}"> ${currentBook.title},${currentBook.editionNumber} </a> sessionScope是EL表示 等价 </c:forEach> 作用域范围的隐式对象 …

<% for ( int i=0;i<titles.size();i++){ currentBook = ( BookBean ) titles.get(i); %> <a href="displayBook.jsp?isbn=${currentBook.ISBN}"> ${currentBook.title},${currentBook.editionNumber} </a> <% } %>

EL隐式对象

EL隐式对象小结隐式对象

作用域访问对象 pageScope requestScope

参数访问对象

JSP隐式对象

param

pageContext

paramValues sessionScope applicationScope

EL隐式

对象

EL隐式对象介绍对象名称pageScoperequestScope sessionScope applicationScope

说明返回页面范围的变量名,这些名称已映射至相应的值返回请求范围的变量名,这些名称已映射至相应的值 返回会话范围的变量名,这些名称已映射至相应的值 返回应用范围内的变量,并将变量名映射至相应的值

paramparamValues pageContext

返回客户端的请求参数的字符串值返回映射至客户端的请求参数的一组值 提供对用户请求和页面信息的访问

SQL标签

SQL标签可以直接在JSP页面操作数据库中数据 SQL标签的组成setDataSource标签 update标签 query标签 param标签

SQL 标签库

setDataSource

update

query

param

SQL标签的update示例

使用update标签修改数据库中数据

<%@taglib uri="/jsp/jstl/core" prefix="c"%> BookOrder表中数据 <%@taglib uri="/jsp/jstl/sql" prefix="sql"%> …//设置数据源 <sql:update var="order" dataSource="${conn}"> insert into BookOrder(username,zipcode,phone,creditcard,total) values(‘leon', '1000020', ‘8888866666', '12345678901', 50.00) </sql:update> 使用SQL标签在数据表中添加数据

本文来源:https://www.bwwdw.com/article/uure.html

Top