jsp标签&EL表达式

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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-INF\lib下。

            注:如果使用的是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。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航