`

JAVA标签库JSTL-EL表达式介绍使用配置手册

 
阅读更多


JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问。

JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。但是在即将推出的JSP 2.0中是作为标准支持的。
JSTL目前的最新版本为1.02,最终发布版为1.0。JSTL包含两个部分:标签库和EL(Expression Language表达式语言)语言。标签库目前支持四种标签:
标签 URI 前缀 示例
Core http://java.sun.com/jstl/core c <c:tagname ...>
XML processing http://java.sun.com/jstl/xml x <x:tagname ...>
I18N capable formatting http://java.sun.com/jstl/fmt fmt <fmt:tagname ...>
Database access (SQL) http://java.sun.com/jstl/sql sql <sql:tagname ...>

Core支持JSP中的一些基本的操作;
XML processing支持XML文档的处理;
I18N capable formatting支持对JSP页面的国际化;
Database access (SQL)支持JSP对数据库的操作。

版本

  要注意1.0.x和1.1.x两个版本,目前最新版分别为1.0.6和1.1.2

  1.1版比1.0版多了fn标签库(常用的字符串操作在里面,特别是length、substring、等用于显示的函数)

  各个版本都可以在apache网站下载得到

使用中注意的问题

  在仅支持JSP1.2规范的容器中,只能使用jstl 1.0版,所以fn就不能用了,很不爽。${1 + 2}必面都要写在<c:out value='${1 + 2}' />里。在支持JSP2.0规范的容器中,可以直接使用el表达式。

一些BUG

  在websphere 6.0(6.0.2.13版以前)中,有fn:length函数的BUG。只有打补丁了。

在websphere 中,如<c:out value='${var ==0 ? "非" : "是"}' />这样的句子会出问题,tomcat下刚运行很好。应该是:jstl只是一个规范,各个web容器对其实现不同的原因吧。

JSTL使用配置总结

1.web.xml版本为2.3版本的配置

引用文档:http://blog.csdn.net/tiancaoyan/archive/2009/06/10/4256637.aspx

使用环境: WebLogic92 + JDK1.5,web.xml版本为2.3,文件是如下表示:

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

使用步骤:

l拷贝jstl.jar,standard.jar文件到Web-INF/lib目录下

l在引用JSP页面加上: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

lweb.xml版本为2.3,还要在加上: <%@ page isELIgnored="false"%>

2 web.xml版本为2.4的配置

<web-appversion="2.4"

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-app_2_4.xsd">

l拷贝jstl.jar,standard.jar文件到Web-INF/lib目录下

l在引用JSP页面加上: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

3 web.xml版本为2.5的配置

J2EE5.0中已经将JSTL纳入标准规范,jstl.jar,standard.jar二个jar文件合并为jstl1.2.jar.

<web-appversion="2.5"

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

l在引用JSP页面加上: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

以上的web.xml各个版本在Tomcat6.0.24下也能正常显示.

JSTL使用示例

JSTL获取值范围.

引用文档:http://blog.csdn.net/tiancaoyan/archive/2009/06/10/4256637.aspx

一个EL表达式包含变量和操作符。任何存储在某个JSP作用范围(如:page requestsessionapplication)bean能被作为一个EL变量来使用。另外,EL支持以下预定义的变量:

变量名称

说明

pageScope

一个包含所有page scope范围的变量集合 (a java.util.Map)

requestScope

一个包含所有request scope范围的变量集合 (a java.util.Map)

sessionScope

一个包含所有session scope范围的变量集合 (a java.util.Map)

applicationScope

一个包含所有application scope范围的变量集合 (a java.util.Map)

param

一个包含所有请求参数的集合 (a java.util.Map),通过每个参数对应一个String值的方式赋值

paramValues

一个包含所有请求参数的集合 (a java.util.Map),通过每个参数对应一个String数组的方式赋值

header

一个包含所有请求的头信息的集合, (a java.util.Map) ,通过每个头信息对应一个String值的方式赋值

headerValues

一个包含所有请求的头信息的集合 (a java.util.Map),通过每个头信息的值都保存在一个String数组的方式赋值

cookie

一个包含所有请求的 cookie集合 (a java.util.Map), 通过每一个cookiejavax.servlet.http.Cookie)对应一个cookie值的方式赋值

initParam

一个包含所有应用程序初始化参数的集合(a java.util.Map),通过每个参数分别对应一个String值的方式赋值

pageContext

一个javax.servlet.jsp.PageContext类的实例,用来提供访问不同的请求数据

操作符描述了你对变量所期望的操作。如果你之前曾经使用过任何编程语言的话,在EL表达式中所使用的操作符对你来说可能看起来很熟悉。因为它们和那些在大多数语言中所支持的操作符一样。

.

访问一个bean属性或者 Map entry

[]

访问一个数组或者链表元素

()

对子表达式分组,用来改变赋值顺序

? :

条件语句,比如:条件 ? ifTrue : ifFalse.如果条件为真,表达式值为前者,反之为后者

+

数学运算符,加操作

-

数学运算符,减操作或者对一个值取反

*

数学运算符,乘操作

/ or div

数学运算符,除操作

% or mod

数学运算符,模操作(取余)

== or eq

逻辑运算符,判断符号左右两端是否相等,如果相等返回true,否则返回false

!= or ne

逻辑运算符,判断符号左右两端是否不相等,如果不相等返回true,否则返回false

< or lt

逻辑运算符,判断符号左边是否小于右边,如果小于返回true,否则返回false

> or gt

逻辑运算符,判断符号左边是否大于右边,如果大于返回true,否则返回false

<= or le

逻辑运算符,判断符号左边是否小于或者等于右边,如果小于或者等于返回true,否则返回false

>= or ge

逻辑运算符,判断符号左边是否大于或者等于右边,如果大于或者等于返回true,否则返回false

&& or and

逻辑运算符,与操作赋。如果左右两边同为true返回true,否则返回false

|| or or

逻辑运算符,或操作赋。如果左右两边有任何一边为true返回true,否则返回false

! or not

逻辑运算符,非操作赋。如果对true取运算返回false,否则返回true

empty

用来对一个空变量值进行判断: null、一个空String、空数组、空Map、没有条目的Collection集合

func(args)

调用方法, func是方法名,args是参数,可以没有,或者有一个、多个参数.参数间用逗号隔开

一个EL表达式可以包含:数字、文本(在单引号或者双引号之间)、布尔值、null值。

1获取单个对象

<%request.setAttribute(“username”,”david”)%>

${requestScope.userName}

2遍历Map类型

<%

Hashtable hashtable1 = new Hashtable();

hashtable1.put(new Integer(1),"uno");

hashtable1.put(new Integer(2),"dos");

hashtable1.put(new Integer(3),"tres");

request.setAttribute("numberMap", hashtable1);

//JSTL最好指定范围访问值:

// ${sessionScope.numberMap2},${applicationScope.numberMap2}.

request.getSession().setAttribute("numberMap2",hashtable1);request.getSession()

.getServletContext().setAttribute("numberMap3",hashtable1);

%>

<c:forEachvar="month"items="${numberMap}">

<li>

&nbsp;

${month.key},${month.value}

</li>

</c:forEach>

各JSTL相关引用标记

<%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%>

<%@tagliburi="http://java.sun.com/jsp/jstl/xml"prefix="x"%>

<%@tagliburi="http://java.sun.com/jsp/jstl/fmt"prefix="f"%>

<%@tagliburi="http://java.sun.com/jsp/jstl/sql"prefix="sql"%>

<%@tagliburi="http://java.sun.com/jsp/jstl/functions"prefix="fn"%>

下面介绍一下web.xml的配置

<?xmlversion="1.0"encoding="UTF-8"?>
<web-appversion="2.4"
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-app_2_4.xsd">
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/tlds/fmt.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
<taglib-location>/WEB-INF/tlds/fmt-rt.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/tlds/c.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
<taglib-location>/WEB-INF/tlds/c-rt.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/tlds/sql.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
<taglib-location>/WEB-INF/tlds/sql-rt.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
<taglib-location>/WEB-INF/tlds/x.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
<taglib-location>/WEB-INF/tlds/x-rt.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>

JSTL语法及参数详解

JSTL语法及参数

JSTL包含以下的标签:

常用的标签:如<c:out>、<c:remove>、<c:catch>、<c:set>等


条件标签:如<c:if><c:when>、<c:choose>、<c:otherwise>等


URL标签:如<c:import>、<c:redirect>和<c:url>等


XML标签:如<xml:out>等


国际化输出标签:如<fmt:timeZone>等


SQL标签:如<sql:query>、<sql:update>、<sql:transaction>等

一般用途的标签:

1.<c:out>

没有Body时的语法

<c:out value=”value” [escapeXml=”{true|false}”] [default=”defaultValue”]/>

有Body时的语法

<c:out value=”value” [escapeXml=”{true|false}”]>

这里是Body部分

</c:out>


名字 类型 描述

value Object 将要输出的表达式

escapeXml boolean 确定以下字符:<,>,&,’,”在字符串中是否被除数,默认为true

default Object 如果vaule计算后的结果是null,那么输出这个默认值


2.<c:set>

这个标签用于在某个范围(page、request、session、application等)中使用某个名字设定特定的值,或者设定某个已经存在的javabean对象的属性。他类似于<%request.setAttrbute(“name”,”value”);%>

语法1:使用value属性设定一个特定范围中的属性。

<c:set value=”value” var=”varName” [scope=”{page|request|session|application}”]/>

语法2:使用value属性设定一个特定范围中的属性,并带有一个Body。

<c:set var=”varName” [scope=”{page|request|session|application}”]>

Body部分

</c:set>

语法3:设置某个特定对象的一个属性。

<c:set value=”value” target=”target” property=”propertyName”/>

语法4:设置某个特定对象的一个属性,并带有一个Body。

<c:set target=”target” property=”propertyName”>

Body部分

</c:set>


名字 类型 描述

value Object 将要计算的表到式。

var String 用于表示value 值的属性,如果要在其他标签中使用,就是通过这 个var指定的值来进行的。它相当于在标签定义了一个变量,并且这个变量只能在标签中的一个。

scope String var的有效范围,可以是page|request|session|application中的一个

target String 将要设置属性的对象,它必须是javabean或则java.util.Map对象

property Object 待设定的Target对象中的属性名字,比如在javabean中有个name属性,提供了setUserId方法,那么这里填userId。


3.<c:remove>

<c:remove var=”varName” [scope=”{page|request|session|application}”]/>


4.<c:catch>

这个标签相当于捕获在它里边的标签抛出的异常对象

<c:catch [var=”varName”]> //var是异常的名字

内容

</c:catch>


条件标签

1. <c:if>

语法1:无Body情况

<c:if test=”testCondition” var=”varName” [scope=”page|request|session|application”]/>

语法2:有Body的情况

<c:if test=”testCondition” var=”varName” [scope=”page|request|session|application”]>

Body内容

</c:if>


名字 类型 描述

test Boolean 表达式的条件,相当于if()中的条件判断语句。

var String 表示这个语句的名字。

scope String var这个变量的作用范围。


2.<c:choose>

语法:<c:choose>

Body内容(<c:when>和<c:otherwise>子标签)

</c:choose>

注意:它的Body只能由以下元素组成:

1) 空格

2) 0或多个<c:when>子标签,<c:when>必须在<c:otherwise>标签之前出现.

3) 0个或多个<c:otherwise>子标签。


3.<c:when>

代表的是<c:choose>的一个条件分支,只能在<c:choose>中使用

语法:<c:when test=”testCondition”> //test是boolean类型,用于判断条件真假

Body语句

</c:when>


4.<c:otherwise>

代表的是<c:choose>中的最后选择。必须在最后出现

<c:otherwise>

内容

</c:otherwise>


迭代标签

1.<c:forEach>

语法1:在Collection中迭代

<c:forEach[var=”varName”] items=”collection” [varStatus=”varStatusName”]

[begin=”begin”] [end=”end”] [step=”step”]

Body内容

</c:foeEach>


语法2:迭代固定的次数.

<c:forEach [var=”varName”] [varStatus=”varStatusName”]

[begin=”begin”] [end=”end”] [step=”step”]

Body内容

</c:foeEach>


名字 类型 描述

var String 迭代的参数,它是标签参数,在其他标签中通过它来引用这个标签中的内容。

Items Collection、ArrayList、 要迭代的items集合.

Iterator、Map、String、

Eunmeration等

VarStatus String 表示迭代的状态,可以访问迭代自身的信息

Begin int 表示开始迭代的位置。

End int 表示结束迭代的位置。

Step int 表示迭代移动的步长,默认为1。


URL相关的标签

1.<c:import>

语法1:资源的内容使用String对象向外暴露

<c:import url=”url” [context=”context”]

[var=”varName”] [scope=”{page|request|session|application}”] [charEncoding=”charEncoding”]>

内容

</c:import>


语法2:资源的内容使用Reader对象向外暴露。

<c:import url=”url” [context=”context”]

varReader=”varReaderName” [charEncoding=”charEncoding”]>

内容

</c:import>

名字 类型 描述

url String 待导入资源的URL,可以是相对路径和绝对路径,并且可以导入其他主机资源

context String 当使用相对路径访问外部context资源时,context指定了这个资源的名字。

var String 参数的名字。

scope String var参数的作用范围。

cahrEncoding String 输入资源的字符编码。

varReader String 这个参数的类型是Reader,用于读取资源。


2.<c:redirct>

语法1:没有Body的情况.

<c:redirect url=”value” [context=”context”]/>

语法2:有Body情况下,在Body中指定查询的参数

<c:redirect url=”value” [context=”context”]>

<c:param name=”name” value=”value”/>

</c:redirect>


3.<c:url>

语法1:没有Body

<c:url value=”value” [context=”context”] [var=”varName”] [scope=”{page|request|session+application}”]/>

语法2:有Body

<c:url value=”value” [context=”context”] [var=”varName”] [scope=”{page|request|session+application}”]>

<c:param name=”name” value=”value”/>

</c:url>


名字 类型 描述

value String URL值

context String 当使用相对路径访问外部context资源时,context指定了这个资源的名字

var String 标识这个URL标量。

Scope String 变量作用范围。


SQL相关的标签

1.<sql:setDataSource>

2.<sql:query>

3.<sql:update>

4.<transaction>

5.<param>

jstl之foreach循环举例:

<%@pagecontentType="text/html;charset=GBK"%>
<%@pageimport="java.util.*"%>

<%@tagliburi="http://java.sun.com/jstl/core"prefix="c"%>
<html>
<head>
<title>JSTL测试1--c:forEach循环</title>
</head>

<body>
一、整数
<c:forEachvar="i"begin="1"end="10"step="1">
<c:outvalue="${i}"/>,
</c:forEach><p>
二、计算x的平方
<table>
<tr><th>Value</th>
<th>Square</th></tr>
<c:forEachvar="x"begin="0"end="10"step="2">
<tr><td><c:outvalue="${x}"/></td>
<td><c:outvalue="${x*x}"/></td></tr>
</c:forEach>
</table><p>
三、字符串"47,52,53,55,46,22,16,2"分隔.
<tableborder="1">
<c:forTokensitems="47,52,53,55,46,22,16,2"delims=","var="dailyPrice">
<tr><td><c:outvalue="${dailyPrice}"/></td></tr>
</c:forTokens>
</table><p>
四、使用步长
<table>
<tr><th>second</th>
<th>second</th></tr>
<c:forEachvar="seconds"begin="0"end="${pageContext.session
.maxInactiveInterval}"step="60">
<tr><td><c:outvalue="${seconds}"/></td>
<td><c:outvalue="${seconds}"/></td></tr>
</c:forEach>
</table><p>
五、对数组进行循环<p>
<%intai[]={10,20,30,40,50};
pageContext.setAttribute("ary",ai);
%>
<c:forEachvar="i"items="${ary}">
<c:outvalue="${i}"/>*
</c:forEach><p>

<%
Cookiec=newCookie("cookie1","one");
response.addCookie(c);
%>

<%
Cookiecookies[]=request.getCookies();
CookiesCookie=null;
Stringsname=null;
Stringname=null;
if(cookies==null)//如果没有任何cookie
out.print("noneanycookie");
else
{
//out.print(cookies.length+"<br>");
for(inti=0;i<cookies.length;i++)//循环列出所有可用的Cookie
{
sCookie=cookies[i];
sname=sCookie.getName();
name=sCookie.getValue();
out.println(sname+"->"+name+"<br>");
}
}
%>

<tableborder="1"align="center">
<tr><th>CookieName</th>
<th>CookieValue</th></tr>
<c:forEachvar="cook"items="${pageContext.request.cookies}">
<tr><td><c:outvalue="${cook.name}"/></td>
<td><c:outvalue="${cook.value}"/></td></tr>
</c:forEach>
</table><p>

六、字符串数组循环
<%Stringas[]={
"Afirststring","Ladeuxiemestring","Ellatroisiemostringo"
};
request.setAttribute("stringArray",as);
%><p>
<c:forEachvar="string"items="${stringArray}">
<c:outvalue="${string}"/><br>
</c:forEach>
七、枚举
<%
Hashtablehashtable1=newHashtable();
pageContext.setAttribute("numberMap",hashtable1);

hashtable1.put(newInteger(1),"uno");
hashtable1.put(newInteger(2),"dos");
hashtable1.put(newInteger(3),"tres");
hashtable1.put(newInteger(4),"cuatro");
hashtable1.put(newInteger(5),"cinco");
hashtable1.put(newInteger(6),"seis");
hashtable1.put(newInteger(7),"siete");
hashtable1.put(newInteger(8),"ocho");
hashtable1.put(newInteger(9),"nueve");
hashtable1.put(newInteger(10),"diez");

java.util.Enumerationenumeration=hashtable1.keys();
pageContext.setAttribute("enumeration",enumeration);
%>

<c:forEachvar="item"items="${enumeration}"begin="2"end="10"step="2">
<c:outvalue="${item}"/><br>
</c:forEach><p>
八、map<p>
<c:forEachvar="prop"items="${numberMap}"begin="1"end="5">
<c:outvalue="${prop.key}"/>=<c:outvalue="${prop.value}"/><br>
</c:forEach>


</body>
</html>

分享到:
评论

相关推荐

    JSP技术资料合集之二

    El表达式介绍.doc Expression Language.pdf jbp1-0-1.pdf jsp-2_1-fr-spec.pdf JSP-zh.pdf jsp.chm JSP12.PDF JSP2.0_7.pdf JSP2.0技术手册.rar jsp2_0.pdf JSP2_0技术手册.pdf jsp2_0技术手册.rar JSPXML.PDF JSP...

    JSP技术资料合集之三

    El表达式介绍.doc Expression Language.pdf jbp1-0-1.pdf jsp-2_1-fr-spec.pdf JSP-zh.pdf jsp.chm JSP12.PDF JSP2.0_7.pdf JSP2.0技术手册.rar jsp2_0.pdf JSP2_0技术手册.pdf jsp2_0技术手册.rar JSPXML.PDF JSP...

    JSP技术资料合集之一

    El表达式介绍.doc Expression Language.pdf jbp1-0-1.pdf jsp-2_1-fr-spec.pdf JSP-zh.pdf jsp.chm JSP12.PDF JSP2.0_7.pdf JSP2.0技术手册.rar jsp2_0.pdf JSP2_0技术手册.pdf jsp2_0技术手册.rar JSPXML.PDF JSP...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    《Java Web编程宝典(十年典藏版)》是一本集技能、范例、项目和应用为一体的学习手册,书中介绍了应用Java Web进行程序开发的各种技术、技巧。全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    第17章 jsp标准标签库(jstl) 490 17.1 jstl简介 490 17.2 配置jstl 491 17.3 core标签库 491 17.3.1 一般用途的标签 492 17.3.2 条件标签 496 17.3.3 迭代标签 498 17.3.4 url相关的标签 501 17.4 i18n...

    java web技术开发大全(最全最新)

    5.7 JSP的标准标签库(JSTL) 5.7.1 如何使用JSTL 5.7.2 条件标签 5.7.3 循环标签 5.8 小结 第6章 用Servlet和JSP实现注册登录系统 第2篇 Struts 2篇 第7章 编写Struts 2的第一个程序 第8章 Struts 2进阶 ...

    java web开发技术大全

    5.7 JSP的标准标签库(JSTL) 5.7.1 如何使用JSTL 5.7.2 条件标签 5.7.3 循环标签 5.8 小结 第6章 用Servlet和JSP实现注册登录系统 第2篇 Struts 2篇 第7章 编写Struts 2的第一个程序 第8章 Struts...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    第17章 jsp标准标签库(jstl) 490 17.1 jstl简介 490 17.2 配置jstl 491 17.3 core标签库 491 17.3.1 一般用途的标签 492 17.3.2 条件标签 496 17.3.3 迭代标签 498 17.3.4 url相关的标签 501 17.4 i18n...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    第17章 jsp标准标签库(jstl) 490 17.1 jstl简介 490 17.2 配置jstl 491 17.3 core标签库 491 17.3.1 一般用途的标签 492 17.3.2 条件标签 496 17.3.3 迭代标签 498 17.3.4 url相关的标签 501 17.4 i18n...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    第17章 jsp标准标签库(jstl) 490 17.1 jstl简介 490 17.2 配置jstl 491 17.3 core标签库 491 17.3.1 一般用途的标签 492 17.3.2 条件标签 496 17.3.3 迭代标签 498 17.3.4 url相关的标签 501 17.4 i18n...

    Java/JavaEE 学习笔记

    第九章 Java Server Page Tag Libraries(JSTL)......................248 Struts学习笔记...............263 Struts2.0..263 第一章 MVC Model.........................263 第二章 Struts Basic264 第三章 Action...

    J2EE学习笔记(J2ee初学者必备手册)

    第九章 Java Server Page Tag Libraries(JSTL)......................248 Struts学习笔记...............263 Struts2.0..263 第一章 MVC Model.........................263 第二章 Struts Basic264 第三章 Action,...

Global site tag (gtag.js) - Google Analytics