- 浏览: 1575719 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
nich002:
原网站失效了。撸主简单粗暴的复制过来,可读性极差!差评!
Apache配置详解(最好的APACHE配置教程) -
107x:
不错,谢谢!
LINUX下查看文件夹下的文件个数! -
Hypereo:
好你妹,连个格式都没有!
Apache配置详解(最好的APACHE配置教程) -
resteater:
代码排版感觉有点乱!收发信息代码可读性不强!请问第一次发服务器 ...
java socket例子 -
resteater:
代码排版感觉有点乱!收发信息代码可读性不强!请问第一次发服务器 ...
java socket例子
jstl相关的jar包有两个:jstl.jar,standard.jar,jstl.jar中是核心的jstl定义,如c,fmt等,而standard.jar中包含声明的tld文件,其位置是:standard.jar\META-INF。
在系统加载时会扫描所有的jar包,并加载所有的tld文件。spring中的tld也是此种处理方式。
我们在jsp页面中一般使用
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
的方式引用,其中关键的是uri。如果是tld放在jar包中,则直接是tld声明的uri。而如果是自己在web.xml中直接声明,则可以更改uri,如下面:
<taglib> <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri> <taglib-location>/WEB-INF/tld/c.tld</taglib-location> </taglib>
其他文章请参考:
http://www.blogjava.net/crabhn/archive/2006/10/25/50858.html
http://www.iteye.com/topic/69331
EL和jstl使用方法:http://www.zxbc.cn/html/javajc/2719295115579.html
- jstl.jar (23.4 KB)
- 下载次数: 58
- standard.jar (384 KB)
- 下载次数: 90
评论
2 楼
liudaoru
2008-05-19
From:http://www.yesky.com/23/1894523.shtml
Taglib原理和实现之循环的Tag
1、问题:在request里的 People 对象,有个属性叫 men ,men 是一个Collection ,有许多个man 。现在,把 collection里的man的名字都显示出来。
显然,这是一个嵌套Tag的问题。有三个Tag互相作用:最外层的Tag找到People对象,中间的Tag取得Collection,子Tag负责打印。
例如:
<diego:withObject value="${people}">
<diego:withCollection property="men">
<diego:elementout property="name"/>
</diego:withCollection>
</diego:withObject>
思路如下:
1) 编写WithObjectTag,负责从El表达式中取得对象
2) 编写WithCollectionTag,负责从对象中取得 Collection ,遍历 Collection ,每遍历一次 Collection ,执行一次body
3) 编写ElementoutTag ,把 Collection 中每个men对象的 name 打印出来
2. 完整程序如下:
在上例的diegoyun.vo包内,编写 People 类
package diegoyun.vo;
import java.util.Collection;
public class People
{
private Collection men = null;
public Collection getMen()
{
return men;
}
public void setMen(Collection men)
{
this.men = men;
}
}
编写 withObject ,这是从request里取得People对象的最外层Tag
package diegoyun;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager;
public class WithObjectTag extends BodyTagSupport
{
private Object value = null;
public Object getValue()
{
return value;
}
public void setValue(Object value)throws JspException
{
this.value = ExpressionEvaluatorManager.evaluate("value", value.toString(), Object.class, this, pageContext);
}
public int doStartTag()
{
return EVAL_BODY_INCLUDE;
}
public int doEndTag()throws JspException
{
return EVAL_PAGE;
}
}
编写WithCollectionTag,该Tag负责取得Collection,并遍历执行子Tag
package diegoyun;
import java.util.Collection;
import java.util.Iterator;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import org.apache.commons.beanutils.PropertyUtils;
public class WithCollectionTag extends BodyTagSupport {
private Object element = null;
private Collection list = null;
private Iterator iterator = null;
public Object getElement() {
return element;
}
public void setProperty(String property) throws JspException {
//取得父Tag对象,并且得到Collection
WithObjectTag parent = (WithObjectTag) getParent();
if (parent == null)
throw new JspException("parent tag is null");
try {
Object propertyValue = PropertyUtils.getProperty(parent.getValue(),property);
this.list = (Collection) propertyValue;
if (list == null)
throw new JspException("Collection is null");
} catch (Exception e) {
throw new JspException(e);
}
}
public int doStartTag() throws JspException {
//设置第一个元素,然后执行子Tag
iterator = list.iterator();
if (iterator.hasNext())
element = iterator.next();
return EVAL_BODY_INCLUDE;
}
public int doAfterBody() {
if (iterator.hasNext()) {
//如果还存在子元素,设置子元素,并且再次执行子Tag
//循环由此而来
//否则不再执行子Tag
element = iterator.next();
return EVAL_BODY_AGAIN;
}
else
return EVAL_PAGE;
}
}
编写 ElementOutputTag
package diegoyun;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.commons.beanutils.PropertyUtils;
public class ElementOutputTag extends TagSupport
{
private Object propertyValue = null;
public void setProperty(String property)throws JspException
{
WithCollectionTag parent = (WithCollectionTag)getParent();
if(parent == null)
throw new JspException("parent tag is null");
try
{
//判断上层tag中是否存在该属性名称,如果存在,取得属性值,否则报错
propertyValue = PropertyUtils.getProperty(parent.getElement(), property);
}
catch (Exception e)
{
throw new JspException(e);
}
}
public int doEndTag()throws JspException
{
try
{
//简单的把值打印到jsp页面
pageContext.getOut().print(propertyValue);
}
catch (IOException e)
{
throw new JspException(e);
}
return EVAL_PAGE;
}
}
编写tld
<!--WithObjectTag-->
<tag>
<name>withObject</name>
<tag-class>diegoyun.WithObjectTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>value</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
<!--WithCollectionTag-->
<tag>
<name>withCollection</name>
<tag-class>diegoyun.WithCollectionTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>property</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
<!--ElementOutputTag-->
<tag>
<name>elementout</name>
<tag-class>diegoyun.ElementOutputTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>property</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
编写jsp
<%@ page language="java" %>
<%@ page import="diegoyun.vo.*"%>
<%@ page import="java.util.*"%>
<%@ taglib uri="/WEB-INF/tlds/diego.tld" prefix="diego"%>
<html>
<body bgcolor="#FFFFFF">
<%
Collection c = new ArrayList();
Man man1 = new Man();
man1.setName("diego");
c.add(man1);
Man man2 = new Man();
man2.setName("Zidane");
c.add(man2);
Man man3 = new Man();
man3.setName("Rui");
c.add(man3);
People p =new People();
p.setMen(c);
request.setAttribute("people",p);
%>
Test loop tag:
<br>
<diego:withObject value="${people}">
<diego:withCollection property="men">
<diego:elementout property="name"/>
<br>
</diego:withCollection>
</diego:withObject>
</body>
</html>
运行,则可以看到:
Test loop tag:
diego
Zidane
Rui
Taglib原理和实现之循环的Tag
1、问题:在request里的 People 对象,有个属性叫 men ,men 是一个Collection ,有许多个man 。现在,把 collection里的man的名字都显示出来。
显然,这是一个嵌套Tag的问题。有三个Tag互相作用:最外层的Tag找到People对象,中间的Tag取得Collection,子Tag负责打印。
例如:
<diego:withObject value="${people}">
<diego:withCollection property="men">
<diego:elementout property="name"/>
</diego:withCollection>
</diego:withObject>
思路如下:
1) 编写WithObjectTag,负责从El表达式中取得对象
2) 编写WithCollectionTag,负责从对象中取得 Collection ,遍历 Collection ,每遍历一次 Collection ,执行一次body
3) 编写ElementoutTag ,把 Collection 中每个men对象的 name 打印出来
2. 完整程序如下:
在上例的diegoyun.vo包内,编写 People 类
package diegoyun.vo;
import java.util.Collection;
public class People
{
private Collection men = null;
public Collection getMen()
{
return men;
}
public void setMen(Collection men)
{
this.men = men;
}
}
编写 withObject ,这是从request里取得People对象的最外层Tag
package diegoyun;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager;
public class WithObjectTag extends BodyTagSupport
{
private Object value = null;
public Object getValue()
{
return value;
}
public void setValue(Object value)throws JspException
{
this.value = ExpressionEvaluatorManager.evaluate("value", value.toString(), Object.class, this, pageContext);
}
public int doStartTag()
{
return EVAL_BODY_INCLUDE;
}
public int doEndTag()throws JspException
{
return EVAL_PAGE;
}
}
编写WithCollectionTag,该Tag负责取得Collection,并遍历执行子Tag
package diegoyun;
import java.util.Collection;
import java.util.Iterator;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import org.apache.commons.beanutils.PropertyUtils;
public class WithCollectionTag extends BodyTagSupport {
private Object element = null;
private Collection list = null;
private Iterator iterator = null;
public Object getElement() {
return element;
}
public void setProperty(String property) throws JspException {
//取得父Tag对象,并且得到Collection
WithObjectTag parent = (WithObjectTag) getParent();
if (parent == null)
throw new JspException("parent tag is null");
try {
Object propertyValue = PropertyUtils.getProperty(parent.getValue(),property);
this.list = (Collection) propertyValue;
if (list == null)
throw new JspException("Collection is null");
} catch (Exception e) {
throw new JspException(e);
}
}
public int doStartTag() throws JspException {
//设置第一个元素,然后执行子Tag
iterator = list.iterator();
if (iterator.hasNext())
element = iterator.next();
return EVAL_BODY_INCLUDE;
}
public int doAfterBody() {
if (iterator.hasNext()) {
//如果还存在子元素,设置子元素,并且再次执行子Tag
//循环由此而来
//否则不再执行子Tag
element = iterator.next();
return EVAL_BODY_AGAIN;
}
else
return EVAL_PAGE;
}
}
编写 ElementOutputTag
package diegoyun;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.commons.beanutils.PropertyUtils;
public class ElementOutputTag extends TagSupport
{
private Object propertyValue = null;
public void setProperty(String property)throws JspException
{
WithCollectionTag parent = (WithCollectionTag)getParent();
if(parent == null)
throw new JspException("parent tag is null");
try
{
//判断上层tag中是否存在该属性名称,如果存在,取得属性值,否则报错
propertyValue = PropertyUtils.getProperty(parent.getElement(), property);
}
catch (Exception e)
{
throw new JspException(e);
}
}
public int doEndTag()throws JspException
{
try
{
//简单的把值打印到jsp页面
pageContext.getOut().print(propertyValue);
}
catch (IOException e)
{
throw new JspException(e);
}
return EVAL_PAGE;
}
}
编写tld
<!--WithObjectTag-->
<tag>
<name>withObject</name>
<tag-class>diegoyun.WithObjectTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>value</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
<!--WithCollectionTag-->
<tag>
<name>withCollection</name>
<tag-class>diegoyun.WithCollectionTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>property</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
<!--ElementOutputTag-->
<tag>
<name>elementout</name>
<tag-class>diegoyun.ElementOutputTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>property</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
编写jsp
<%@ page language="java" %>
<%@ page import="diegoyun.vo.*"%>
<%@ page import="java.util.*"%>
<%@ taglib uri="/WEB-INF/tlds/diego.tld" prefix="diego"%>
<html>
<body bgcolor="#FFFFFF">
<%
Collection c = new ArrayList();
Man man1 = new Man();
man1.setName("diego");
c.add(man1);
Man man2 = new Man();
man2.setName("Zidane");
c.add(man2);
Man man3 = new Man();
man3.setName("Rui");
c.add(man3);
People p =new People();
p.setMen(c);
request.setAttribute("people",p);
%>
Test loop tag:
<br>
<diego:withObject value="${people}">
<diego:withCollection property="men">
<diego:elementout property="name"/>
<br>
</diego:withCollection>
</diego:withObject>
</body>
</html>
运行,则可以看到:
Test loop tag:
diego
Zidane
Rui
1 楼
liudaoru
2008-05-19
From: http://www.wyxg.com/2007626145456/2007725203414.htm
taglib原理和实现之支持el表达式
1.先看这么一个例子
<%@ page contenttype="text/html; charset=gb2312" language="java"%>
<%@ taglib uri="/web-inf/tlds/c.tld" prefix="c"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd">
<html>
<body>
<%
string tut = "tutorial";
request.setattribute("tut",tut);
%>
the string in request is :
<c:out value="${tut}"/>
</body>
</html>
2.如何支持el表达式
在路径org.apache.taglibs.standard.lang.support下,有个叫 expressionevaluatormanager.evaluate 的方法,当el表达式作为入参时,调用这个方法,在tag内即可自动把el表达式转化。例如,你想tag的value字段支持el表达式,那么只需在set方法里如下调用:
public void setvalue(object value)throws jspexception
{
this.value = expressionevaluatormanager.evaluate(
"value", value.tostring(), object.class, this, pagecontext);
}
expressionevaluatormanager.evaluate有四个参数。第一个表示tag的名字,在取el表达式出错时使用。一般和属性名字相同。第二个要求字符串,通常简单调用输入对象的tostring方法。第三个是类,通常用object.class。第四个用this即可,第五个是pagecontext变量。
通常不用对这个方法思考太多。只需改改属性名字,其他照搬即可。
注意:当你的tag属性支持el表达式时,你必须把它声明为object对象。如上述的value,应该声明为:
private object value = null;
3.实例:让outputtag支持el表达式
package diegoyun;
import javax.servlet.jsp.jspexception;
import javax.servlet.jsp.jspwriter;
import javax.servlet.jsp.tagext.tagsupport;
import org.apache.taglibs.standard.lang.support.expressionevaluatormanager;
public class newoutputtag extends tagsupport
{
private object name = null;
public void setname(object name) throws jspexception
{
this.name = expressionevaluatormanager.evaluate(
"name", name.tostring(), object.class, this, pagecontext);
}
public int dostarttag() throws jspexception{
try
{
jspwriter out = pagecontext.getout();
out.print("hello! " + name);
}
catch (exception e)
{
throw new jspexception(e);
}
return eval_page;
}
}
在diego.tld里添加声明
<!--newoutputtag-->
<tag>
<name>newout</name>
<tag-class>diegoyun.newoutputtag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>name</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
编写jsp测试
<%@ page language="java" %>
<%@ taglib uri="/web-inf/tlds/diego.tld" prefix="diego"%>
<html>
<body bgcolor="#ffffff">
<%
string s = "diego";
request.setattribute("name",s);
%>
test el supported tag:
<br>
<diego:newout name="${name}"/>
</body>
</html>
可以看到页面输出为:
test el supported tag:
hello! diego
taglib原理和实现之支持el表达式
1.先看这么一个例子
<%@ page contenttype="text/html; charset=gb2312" language="java"%>
<%@ taglib uri="/web-inf/tlds/c.tld" prefix="c"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd">
<html>
<body>
<%
string tut = "tutorial";
request.setattribute("tut",tut);
%>
the string in request is :
<c:out value="${tut}"/>
</body>
</html>
2.如何支持el表达式
在路径org.apache.taglibs.standard.lang.support下,有个叫 expressionevaluatormanager.evaluate 的方法,当el表达式作为入参时,调用这个方法,在tag内即可自动把el表达式转化。例如,你想tag的value字段支持el表达式,那么只需在set方法里如下调用:
public void setvalue(object value)throws jspexception
{
this.value = expressionevaluatormanager.evaluate(
"value", value.tostring(), object.class, this, pagecontext);
}
expressionevaluatormanager.evaluate有四个参数。第一个表示tag的名字,在取el表达式出错时使用。一般和属性名字相同。第二个要求字符串,通常简单调用输入对象的tostring方法。第三个是类,通常用object.class。第四个用this即可,第五个是pagecontext变量。
通常不用对这个方法思考太多。只需改改属性名字,其他照搬即可。
注意:当你的tag属性支持el表达式时,你必须把它声明为object对象。如上述的value,应该声明为:
private object value = null;
3.实例:让outputtag支持el表达式
package diegoyun;
import javax.servlet.jsp.jspexception;
import javax.servlet.jsp.jspwriter;
import javax.servlet.jsp.tagext.tagsupport;
import org.apache.taglibs.standard.lang.support.expressionevaluatormanager;
public class newoutputtag extends tagsupport
{
private object name = null;
public void setname(object name) throws jspexception
{
this.name = expressionevaluatormanager.evaluate(
"name", name.tostring(), object.class, this, pagecontext);
}
public int dostarttag() throws jspexception{
try
{
jspwriter out = pagecontext.getout();
out.print("hello! " + name);
}
catch (exception e)
{
throw new jspexception(e);
}
return eval_page;
}
}
在diego.tld里添加声明
<!--newoutputtag-->
<tag>
<name>newout</name>
<tag-class>diegoyun.newoutputtag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>name</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
编写jsp测试
<%@ page language="java" %>
<%@ taglib uri="/web-inf/tlds/diego.tld" prefix="diego"%>
<html>
<body bgcolor="#ffffff">
<%
string s = "diego";
request.setattribute("name",s);
%>
test el supported tag:
<br>
<diego:newout name="${name}"/>
</body>
</html>
可以看到页面输出为:
test el supported tag:
hello! diego
发表评论
-
JVM问题追查与调优
2012-03-27 14:44 1143JDK的几种分析工具 http://liudaoru ... -
NodeJs相关资料
2011-08-18 14:55 3006NodeJs获取参数: proces ... -
jprofiler追踪问题
2011-08-12 18:20 1047Jprofiler下载页: http://www.ej ... -
Linux服务器性能评估与优化【z】
2011-07-01 10:05 1548来自:http://www.itlearner.com/ ... -
Java 理论与实践: 非阻塞算法简介【z】
2011-03-26 20:39 1283From: http://www.ibm.com/develo ... -
Java Crash问题分析[z]
2011-03-23 14:41 5971参考: http://www.ibm.com/develop ... -
Berkeley DB相关
2010-09-25 22:17 1054为什么要使用Berkeley DB,它适合什么场合应用?Ber ... -
熟悉系统方法总结
2010-07-06 14:26 815了解一个陌生的系统是我们经常碰到的事情,下面总结一下自己的一些 ... -
Java缓存框架 EhCache
2010-07-06 14:09 4728From: http://www.oschina.net/p/ ... -
【nio】使用 ServerSocketChannel 实现的 File 服务器[z]
2010-05-21 17:31 3969From: http://www.java2000.net/p ... -
Memcached命令行管理
2010-03-15 11:18 4488From: http://www.exp2up.com/2 ... -
(转)Resin服务器配置指南
2010-01-21 15:35 3463From:http://blog.21cn.com/super ... -
Flickr架构
2010-01-11 09:52 1266From: http://www.cyask.com/ques ... -
JDK的几种分析工具
2009-12-04 12:13 10903From: http://blog.csdn.net/hant ... -
XMemcached——一个新的开源Java memcached客户端
2009-10-23 09:27 1893From: http://www.infoq.com/cn/ ... -
多线程任务调度学习
2009-10-16 13:58 2302昨天找到一套多线程任务调度的代码,相当的不错,先把思路总结一下 ... -
用HSCALE实现MySQL的数据分布式存储
2009-10-15 12:47 3016From:http://www.ningoo.net/ht ... -
马化腾:搜索、电子商务硬仗一定要坚持打
2009-10-15 12:09 1716From:http://www.techweb.com.c ... -
MySQL分表实现上百万上千万记录分布存储的批量查询设计模式【z】
2009-10-15 09:56 3171From:http://hi.baidu.com/jabber ... -
nginx负载均衡和lvs负载均衡的比较分析【z】
2009-10-13 20:02 1471From:http://www.shouker.com/u ...
相关推荐
总的来说,JSTL提供了一种强大的方式来处理XML数据,但同时也需要开发者对XML、XSLT以及JSTL标签库有深入的理解。通过正确配置和使用这些库,可以大大提高Java Web应用程序处理XML数据的效率和灵活性。
JSTL的使用通常与EL(Expression Language)配合,EL是JSP 2.0引入的一种轻量级表达式语言,它简化了获取和设置JavaBean属性以及执行其他常见任务的方式。JSTL和EL的结合使用,使得JSP页面变得更加简洁,提高了代码...
JSTL通常与Expression Language (EL)一起使用,EL提供了一种简洁的方式来访问JavaBean属性和其他数据源。两者结合,可以构建出更高效、更易读的JSP页面。 **8. JSTL的最佳实践** - 避免在JSP页面中混入过多的Java...
在实际应用中,引入JSTL后,可以通过以下方式在JSP页面中使用它: ```jsp <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>...
### JSTL开发使用手册概览与核心知识点 #### JSTL简介 JSTL(JavaServer Pages Standard Tag Library)是一种标准的标签库,旨在简化JavaServer Pages (JSP) 页面的开发。它提供了一系列预定义的标签,帮助开发者...
**JSTL(JavaServer Pages Standard Tag Library)**是Java EE平台中用于增强JSP页面功能的一组标准标签库,它允许开发者使用更简洁、更易于维护的方式编写JSP页面,减少页面中的Java脚本。JSTL的核心库主要包含了...
JSTL,全称JavaServer Pages Standard Tag Library,是JavaServer Pages(JSP)标准标签库,它提供了一系列标签来简化JSP页面的编写,...同时,开发者应该注意使用现代的依赖管理方式,以避免版本冲突和不必要的麻烦。
在Java Servlet和JSP开发中,JSTL(Java...使用JSTL时,首先需要在JSP页面上引入JSTL库,这通常通过在页面指令中声明`taglib`来完成: ```jsp <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> ...
对于想要深入了解和使用JSTL的开发者,可以通过阅读提供的文档,如《JSTL_Functions标签库.doc》、《JSTL_C标签库.pdf》以及《JSTL_fmt格式化标签库.txt》,来更全面地掌握JSTL的各种功能和用法。
通过本实验的学习,我们不仅了解了 JSTL SQL 标签库的基本用法,还掌握了如何在 JSP 页面中使用 JSTL 来连接数据库并展示数据。这种方法极大地简化了页面开发过程中的数据库操作,提高了开发效率。未来在实际项目...
接着,在JSP页面中引入JSTL的标签库,通常通过以下方式: ```jsp <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> ``` 然后...
3. 使用JSTL标签:现在可以在JSP页面中使用JSTL标签,如`<c:forEach>`进行迭代,`<c:if>`进行条件判断,`<fmt:formatDate>`格式化日期等。 总之,JSTL是提升JSP页面编写效率的重要工具,而依赖注入则是现代Java应用...
### JSTL中if标签使用方法详解 JSTL(JavaServer Pages Standard Tag Library)是为简化JSP页面开发而设计的一组标准标签库。它提供了处理数据、条件逻辑等功能的强大工具,使得开发者无需编写复杂的Java代码即可...
JSTL还包括一个简化版的表达式语言,允许在不使用完整编程语言的情况下设置动态属性值。EL用于从页面上下文中获取和设置值,它简化了与JSP页面中对象的交互。 ### JSTL版本 JSTL 1.0发布于2002年,包含四个主要的...
- 使用方式:`<c:tagname>` 2. **XML处理标签库**:提供了对XML文档进行操作的能力。 - URI前缀:`http://java.sun.com/jstl/xml` - 使用方式:`<x:tagname>` 3. **国际化格式化标签库**:用于处理日期、时间、...
7. **最佳实践**:尽管JSTL提供了一种更简洁的方式来编写JSP,但过度依赖标签可能导致代码过于复杂。推荐结合使用JSTL和自定义标签库(Tag Libraries),以及现代的MVC框架如Spring MVC,以获得更好的结构和可维护性...
通过本实验的学习,我们不仅掌握了如何使用JSTL操作XML的基本方法,还学会了如何将XML作为配置文件使用,并在JSP中利用JSTL来读取配置文件以实现数据库连接。这种方式大大提高了Web应用程序的灵活性和可维护性。此外...
JSTL经常与JSP表达式语言(EL)一起使用,EL提供了一种简洁的方式来访问JavaBeans中的属性。通过EL,JSTL标签可以更方便地引用和操作页面作用域、请求作用域等范围内的对象。 8. **性能与优化** 尽管JSTL提高了...
JSTL的使用可以极大地提高开发效率,因为它允许我们用更简洁、更易读的方式来处理常见的JavaWeb任务,比如迭代、条件判断、数据操作等,而无需使用传统的Java脚本语法`<% %>`。 **JSTL的主要组成部分:** 1. **...