浏览 1865 次
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-24
* 语法: ${表达式} EL: Expression Lanuage(表达式语言) 注意:EL表达式只能在支持Servlet2.4和Jsp2.0的容器上才能使用。 表达式=运算符+操作数 * 运算符 a) 算术运算符:+ - * /(div) %(mod) b) 逻辑元算符:&&(and) ||(or) !(not) c) 比较运算符:>(gt:great than) <(lt:less than) >=(ge:great and equal) <=(le:less and equal) ==(eq:equal) !=(ne:not equal) d) 条件运算符: ? : e) 空运算符: empty:null, "" 说明: 与Java中的运算符比较:多一个空运算符,少赋值运算符 * 操作数 常量 a) 整型 b) 小数 c) 布尔型 d) 字符型(用单引号或双引号均可) e) 空(null) 变量: a) 实质:四个标准范围的属性 b) 变量的搜索顺序:按照范围从小到大的顺序搜索:pageContext < request < session < application c) 变量的访问:可以通过.运算符或者[]运算符访问 隐式对象 a) 与作用范围有关的: pageScope, requestScope, sessionScope, applicationScope b) 与输入有关的: param, paramValues c) pageContext:通过这个隐式对象可以访问到request, session, servletContext d) header, cookie * 使用场合 a) 用于html标签中 b) 与JavaBean结合使用: 创建的JavaBean必须要放到某一个标准范围中,提供相应的get方法进行对象导航 c) 与jstl结合使用 d) 其他用法:el表达式输出Map, List, 数组和对象数组中的值 2、JSTL的使用 * 基本概念:Jsp Standard Taglib Library,主要用于提供无脚本环境 注意:JSTL只能够在支持Servlet2.4和Jsp2.0的容器上才能正常使用。 * 分类 a) 核心标签库:通用标签库,条件标签库,迭代标签库 b) I18N标签库 c) SQL标签库 d) XML标签库 e) 函数库 在使用JSTL的时候,首先要将JSTL库导入到当前工程中,并且在Jsp页面中通过taglib指令将标签库描述符文件导入 * 核心标签库 a) 通用标签库:用于在JSP页面内设置、删除变量和显示变量的值 set: 功能:设置指定范围内的变量值,如果该变量不存在,则创建它。 语法:<c:set value=”value” var=”varName” [scope=”{page|request|session|application}”]/> var:指定变量的名称,value:指定变量的值 scope:指定变量的存储范围,默认为page remove: 功能:用于删除变量 语法:<c:remove var=”varName” [scope=”{page|request|session|application}”]/> var:指定要删除的变量名 scope:指定变量的存储范围 out: 功能:计算表达式并将结果显示在页面上 语法:<c:out value=”value” [escapeXml=”{true|false}”] [default=”defaultValue”] /> <c:out value=”value” [escapeXml=”{true|false}”]> default value </c:out> value:指定表达式或变量 default:指定输出的默认值 escapteXml:如果value中包含<,>,&,'," 等特殊字符,在输出的时候是否将其转换为其对应的字符实体代码。默认值为true. b) 条件标签库:用于控制程序执行流程 if(....) { .... } if 语法:<c:if test=”testCondition” var=”varName” [scope=”{page|request|session|application}”]/> <c:if test=”testCondition” [var=”varName”] [scope=”{page|request|session|application}”]> body content </c:if> test:指定条件表达式 var:指定变量名 scope:指定变量存储的范围 switch...case... choose: 语法:<c:choose> <c:when test=”testCondition1”> body content </c:when> <c:when test=”testCondition2”> body content </c:when> ... <c:otherwise> conditional block </c:otherwise> </c:choose> test:指定条件表达式 c) 迭代标签库 forEach:(相当于java中的for循环) 语法:<c:forEach [var=”varName”] items=”collection” [varStatus=”varStatusName”] [begin=”begin”] [end=”end”] [step=”step”]> body content </c:forEach> <c:forEach [var=”varName”][varStatus=”varStatusName”]begin=”begin” end=”end” [step=”step”]> body content </c:forEach> items:指定要迭代的集合 var:指定变量名 varStatus:指定迭代计数变量名 begin:指定迭代集合的开始标号 end:指定迭代集合的结束标号 step:指定迭代步长 示例:对List,Set,Map,数组的循环遍历 forTokens: <c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]> body content </c:forTokens> items:指定要迭代的字符串 delims:指定字符串中的分隔符 var:指定变量名 varStatus:指定迭代中的计数变量 begin:指定迭代的起始标号 end:指定迭代的结束标号 step:指定迭代步长 * I18N标签库 formatNumber 功能:格式化数字 语法:<fmt:formatNumber value=”numericValue” [type=”{number|currency|percent}”] [pattern=”customPattern”] [currencyCode=”currencyCode”] [currencySymbol=”currencySymbol”] [groupingUsed=”{true|false}”] [maxIntegerDigits=”maxIntegerDigits”] [minIntegerDigits=”minIntegerDigits”] [maxFractionDigits=”maxFractionDigits”] [minFractionDigits=”minFractionDigits”] [var=”varName”] [scope=”{page|request|session|application}”]/>] <fmt:formatNumber [type=”{number|currency|percent}”] [pattern=”customPattern”] [currencyCode=”currencyCode”] [currencySymbol=”currencySymbol”] [groupingUsed=”{true|false}”] [maxIntegerDigits=”maxIntegerDigits”] [minIntegerDigits=”minIntegerDigits”] [maxFractionDigits=”maxFractionDigits”] [minFractionDigits=”minFractionDigits”] [var=”varName”] [scope=”{page|request|session|application}”]> numeric value to be formatted </fmt:formatNumber> formatDate 功能:格式化日期 语法:<fmt:formatDate value="date" [type="{time|date|both}"] [dateStyle="{default|short|medium|long|full}"] [timeStyle="{default|short|medium|long|full}"] [pattern="customPattern"] [timeZone="timeZone"] [var="varName"] [scope="{page|request|session|application}"]/> * SQL标签库 setDataSource 功能:设置数据源 语法:<sql:setDataSource {dataSource="dataSource" | url="jdbcUrl" [driver="driverClassName"] [user="userName"] [password="password"]} [var="varName"] [scope=”{page|request|session|application}”]/> 示例:<sql:setDataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/studentdb" user="root" password="root" var="con" scope="page" /> query 功能:执行数据库查询 语法: <sql:query sql="sqlQuery" var="varName" [scope=”{page|request|session|application}”] [dataSource=”dataSource”] [maxRows="maxRows"] [startRow="startRow"]/> <sql:query sql="sqlQuery" var="varName" [scope=”{page|request|session|application}”] [dataSource=”dataSource”] [maxRows="maxRows"] [startRow="startRow"]> <sql:param> actions </sql:query> <sql:query var="varName" [scope=”{page|request|session|application}”] [dataSource=”dataSource”] [maxRows="maxRows"] [startRow="startRow"]> query optional <sql:param> actions </sql:query> 示例: <sql:query var="rows" dataSource="${con}"> select * from student </sql:query> <sql:query var="rows" dataSource="${con}"> select * from student where sid = ? <sql:param value="1" /> </sql:query> update 功能:执行数据库更新 语法: <sql:update sql="sqlUpdate" [dataSource=”dataSource”] [var="varName"] [scope=”{page|request|session|application}”]/> <sql:update sql="sqlUpdate" [dataSource=”dataSource”] [var="varName"] [scope=”{page|request|session|application}”]> <sql:param> actions </sql:update> <sql:update [dataSource=”dataSource”] [var="varName"] [scope=”{page|request|session|application}”]> update statement optional <sql:param> actions </sql:update> 示例: <sql:transaction dataSource="${con}"> <sql:update var="rowCount"> update student set stuAge = ? where sid = ? <sql:param value="100" /> <sql:param value="2" /> </sql:update> </sql:transaction> transaction 功能:执行事务 语法: <sql:transaction [dataSource=”dataSource”] [isolation=isolationLevel]> <sql:query> and <sql:update> statements </sql:transaction> isolationLevel ::= "read_committed" | "read_uncommitted" | "repeatable_read" | "serializable" 示例: param 功能:设置sql参数 语法: <sql:param value=”value”/> <sql:param> parameter value </sql:param> 示例: * 函数库 格式:前缀 + 冒号 + 函数名 自定义函数的实现步骤: 1、创建Java类,在类中提供静态的方法(定义) public static List findUsers() { Group g1 = new Group("少年组"); Group g2 = new Group("中年组"); Group g3 = new Group("老年组"); User u1 = new User("zs", 10, g1); User u2 = new User("lisi", 30, g2); User u3 = new User("wangwu", 60, g3); List userList = new ArrayList(); userList.add(u1); userList.add(u2); userList.add(u3); return userList; } 2、要到WEB-INF创建标签库描述符文件(.tld)(描述) <?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <description>my functions library</description> <display-name>my functions</display-name> <tlib-version>1.0</tlib-version> <short-name>http://www.westaccp.com/functions</short-name> <uri>http://www.westaccp.com/functions</uri> <function> <name>finduser</name> <function-class> com.westaccp.store.MyFounctions </function-class> <function-signature> java.util.List findUsers() </function-signature> </function> </taglib> 3、在Jsp页面中,通过taglib指令引入标签库并使用(使用) <c:set var="userList" value="${my:finduser() }" scope="page" /> <select> <c:forEach items="${userList}" var="u"> <option value="${u.age }">${u.group.name }</option> </c:forEach> </select> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |