• JavaEE5 Tutorial_Jsp,EL


    Jsp的各种元素在转化为servlet时处理是不一样的:
    指令,控制web容器如何处理页面
    脚本,被插入到生成的servlet里
    EL表达式,作为参数传递到解析器
    get/set Property,变成方法,调用bean
    jsp:include/forward,变成servlet相关api
    jsp:plugin,变成浏览器标签
    自定义标签,变成方法,调用相关实现

    ParseException会在编译jsp页面过程中产生

    _jspInit(),_jspService(),_jspDestroy()

    <%@ page buffer=”none|xxxkb” %>
    <%@ page contentType="text/vnd.wap.wml"%>
    <%@ page contentType="text/html;charset=UTF-8" %>
    <%@ page pageEncoding="UTF-8" %>

    <%@ page errorPage=”file_name”%>
    <%@ page isErrorPage="true" %>
    这个错误页面能得到一个javax.servlet.jsp.ErrorData对象
    可以用EL表达式处理
    ${pageContext.errorData.statusCode}
    ${pageContext.errorData.throwable}
    ${pageContext.errorData.throwable.cause}

    <%@pageisThreadSafe="true|false" %>声明这个jsp是多线程安全的,而且默认是true
    你要手动处理这个页面的所有能并发访问的变量
    即时是false,application和session域的属性和bean也要处理同步,一般不要设成false

    EL表达式有两种:${}会立即计算,#{}则会延后计算(此写法可略)
    前者是Jsp方式,后者是Jsf方式为JSP2.1新增
    他们只能用做静态文本,或是作为某个标签的属性
    <fmt:formatNumber value="${sessionScope.cart.total}"/>
    ${}都是只读的,只能调用字段
    <h:inputTextid="name" value="#{customer.name}" />
    #{}则可以读写,并且能调用方法

    调用字段的El可以调用以下对象的字段或属性:
    javaBean组件,集合,枚举,隐式对象
    ${customer}会按page,request,session,application的顺序寻找customer的值,直到返回null
    隐式对象则会返回这个Object

    public enum Suit{hearts,spades,diamonds,clubs}
    ${mySuit== "hearts"}这样可以直接访问mySuit枚举的常量Suit.hearts
    .和[]用来访问其他对象的属性,集合的成员
    ${customer.name}或${customer["name"]},单引号也可以
    ${customer.address["street"]}组合使用也可以
    ${customer.orders[1]}可以访问数组或list成员
    ${customer.orders.socks}可以取出map下的与"socks"对应的value

    ${"literal"}也可以用常量或直接计算
    ${customer.age+20}
    ${57}
    ${true}
    ${null}
    EL表达式里的字符串也可以是单引号

    <some:tagvalue="some${expr}${expr}text${expr}"/>也可以这样写
    会依次计算每个EL然后像字符串连接起来
    EL的结果跟期望的类型不匹配的话会自动转换

    调用方法的EL只能调用public非static方法,而且只能用作标签的属性,不能作为静态文本

    <my:tagsomeAttribute="sometext#{more${text" />
    前面加表示不处理此EL
    或是在web.xml里配置
    <jsp-property-group>
    <deferred-syntax-allowed-as-literal>
    true
    </deferred-syntax-allowed-as-literal>
    </jsp-property-group>

    <jsp-property-group>
    <el-ignored>true</el-ignored>
    </jsp-property-group>
    或是
    <%@page ... deferredSyntaxAllowedAsLiteral="true" %>
    <%@page isELIgnored="true" %>

    ${’${’}exprA}的结果是${exprA}
    ${exprA}的结果是${exprA}

    隐式对象:
    pageContext,下面有servletContext,session,request,response
    param,paramValues,header,headerValues,cookie,initParam
    pageScope,requestScope,SessionScope,applicationScope
    ${}里面是个隐式对象的话会返回这个对象,而不是普通的value

    empty是一个运算符,判断是否为null或空
    ${!empty param.Add}
    ${pageContext.request.contextPath}
    ${sessionScope.cart.numberOfItems}
    ${param[’mycom.productId’]}
    ${header["host"]}
    ${requestScope[’javax.servlet.forward.servlet_path’]}里面有点的只能用[]


  • 相关阅读:
    损失函数
    DPM 目标检测1
    编程题
    枚举型和元类
    python 多继承
    网络基础Cisco路由交换一
    网络基础tcp/ip协议五
    网络基础tcp/ip协议四
    网络基础tcp/ip协议三
    网络基础tcp/ip协议二
  • 原文地址:https://www.cnblogs.com/gcg0036/p/4143605.html
Copyright © 2020-2023  润新知