el + jstl 入门

 

一、el + jstl 入门

1. EL 全名为Expression Language。它是一种数据访问语言

    el 表达式

2. EL 能实现如下功能:

    1) 使用变量访问web域中存储的对象    ${user }  从page, request, session, application

    2) 访问javabean的属性 ${user.address.city }  usr为javabean对象存于域中

    3) 执行基本的逻辑运算,  如大于小于的比较

    4) 直接使用隐式对象, 有11个隐式对象

    5) 调用 el 函数, 可以自定义函数

3. el 表达式用在哪里

    1) 在 jsp 页面直接输出数据

    2) 在标签中使用el直接为属性赋值

 

4. el 表达式获取数据

    在jsp页面使用el表达式可以轻松地获得web域中的对象

    并对 javabean 、 数组、 list 、 map 进行取值

 

5. 需要对 web 域中的 list 和map 集合进行迭代就需要结合 jstl 迭代标签

 

JSTL是sun公司开发的一套标签库

使用JSTL可以在页面中实现一些简单的逻辑,从而替换页面中的脚本代码

 

在页面中使用JSTL标签需完成以下2个步骤:

1) 导入jstl.jar和standard.jar这两个JSTL的jar文件。

2) 在JSP页面中使用<%@ taglib url=“”  prifix=“” %>元素导入标签库。

 

最常用的 jstl 标签为 forEach 和 if 标签

<c:foreach var=”” items=””>

<c:if test=””>

 

6. el表达式可以进行逻辑运算

 

7. el表达式中的保留关键字

 

重点: el 取值  从四个域中取

                取出javabean的属性

                取出容器的内容  数组  list map

        jstl标签

                导入jar包

                在jsp页面通过taglib指令导入标签库

                forEach迭代标签   if条件判断

 

二、 el 中的11 个隐式对象

 

隐含对象名称                    描       述

pageContext        对应于JSP页面中的pageContext对象

pageScope        代表page域中用于保存属性的Map对象[page对象中有一个保存属性(通常由getAttribute函数获得)的 map 成员变量 ]

requestScope    代表request域中用于保存属性的Map对象

sessionScope    代表session域中用于保存属性的Map对象

applicationScope    代表application域中用于保存属性的Map对象

param                表示一个保存了所有请求参数的Map对象

paramValues            表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个string[]

header                表示一个保存了所有http请求头字段的Map对象

headerValues    同上,返回string[]数组。注意:如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”]

cookie            表示一个保存了所有cookie的Map对象

initParam        表示一个保存了所有web应用初始化参数的map对象

 

隐式对象的具体用途

1. pageContext 

    获得servlet上下文路径 (web应用名)

 

2. pageScope、requestScope、sessionScope、applicationScope

    准确地获得四个域中的对象

 

3. param、paramValues

    获得请求参数,一般用于做表单的回显

 

4. header、headerValues

    获得请求参数 

 

5. cookie

    获得浏览器发送的cookie

6. initParam

    获得web 初始化参数

 

三、 el 函数

1. 我们可以开发自定义函数,用于调用java类的方法

    案例: 对页面输出的内容进行 html 转义

    实现步骤:

    1) 编写一个java类, 定义一个静态方法

    去tomcat的例子中拷贝一个现成的

    %tomcat安装目录%\webapps\examples\WEB-INF\classes

    2) 编写标签库描述符(tld)文件,在tld文件中描述自定义函数

    找个现成的修改一下

    %tomcat安装目录%\webapps\examples\WEB-INF\jsp2

    3) 在jsp页面中导入标签库 即可使用函数

    <%@ taglib prefix="myfn" uri="/WEB-INF/myfn.tld" %>

<%@ taglib prefix="myfn" uri="http://www.itcast.cn/myfn" %>

 

帖子的内容 :  ${myfn:transfer(requestScope.data) }

 

2. sun 公司针对常用的字符串处理在jstl技术中提供了el函数中

 

==============el表达式==============

   数据访问语言  用于取数据

   从四个域取对象

   取javabean的属性

   取容器的元素 arr list map

 

   11个隐式对象

   pageContext、param、paramValues、header、headerValues

   pageScope、requestScope、sessionScope、applicationScope

   cookie、initParam

 

   el自定义函数

   1) 写一个java类,定义一个静态方法

   2) 在 WEB-INF目录下写 tld文件

   3) 在jsp页面引入tld标签库 直接使用

 

-------el的应用------

1, el表达式生成正确的链接

<form action="${pageContext.request.contextPath }/servlet/Servlet1"

 

project->properties->web project settings

    修改 Context root

    之后链接依然正确

 

 

2, requestScope等于request的所有属性, getAttributes()可以遍历出

    requestScope中所有内容

 

-----------------------------------

============ jstl标签==================

    导入两个jar包 Jstl.jar   Standard.jar

 

    在jsp页面要声明引入标签库

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

 

    forEach 迭代标签

    if 条件判断

 

 ----------------------

 

el表达式:

 

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

 

${name}会去4个域对象中查找page,request,session,applicaion

如果找不到显示 "" 空串

 

${usr.usrname} 调用usr.getusrname()

 

el表达式是一种表现层的技术

 

集合与数组都: ${list[3]}

map : ${map.key}

map : ${map["1"]}

 

----------------------------------

jstl简单逻辑:

 

jstl.jar

standard.jar

 

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

 

迭代items中指定的元素, 每次将元素以var为关键字存入page域

标签体执行次数为容器的长度

<c:foreach var="element" items="${arr}">

    ${element}

</c:foreach>

 

<c:foreach var="entry" items="${map}">

    ${entry.key} = ${entry.value}

</c:foreach>

 

 

<c:if test="true">

    statments

</c:if>

 

<c:if test=${1>1}>

    statments

</c:if>

 

<c:if test=${usr==null}>

    请登录

</c:if>

<c:if test=${usr!=null}>

    你好 ${usr.usrname} .

</c:if>

 

重点:

    el取值, 从4个域中取, 取出javabean的属性

    取出容器的内容, 数组,list,map

    ${ 3 mod2 }

 

    jstl标签:

        导入jar包, 在jsp页面,通过tablib指令导入标签库

        foreach迭代, if判断

--------------------------

request内置了3个map,  attributes, parameters, headers

                                                |            |

                                   requestScope   param

------------------

el:

    ${pageContext}

 

    从url中取出参数

    ${param}

    ${paramValues}

 

    取出请求头

    ${header}

    ${headerValues}

 

    ${pageScope}

    ${sessionScope.usr.usrname}

    ${requestScope} request中map

    ${applicationScope}

 

    ${cookie} 

    ${cookie.JSESSIONID.name} 

    ${cookie.JSESSIONID.value}  Map<name,cookie>

 

    所有初始化参数

    ${initParam}

 

---------------------

request.getContextPath()获得webapp名称

${pageContext.request.contextpath}

-----------------------

 

${pageContext.request.parameter}

${param}

 

------------------------------

 

native2ascii命令

往properties里, 写的中文要经过ascii编码

ResouceBoundle

 

----------------------

使用超链接提交时, 可以使用javascript

生成一个表单, 转为post方式

---------------

 

www.sina.com

sina.com    域名

www            主机名

mail        主机名

---------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值