有缘则是停泊,无缘则是流浪!

Welcome to Valen's Space!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

JSTL与EL表达式简单应用

Posted on 2009-10-15 17:22  Valen  阅读(759)  评论(0编辑  收藏  举报

Jsp 动作标签 java server page

 //实例化一个bean,给bean的属性赋值
 <jsp:useBean id="ub" class="com.bean.UserBean"></jsp:useBean>
 <jsp:setProperty name="ub" property="uname" value="小强"/>
 <jsp:getProperty name="ub" property="uname"/>


Jstl标签  java standard taglib language

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isELIgnored="true"%>

//page指令中,isELIgnored="true"默认为false,就是值允许EL表达式,设置true则不允许EL表达式

[表达式标签]

1、c:out = 输出标签

<c:out value="" default="" escapeXml=""></c:out>

属性: /*
  * value:值
  * default:默认值
  * escapeXml:默认允许输出特殊字符串
  */
 
 //当没有变量uName时,则输出default的值
 <c:out value="${uName}" default="null值"></c:out>
 //如果escapeXml为false时,则特殊字符不起作用,页面会显示红色的Hello
 <c:out value="<font color=red>Hello</font>" escapeXml="false"></c:out>

2、c:set = 赋值,设置属性

<c:set var="" property="" value="" target="" scope=""></c:set>

属性: /*
  * var:作用域属性
  * property:属性名
  * value:属性值
  * target:bean属性或map值
  * scope:作用域范围{page,request,session,application}
  */
 
 假设有UserBean类,有uName,uPass,uAge3个属性,给UserBean类赋值
 
 //var:版本,如果value值为null,则var属性将被删除,如果value值不为null,var属性被创建
 <c:set var="uName" scope="session">valen</c:set>
 <c:set var="uName" scope="session" value="valen"></c:set>
 //上面两种方式一样,只不过第2种赋值方式为有文本体
 <c:out value="${uName}"></c:out>

 //target:版本,下面这段代码意思是,首先实例化一个UserBean的对象为ub,然后给这个对象的uName

属性赋值放入scope中,名字为ub1,
 //然后将ub1输出,如果ub1没有指定scope,则输出的时候会去4个容器中查找
 <jsp:useBean id="ub" class="bean.UserBean"></jsp:useBean>
 <c:set target="${ub}" property="uname" value="valen"></c:set>
 <c:out value="${ub.uname}"></c:out>

3、c:remove
 
 /*
  * var:要删除的名字
  * scope:从哪个容器里删除,如果未指定,则把所有容器中为改名字的删除
  */

4、c:catch

 /*
  * var:错误属性名
  */

 //将可能会出错的程序外围加入c:catch标签,程序报错后,会记录在var的属性名中,然后将错误信息打印

出来
 <c:catch var="exception" >
  <% int i = 9/0; %>
 </c:catch>
 //exception:java.lang.ArithmeticException: / by zero
 <c:out value="${exception}"></c:out>
 //exception.message相当于exception.getMessage()
 <c:out value="${exception.message}"></c:out>

[流程控制标签] 

5、c:if

 /*
  * test:代表表达式内容为true则执行本体内容
  * scope:取值范围
  * var:用来存储test运算后的结果{true|false}
  */

 //
 <c:if test="${ub.uname=='小白'}">
  <c:out value="登录成功"></c:out>
 </c:if>


6、c:choose、when、otherwise

 /*
  * when test:当条件满足时执行
  * otherwise:否则执行otherwise的语句
  */
 
 <c:choose >
  <c:when test="">
   <c:out value=""></c:out>
  </c:when>
  <c:otherwise >
   <c:out value=""></c:out>
  </c:otherwise>
 </c:choose>

[迭代标签]

7、c:forEach
 
 /*
  * begin:如果指定了items,就从items[begin]开始迭代,如果没有指定就在begin开始,类型为整数
  * end:类型为整数
  * items:要进行迭代的集合
  * step:迭代的步长
  * var:迭代参数的名称
  * varStatus:迭代变量的名称,用来表示迭代的状态
  */

  //${userinfo} 就等于request.setAttribute("userinfo",al);
  <c:forEach items="${userinfo}" var="ub">
    <tr>
     <td align="center"><c:out value="${ub.uname}"></c:out></td>            

         <td align="center"><c:out value="${ub.upass}"></c:out></td>
     <td align="center"><c:out value="${ub.age}"></c:out></td>
     <td align="center"><c:out value="${ub.email}"></c:out></td>         

         <td align="center"><c:out value="${ub.address}"></c:out></td>
   </tr>
 </c:forEach>
 
8、c:forTokens
 
 /*
  * items:
  * delims:以什么字符分割
  */
 <c:forTokens var="token" items="bleu,blanc,rouge|vert,jaune|blanc,rouge"  delims="|,">
   <c:out value="${token}"/>
 </c:forTokens>
[URL标签]

9、c:import
 
 /*
  * url:引入页面,与jsp:include相同
  * 好处:当被引用的页面发生更改时,容器能立刻产生反应
  * 指令引入:是指引入页面也被引入页面完全融合,2个页面的属性可以共用
  */

10、c:param

 /*
  * name:变量名
  * value:变量值
  */
 //param要与import和redirect结合使用,相当于传递参数
 
11、c:redirect
 
 //跳转页面,跳转到b页面,可以把参数data传送过去
    <c:redirect url="b.jsp" >
     <c:param name="data" value="hello,a!"></c:param>
    </c:redirect>

EL表达式应用

 {param.txtName} = request.getParameters("txtName");
 <c:out value="${param.txtName }"></c:out>
 {paramValues.txtCheckBox} = request.getParameterValues("txtCheckBox"); //返回一个数组,可以用

下标取值
 <c:out value="${paramValues.txtCheckBox[0]}"></c:out>