zoukankan      html  css  js  c++  java
  • jsp标签&EL表达式

    1.jsp标签和el表达式
        (1)什么是jsp标签?
            jsp标签用来替换jsp文件中的java代码,容器遇到jsp标签之后,会依据标签找到标签类然后执行。
            注: 因为直接在jsp当中写java代码,不利于jsp文件的维护(比如,将包含有java代码的jsp交给美工去修改就很不方便),所以,
                  sun才制订了jsp标签技术规范。
                使用jsp标签技术,有两大优点:
                a.jsp文件维护方便。
                b.方便代码的复用。
        (2)什么是el表达式?
            是一套简单的运算规则,用于给jsp标签的属性赋值,也可以直接输出。
        (3)el表达式的使用
            1)访问bean的属性  (a1.jsp)
                a.方式一
                ${user.name} 依次从pageContext,request,session,application中查找绑订名称为"user"的对象,找到该对象之后,
                会调用该对象的"getName"方法,最后输出该方法的运行结果。
                    注:
                            a1. el表达式会将null转换成 ""输出。
                            a2. 如果依据绑订名找不到该对象,会输出""。
                            a3.可以使用pageScope,requestScope,sessionScope,applicationScope来指定查找范围。           
                b.方式二
                    ${user["name"]}   
                    注:
                            b1. []里面可以使用绑订名。
                            b2. []里面可以使用从0开始的下标,用来访问数组中的某个元素。               
            2)做一些简单的运算,运算结果可以用来给jsp的标签属性赋值,也可以直接输出。(a2.jsp)
            a.算术运算+,-,*,/,%
                注: + 只能求和,不能够连接字符串。
            b.关系运算 >,>=,<,<=,==,!=
            c.逻辑运算&&,||,!
            d.empty运算
                empty用来判断集合是否为空,或者是否是一个空字符串。
           3)读取请求参数值 (a3.jsp)
            ${param.username}等价于request.getParameter("username");
            ${paramValues.city}等价于request.getParameterValues("city");                                        
      (4)jstl标签的使用
            1)jstl是什么?     (java standard tag lib)
                apache公司开发的一套jsp标签,后来捐献给了sun,sun将其命名为jstl。
            2)如何使用?
                step1,将jstl相关的jar文件拷贝到WEB-INFlib下。
                注:如果使用的是javaee5.0或者以上版本,一般不用拷贝了。有些tomcat的版本不带有这个jstl的jar文件,需要拷贝。
                step2,使用taglib指令引入要使用的标签。
                    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
                    uri:指定命名空间(namespace)。
                    prefix:命名空间的前缀。

                注:uri在jstl-1.2.jar包下的META-INF下的c.tld中

                <short-name>c</short-name>
                <uri>
    http://java.sun.com/jsp/jstl/core</uri>

            3)jstl中的几个核心标签
               a.if标签  (c1.jsp)
                 <c:if test="" var="" scope="">标签体</c:if>   
                 当test属性值为true,会执行标签体。
                test属性可以使用el表达式来赋值
                var属性:指定绑订名。
                scope属性:指定绑订范围,可以是"page","request","session","application"。

              性别:<c:if test="${user.gender=='m'}">男</c:if><br/>
             <c:if test="${user.gender=='f'}">女</c:if><br/>
            
              性别:<c:if test="${user.gender=='m'}">男</c:if><br/>
             <c:if test="${user.gender!='m'}">女</c:if><br/>
            
              性别:<c:if test="${user.gender=='m'}" var="flag" scope="page">男</c:if><br/>
             <c:if test="${!flag}">女</c:if><br/>


                b.choose标签 (c2.jsp)(相当于java中的if…else if…)
                    <c:choose>
                        <c:when test=""></c:when>
                        <c:otherwise></c:otherwise>
                    </c:choose>
                    when可以出现1次或者多次,当test属性值为true时,执行标签体的内容。otherwise可以出现0次或者1次。

            <c:choose>
                 <c:when test="${user.gender=='m'}">男</c:when>
                 <c:when test="${user.gender=='f'}">女</c:when>
                 <c:otherwise>保密</c:otherwise>
             </c:choose>


               c.forEach标签 (c3.jsp)
                    用来遍历集合或者数组
                    <c:forEach items="" var="" varStatus=""></c:forEach>
                    items属性: 指定要遍历的集合或者数组,可以使用el表达式。
                    var属性:指定绑订名,绑订范围是pageContext(每一次从集合或者数组中取一个元素绑订到pageContext上)。
                    varStatus属性:指定绑订名,绑订值是一个封装了当前遍历状态的一个对象(该对象提供了一些方法来获得当前遍历的状态)。
                        getIndex(): 获得当前正在被遍历的元素的下标(从0开始)。
                        getCount(): 获得当前是第几次遍历。

              <c:forEach items="${users}" var="user" varStatus="s">
                     <tr class="row${s.index%2+1 }">
                         <td>${user.name }</td>
                         <td>${user.age }</td>
                         <td>${user.gender }</td>
                         <td>${s.index }</td>
                         <td>${s.count }</td>
                     </tr>
                 </c:forEach>

           
            (5)自定义标签(简单标签技术) (web10-2)
                step1,写一个java类,继承SimpleTagSupport类。 (HelloTag.java)
                step2,override doTag方法,在方法里,编写相应的处理逻辑。
                step3,描述标签(.tld文件)(mytag.tld)

               <body-content>有三个值

                <body-content>empty</body-content>

                empty:该标签没有标签体。

         scriptless:该标签可以有标签体,但是标签体的内容不能够包含有java代码<%  %>,<%=  %>,<%!   %>。

         JSP:该标签可以有标签体,并且标签体的内容可以含有java代码。但是。只有复杂标签技术支持该值。简单标签技术不支持JSP。

  • 相关阅读:
    全国城市经纬度
    CentOS下SSH无密码登录的配置
    Nginx 1.9+PHP5.6 环境搭建
    Sphinx 2.2.11-release reference manual
    JVM 内存管理机制
    solr 3.5.0 与 tomcat 7.0.5 整合配置
    lucene 分词实现
    lucene 索引 demo
    lucene 搜索demo
    Lucene 简单API使用
  • 原文地址:https://www.cnblogs.com/gaochaojin/p/4823002.html
Copyright © 2011-2022 走看看