今日内容

l JSTL标签库

l EL函数

l 自定义标签库开发

l JSP模式和案例(*****)

1.1 上次课内容总结

JSP技术:

* JSP:Java Server Pages

* JSP运行原理:

* JSP先会被翻译成Servlet,这个Servlet编译执行.

* JSP脚本元素:

* <%! %> :翻译成全局.

* <% %> :翻译成service方法内部的代码.(不能定义方法)

* <%= %> :翻译成out.print(内容);

* JSP注释:

* HTML的注释 :<!-- HTML的注释 -->

* Java的注释 :// /**/ /***/

* JSP的注释 :<%-- JSP的注释 --%>

* JSP指令:

* page、include、taglib

* page:设置JSP页面的属性.

* include:包含一个页面.

* taglib:JSP引入的标签库.

* JSP内置对象:

* request、response、page、out、exception、session、application、config、pageContext

* JSP动作标签:

* <jsp:forward>

* <jsp:include>

***** 静态包含和动态包含的区别 ?

* <jsp:param>

* <jsp:useBean>

* <jsp:setProperty>

* <jsp:getProperty>

JavaBean及内省:

* JavaBean:就是一个Java类.这个类满足了一定的格式:

* 无参数的构造方法

* 属性私有

* 私有的属性提供public的set和get方法.

* 作用:封装和处理数据.

* 内省:获得JavaBean属性及对应的属性的get和set方法.

* 利用内省完成类似于<jsp:setProperty name=”” property=”*”>

BeanUtils:工具类.

* 使用.

1.2 EL表达式.

1.2.1 EL的概述.

EL:Expression Language(表达式语言)

作用:在JSP中获取域中的值.

* 获取数据 :获得的是域对象中的数据

* 执行运算 :将域中的数据获得到直接运算.

* 提供常见的web对象:

* 调用Java的函数:

语法:${ EL表达式 }

1.2.2 EL获取数据

<h1>使用EL获得数据</h1>

<%

// 向四个域范围存值.

pageContext.setAttribute("name", "pageVal");

request.setAttribute("name", "reqVal");

session.setAttribute("name", "sessVal");

application.setAttribute("name", "appVal");

%>

<h3>传统方式获得值</h3>

<%= pageContext.getAttribute("name") %>

<%= request.getAttribute("name") %>

<%= session.getAttribute("name") %>

<%= application.getAttribute("name") %>

<h3>使用EL表达式获得值</h3>

<!-- EL的好处:1.书写方便. 2.使用EL不会有空指针异常. 3.简写形式-->

${ pageScope.name }

${ requestScope.name }

${ sessionScope.name }

${ applicationScope.name }

简写:${ name } <!-- 简写底层使用pageContext.findAttribute(String name); -->

<h3>使用EL获得数组的数据</h3>

<%

String[] arrs = {"美美","小房","小默"};

pageContext.setAttribute("arrs", arrs);

%>

${ arrs[0] }

${ arrs[1] }

${ arrs[2] }

<h3>使用EL获得List集合的数据</h3>

<%

List<String> list = new ArrayList<String>();

list.add("小柯");

list.add("小宁");

pageContext.setAttribute("list", list);

%>

${ list[0] }

${ list[1] }

<h3>使用EL获得Map集合的数据</h3>

<%

Map<String,String> map = new HashMap<String,String>();

map.put("aaa", "耀阳");

map.put("bbb", "高虎");

map.put("ccc.ddd", "小李");

pageContext.setAttribute("map", map);

%>

${ map.aaa }

${ map.bbb }

${ map["ccc.ddd"] }

<h3>使用EL获得对象的数据</h3>

<%

Person p = new Person();

p.setName("美美");

p.setAge(32);

pageContext.setAttribute("p", p);

%>

获得姓名:${ p.name }

获得年龄:${ p.age }

<h3>使用EL获得对象集合中的数据</h3>

<%

List<Person> pList = new ArrayList<Person>();

pList.add(new Person("小张",23));

pList.add(new Person("小李",28));

pageContext.setAttribute("pList", pList);

%>

${ pList[0].name }

${ pList[0].age }

${ pList[1].name }

${ pList[1].age }

EL表达式

* [] 和 . 区别?

* []放的是下标.(像数组、List集合) . 放的是属性(像Map集合、对象.)

* 如果属性中包含的特殊字符.只能使用[] ${ map["ccc.ddd"] }

1.2.3 EL执行运算

<h1>EL执行运算</h1>

<h3>算数运算</h3>

<%

pageContext.setAttribute("n1", "10");

pageContext.setAttribute("n2", "20");

pageContext.setAttribute("n3", "30");

pageContext.setAttribute("n4", "40");

%>

${ n1 + n2 }

<h3>关系运算</h3>

${ n1 < n2 } ${ n1 lt n2 }<br/>

${ n1 > n2 } ${ n1 gt n2 }<br/>

${ n1 <= n2 } ${ n1 le n2 }<br/>

${ n1 >= n2 } ${ n1 ge n2 }<br/>

${ n1 == n2 } ${ n1 eq n2 }<br/>

${ n1 != n2 } ${ n1 ne n2 }<br/>

<h3>逻辑运算</h3>

${ (n1 < n2) && (n3 < n4) } ${ (n1 < n2) and (n3 < n4) }<br/>

${ (n1 < n2) || (n3 < n4) } ${ (n1 < n2) or (n3 < n4) }<br/>

${ !(n1 < n2) } ${ not (n3 < n4) }<br/>

<h3>三元运算</h3>

${ n1 == n2 ? "n1==n2":"n1!=n2" }

${ user == null ? "user为空":user }

${ not empty user ? "user为空":user }

1.2.4 操作web常见对象:

11个常见的web对象

pageScope :获得pageContext对象中存的数据

requestScope :获得request对象中存的数据

sessionScope :获得session对象中存的数据

applicationScope :获得application对象中存的数据

param :获得请求参数. --- request.getParameter();

paramValues :获得请求参数.返回的是数组. --- request.getParameterValues();

*代码

${ param.name } --- <%= request.getParameter("name") %>

${ paramValues.hobby[0] }${ paramValues.hobby[1] } --- <%= Arrays.toString(request.getParameterValues("hobby")) %>

header :获得请求头信息.获得的是一个key对应一个value的头信息.getHeader();

headerValues :获得请求头信息.获得的是一个key对应多个value的头信息.getHeaders();

* 代码:

<!-- 获得请求头信息 -->

${ header.referer }<!-- referer:网站来源 防盗链 -->

<!-- User-Agent:获得客户端浏览器类型 -->

${ header["User-Agent"] }

initParam :获得全局初始化参数.

<!-- 获得全局初始化参数 -->

${ initParam.name }

${ initParam.pass }

cookie :获得cookie的信息

* ${ cookie.autoLogin.value }

pageContext :获得其他的8个内置对象.

* 获得工程名 ${pageContext.request.contextPath}

* 获得IP地址 ${pageContext.request.remoteAddr}

1.3 JSTL标签库

1.3.1 JSTL概述
什么是JSTL

JSTL(JSP Standard Tag Library,JSP标准标签库)

标签:其实就是一段Java代码.(好处:代码的复用性.)

为什么学习JSTL

1.提供代码的复用性.

2.提高代码的可读性.

JSTL 结合EL 表达式 替换传统页面<%%>

如何使用JSTL

下载JSTL相应jar包:

http://tomcat.apache.org/taglibs/standard/

JSTL的版本:

* JSTL1.0 、JSTL1.1 、JSTL1.2

* JSTL1.0 在JavaEE1.4之前的年代使用.EL表达式没有被纳入官方规范.

* 使用JSTL1.0不支持EL表达式.

* JSTL1.1和JSTL1.2基本一致.(支持EL表达式.)

JSTL的使用:

* 1.引入jar包

* standard.jar

* jstl.jar

* 2.创建一个JSP,再JSP文件中引入JSTL的标签库

JSTL中有很多标签库:核心标签库(core)、fmt标签库(国际化标签库)、xml标签库(操作XML)、sql标签库(操作sql)、函数库(fn)

* 引入标签库:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

* 3.使用标签库

jstl jar 包

https://yunpan.cn/cYg4dvvFSWDbW  访问密码 1fac

jstl的更多相关文章

  1. JSP 标准标签库(JSTL)

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...

  2. JSTL标签 参考手册

    前言 ========================================================================= JSTL标签库,是日常开发经常使用的,也是众多 ...

  3. JavaWeb_day08_EL JSTL

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day08 EL JSTL EL表达式 语法:${} ...

  4. java web学习总结(三十) -------------------JSTL表达式

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  5. [Java] JSP笔记 - EL、JSTL 常用标签

    一. 什么是 EL 语言 表达式语言(EL)是 JSP 2.0 引入的一种计算和输出 Java 对象的简单语言. 二.EL 语言的作用 为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMASc ...

  6. JSTL 操作符

    el表达式的取值默认顺序:     pageScope  requestScope  sessionScope  applicationScope     结构,采用.导航,也称为存取器   ${us ...

  7. JSP页面JSTL提供的函数标签EL表达式操作字符串的方法

    首先在jsp页面导入标签<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions&quo ...

  8. JSTL标签库

    JSP页面作为内嵌java的Html简化了Servlet在控制页面显示的语法,但JSP脚本中的表达式功能不够强大,语法也稍显繁杂,EL(Expression Language)表达式语言的出现能够大大 ...

  9. 重温JSP学习笔记--与日期数字格式化有关的jstl标签库

    上一篇笔记写的主要是JSTL的core标签库,如果想对一些数字或者日期做一些操作或者在网页上显示指定格式的数字或日期,jstl还提供了另一个fmt标签库,这里简单介绍一下: 第一步,导入标签库: &l ...

  10. 重温JSP学习笔记--JSTL标签库

    以前写jsp的时候对jstl标签库是有些抵触的,因为我觉得嵌入java代码的方式几乎无往不利,没有必要使用标签库,不过这次复习还是好好地学习了一下,发现这个还是很有用处的,用得好能省不少事,JSTL是 ...

随机推荐

  1. selenium phantomjs 关闭问题

    一个获取供应商余额的项目中,使用了 selenium 来爬虫,原因是获取余额不用太频繁,对性能要求不高.第二是 selenium 更好应对各种页面. 项目中,selenium webdriver使用了 ...

  2. js 数组处理函数

    本文转载自有有<js 数组处理函数> concat 将参数列表连接到原数组后面形成一个新的数组并返回,原有数组不受影响. var arr = ["a","b& ...

  3. C#进阶系列——MEF实现设计上的“松耦合”(一)

    前言:最近去了趟外地出差,介绍推广小组开发的框架类产品.推广对象是本部门在项目上面的同事——1到2年工作经验的初级程序员.在给他们介绍框架时发现很多框架设计层面的知识他们都没有接触过,甚至没听说过,这 ...

  4. 开发haproxy管理平台

    1.说明:该脚本仅适用于Linux操作系统2.使用方法: 在该脚本同级目录下要创建一个名字叫做 haproxy 的文件 haproxy 文件内容如下 global log 127.0.0.1 loca ...

  5. Centos7下安装python,查看python版本

    安装Centos的时候,一般会自带默认安装python2.x 一般用python -V可以查看python版本. 我当时安装的时候,运行了那个语句,但是却显示了一大堆出来,虽然里面也带有版本信息,但是 ...

  6. OpenLayers的定制

    最近因为工作的需要,把主流的的一些GIS的javascript库看了一遍,主要是ArcGIS Server API for Javascript,Openlayers和Leaflet. 先说说ArcG ...

  7. 解决:error: .repo/manifests/: contains uncommitted changes

    repo sync同步时提示出错:          error: .repo/manifests/: contains uncommitted changes 解决方法: 1.cd 进入.repo/ ...

  8. 前端构建工具:gulp的配置与使用

    安装gulp 因为gulp是基于node的管理工具,所以要先安装nodejs安装nodejsnodejs下载地址:中文站:http://nodejs.cn/ 英文站:https://nodejs.or ...

  9. Leetcode 285. Inorder Successor in BST

    Given a binary search tree and a node in it, find the in-order successor of that node in the BST. 本题 ...

  10. Android开发笔记之《远程控制(MQTT|mosquitto) && (ProtocalBuffer | GRPC)》

    Android推送方案分析(MQTT/XMPP/GCM): http://www.open-open.com/lib/view/open1410848945601.htmlMQTT官网: http:/ ...