EL表达式、JSTL

一、EL表达式

1.

  • EL表达式的全称是:Expression Language,表达式语言
  • 作用:代替jsp页面中的表达式脚本<%=  %>jsp页面进行数据的输出,因为EL输出数据时更简洁。
  • 格式:$ { 表达式 }
  • EL表达式输出null值时,输出的是空串。jsp表达式脚本在输出null值时,输出的是null字符串。

2.EL表达式搜索域数据的顺序

EL表达式主要在jsp页面中输出数据,主要输出四个作用域对象的数据,当四个域中有相同的数据时,EL表达式按pageContext,request,session,application顺序找数据。

想输出指定域中的内容,利用隐含对象

例如 :  $ { pagescop.key }

3.EL表达式输出

EL输出AA时是找的AA的Get()方法

含有特殊字符时:

4.运算

关系运算:${ param.password1 = =param.password2 }

关系运算符

说明

范例

结果

== 或 eq

等于

${5==5}或${5eq5}

true

!= 或 ne

不等于

${5!=5}或${5ne5}

false

< 或 lt

小于

${3<5}或${3lt5}

true

> 或 gt

大于

${3>5}或{3gt5}

false

<= 或 le

小于等于

${3<=5}或${3le5}

true

>= 或 ge

大于等于

${3>=5}或${3ge5}

false

逻辑运算

逻辑运算符

范例

结果

&&或and

交集${A && B}或${A and B}

true/false  同真则真 

||或or

并集${A || B}或${A or B}

true/false   同假则假

!或not

非${! A }或${not A}

true/false  取反

 

算数运算:

Empty 运算符:

Empty 运算符主要用来判断值是否为空(NULL,空字符串,空集合,空数组),为空输出True。

条件运算符:

${ A ? B : C}

五、EL表达式中的11个隐含对象

例如:${ pageContext.九大内置对象  } 

 

 

 

一、page 对象
    page对象代表JSP本身,更准确地说它代表JSP被转译后的Servlet,它可以调用Servlet类所定义的方法。
        
 二、config 对象
    config 对象里存放着一些Servlet 初始的数据结构。
    config 对象实现于javax.servlet.ServletConfig 接口,它共有下列四种方法:
        public String getInitParameter(name)
        public java.util.Enumeration getInitParameterNames( )
        public ServletContext getServletContext( )
        public Sring getServletName( )

三、request 对象
    request 对象包含所有请求的信息,如:请求的来源、标头、cookies和请求相关的参数值等等。
    request 对象实现javax.servlet.http.HttpServletRequest接口的,所提供的方法可以将它分为四大类:
    1.储存和取得属性方法;
        void setAttribute(String name, Object value)    设定name属性的值为value
        Enumeration getAttributeNamesInScope(int scope)    取得所有scope 范围的属性
        Object getAttribute(String name)                取得name 属性的值
        void removeAttribute(String name)                移除name 属性的值
    2.取得请求参数的方法
        String getParameter(String name)                取得name 的参数值
        Enumeration getParameterNames( )                取得所有的参数名称
        String [] getParameterValues(String name)         取得所有name 的参数值
        Map getParameterMap( )                             取得一个要求参数的Map
    3.能够取得请求HTTP 标头的方法
        String getHeader(String name)                     取得name 的标头
        Enumeration getHeaderNames()                     取得所有的标头名称
        Enumeration getHeaders(String name)             取得所有name 的标头
        int getIntHeader(String name)                     取得整数类型name 的标头
        long getDateHeader(String name)                 取得日期类型name 的标头
        Cookie [] getCookies( )                         取得与请求有关的cookies
    4.其他的方法
        String getContextPath( )                         取得Context 路径(即站台名称)
        String getMethod( )                             取得HTTP 的方法(GET、POST)
        String getProtocol( )                             取得使用的协议 (HTTP/1.1、HTTP/1.0 )
        String getQueryString( )                        取得请求的参数字符串,不过,HTTP的方法必须为GET
        String getRequestedSessionId( )                 取得用户端的Session ID
        String getRequestURI( )                            取得请求的URL,但是不包括请求的参数字符串
        String getRemoteAddr( )                            取得用户的IP 地址
        String getRemoteHost( )                            取得用户的主机名称
        int getRemotePort( )                            取得用户的主机端口
        String getRemoteUser( )                         取得用户的名称
        void etCharacterEncoding(String    encoding)        设定编码格式,用来解决窗体传递中文的问题

 

四、response 对象
    response 对象主要将JSP 处理数据后的结果传回到客户端。
    response 对象是实现javax.servlet.http.HttpServletResponse 接口。response对象所提供的方法。
    1.设定表头的方法
        void addCookie(Cookie cookie)                     新增cookie
        void addDateHeader(String name, long date)        新增long类型的值到name标头
        void addHeader(String name, String value)        新增String类型的值到name标头
        void addIntHeader(String name, int value)         新增int类型的值到name标头
        void setDateHeader(String name, long date)        指定long类型的值到name标头
        void setHeader(String name, String value)        指定String类型的值到name标头
        void setIntHeader(String name, int value)         指定int类型的值到name标头
    2.设定响应状态码的方法
        void sendError(int sc)                             传送状态码(status code)
        void sendError(int sc, String msg)                传送状态码和错误信息
        void setStatus(int sc)                             设定状态码
    3.用来URL 重写(rewriting)的方法    
        String encodeRedirectURL(String    url)            对使用sendRedirect( )方法的URL予以编码

 

五、out 对象
    out 对象能把结果输出到网页上。
    out主要是用来控制管理输出的缓冲区(buffer)和输出流(output stream)。
        void clear( )                                     清除输出缓冲区的内容
        void clearBuffer( )                             清除输出缓冲区的内容
        void close( )                                     关闭输出流,清除所有的内容
        int getBufferSize( )                             取得目前缓冲区的大小(KB)
        int getRemaining( )                             取得目前使用后还剩下的缓冲区大小(KB)
        boolean isAutoFlush( )                            回传true表示缓冲区满时会自动清除;false表示不会自动清除并且产生异常处理
        
 六、session 对象
    session对象表示目前个别用户的会话(session)状况。
    session对象实现javax.servlet.http.HttpSession接口,HttpSession接口所提供的方法
        long getCreationTime()                            取得session产生的时间,单位是毫秒
        String getId()                                     取得session 的ID
        long getLastAccessedTime()                        取得用户最后通过这个session送出请求的时间
        long getMaxInactiveInterval()                    取得最大session不活动的时间,若超过这时间,session 将会失效
        void invalidate()                                取消session 对象,并将对象存放的内容完全抛弃
        boolean isNew()                                    判断session 是否为"新"的
        void setMaxInactiveInterval(int    interval)        设定最大session不活动的时间,若超过这时间,session 将会失效

七、application对象
    application对象最常被使用在存取环境的信息。
    因为环境的信息通常都储存在ServletContext中,所以常利用application对象来存取ServletContext中的信息。
    application 对象实现javax.servlet.ServletContext 接口,ServletContext接口容器所提供的方法
        int getMajorVersion( )                             取得Container主要的Servlet API版本
        int getMinorVersion( )                             取得Container次要的Servlet API 版本
        String getServerInfo( )                         取得Container的名称和版本
        String getMimeType(String file)                 取得指定文件的MIME 类型
        ServletContext getContext(String uripath)        取得指定Local URL的Application context
        String getRealPath(String path)                 取得本地端path的绝对路径
        void log(String message)                         将信息写入log文件中
        void log(String message, Throwable throwable)    将stack trace 所产生的异常信息写入log文件中

  八、pageContext对象
    pageContext对象能够存取其他隐含对象。
    1.pageContext对象存取其他隐含对象属性的方法,此时需要指定范围的参数。
        Object getAttribute(String name, int scope)
        Enumeration getAttributeNamesInScope(int scope)
        void removeAttribute(String name, int scope)
        void setAttribute(String name, Object value, int scope)
    范围参数有四个,分别代表四种范围:PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE、APPLICATION_SCOPE
    2.PageContext对象取得其他隐含对象的方法
        Exception getException( )                        回传目前网页的异常,不过此网页要为error page,
        JspWriter getOut( )                             回传目前网页的输出流,例如:out 
        Object getPage( )                                回传目前网页的Servlet 实体(instance),例如:page
        ServletRequest getRequest( )                    回传目前网页的请求,例如:request
        ServletResponse getResponse( )                    回传目前网页的响应,例如:response
        ServletConfig getServletConfig( )                回传目前此网页的ServletConfig 对象,例如:config
        ServletContext getServletContext( )                回传目前此网页的执行环境(context),例如:application
        HttpSession getSession( )                        回传和目前网页有联系的会话(session),例如:session
    3.PageContext对象提供取得属性的方法
        Object getAttribute(String name, int scope)        回传name 属性,范围为scope的属性对象,回传类型为Object
        Enumeration getAttributeNamesInScope(int scope)    回传所有属性范围为scope 的属性名称,回传类型为Enumeration
        int getAttributesScope(String name)             回传属性名称为name 的属性范围
        void removeAttribute(String name)                 移除属性名称为name 的属性对象
        void removeAttribute(String name, int scope)    移除属性名称为name,范围为scope 的属性对象
        void setAttribute(String name, Object value, int scope)        指定属性对象的名称为name、值为value、范围为scope
        Object findAttribute(String name)                寻找在所有范围中属性名称为name 的属性对象

    九、exception对象
    若要使用exception 对象时,必须在page 指令中设定。<%@ page isErrorPage="true" %>才能使用。
    exception提供的三个方法:
        getMessage( )
        getLocalizedMessage( )、
        printStackTrace(new java.io.PrintWriter(out))

 

 

EL表达式中的11个隐含对象

pageContext, pageScope, requestScope, sessionScope, applicationScope, param, paramValues, header, headerValues, cookies, initParam

这里的数据都是以map方式存放的,获取可用如:param.name, header.User_Agent, cookie.userinfo得到相应的数据。

${requestScope.origin_uri} 获取当前URI

与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。
例如我们要取得用户的请求参数时,可以利用下列方法:
      request.getParameter(String name)
      request.getParameterValues(String name)
在EL中则可以使用param和paramValues两者来取得数据。
      ${param.name}
      ${paramValues.name}

 

 JSP的6个基本动作:

jsp:include         在页面被请求的时候引入一个文件

jsp:forward        把请求转到一个新的页面

jsp:plugin          根据浏览器类型为java插件生成object或embed标记

jsp:useBean     寻找或实例化一个JavaBean

jsp:getProperty    输出JavaBean的某个属性

jsp:setProperty     设置JavaBean的某个属性

 

 

JSP 标准标签库(JSTL)

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。

根据JSTL标签所提供的功能,可以将其分为5个类别。

  • 核心标签
  • 格式化标签
  • SQL 标签
  • XML 标签
  • JSTL 函数

JSTL使用步骤:

1.先导入jstl标签库的jar包到WEB-INF下的lib中。

jstl.jar文件包含JSTL规范中定义的接口和相关类,

standard.jar文件包含用于实现JSTL的.class文件以及JSTL中5个标签库描述符文件(TLD),将两个文件导入项目中。

2.使用任何库,必须在每个 JSP 文件中的头部包含 <taglib> 标签引入标签库。


核心标签

核心标签是最常用的 JSTL标签。引用核心标签库的语法如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
标签描述 
<c:out>用于在JSP中显示数据,就像<%= ... ><c:
<c:set>用于保存数据<c:set  scop=“域对象” var=“键” value=“值”/>
<c:remove>用于删除数据 
<c:catch>用来处理产生错误的异常状况,并且将错误信息储存起来 
<c:if>与我们在一般程序中用的if一样<c:if  test="${12==12}"> 12等于12</c:if>
<c:choose>本身只当做<c:when>和<c:otherwise>的父标签 
<c:when><c:choose>的子标签,用来判断条件是否成立 
<c:otherwise><c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行 
<c:import>检索一个绝对或相对 URL,然后将其内容暴露给页面 
<c:forEach>基础迭代标签,接受多种集合类型 
<c:forTokens>根据指定的分隔符来分隔内容并迭代输出 
<c:param>用来给包含或重定向的页面传递参数 
<c:redirect>重定向至一个新的URL. 
<c:url>使用可选的查询参数来创造一个URL 
List<Book> books=bookService.queryBooks();
 request.setAttribute("books",books);
   request.getRequestDispatcher("pages/manager/book_manager.jsp").forward(request,response);

=========================================================================================
<c:forEach items="${requestScope.books}" var="book">
        <tr>
            <td>${book.name}</td>
            <td>${book.price}</td>
            <td>${book.author}</td>
            <td>${book.sales}</td>
            <td>${book.stock}</td>
        </tr>
  </c:forEach>

格式化标签

JSTL格式化标签用来格式化并输出文本、日期、时间、数字。

引用格式化标签库的语法如下:

<%@ taglib prefix="fmt"  uri="http://java.sun.com/jsp/jstl/fmt" %>
标签描述
<fmt:formatNumber>使用指定的格式或精度格式化数字
<fmt:parseNumber>解析一个代表着数字,货币或百分比的字符串
<fmt:formatDate>使用指定的风格或模式格式化日期和时间
<fmt:parseDate>解析一个代表着日期或时间的字符串
<fmt:bundle>绑定资源
<fmt:setLocale>指定地区
<fmt:setBundle>绑定资源
<fmt:timeZone>指定时区
<fmt:setTimeZone>指定时区
<fmt:message>显示资源配置文件信息
<fmt:requestEncoding>设置request的字符编码

 

JSTL函数

JSTL包含一系列标准函数,大部分是通用的字符串处理函数。

引用JSTL函数库的语法如下:

<%@ taglib prefix="fn"  uri="http://java.sun.com/jsp/jstl/functions" %>
函数描述
fn:contains()测试输入的字符串是否包含指定的子串
fn:containsIgnoreCase()测试输入的字符串是否包含指定的子串,大小写不敏感
fn:endsWith()测试输入的字符串是否以指定的后缀结尾
fn:escapeXml()跳过可以作为XML标记的字符
fn:indexOf()返回指定字符串在输入字符串中出现的位置
fn:join()将数组中的元素合成一个字符串然后输出
fn:length()返回字符串长度
fn:replace()将输入字符串中指定的位置替换为指定的字符串然后返回
fn:split()将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回
fn:startsWith()测试输入字符串是否以指定的前缀开始
fn:substring()返回字符串的子集
fn:substringAfter()返回字符串在指定子串之后的子集
fn:substringBefore()返回字符串在指定子串之前的子集
fn:toLowerCase()将字符串中的字符转为小写
fn:toUpperCase()将字符串中的字符转为大写
fn:trim()移除首尾的空白符

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值