el + jstl 入门

5 篇文章 0 订阅

一、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、付费专栏及课程。

余额充值