还是用代码说明:
jstlAction.java:
package com.keith.jstl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.keith.taglibs.Group;
import com.keith.taglibs.User;
public class JstlAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// 字符串
request.setAttribute("hello", "hello JSTL");
// HTML文本
request.setAttribute("keith", "<font color='red'>keith</font>");
// 测试条件语句
request.setAttribute("v1", 1);
request.setAttribute("v2", 2);
request.setAttribute("v3", new ArrayList());
request.setAttribute("v4", "keith V4");
// 对象数组
Group group = new Group();
group.setGroupName("keith");
// 测试foreach
List userList = new ArrayList();
for (int i = 0; i < 10; i++) {
User u = new User();
u.setName("USER_" + i);
u.setAge(10 + i);
u.setGroup(group);
userList.add(u);
}
request.setAttribute("userList", userList);
// 测试循环输出map
Map map = new HashMap();
map.put("k1","v1");
map.put("k2","v2");
request.setAttribute("mapValue", map);
//测试c:forTokens
request.setAttribute("strTokens","1,2,3,4,5,6,7,8,9");
return mapping.findForward("jstl");
}
}
struts-config.xml:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<action-mappings>
<action path="/jstl"
type="com.keith.jstl.JstlAction">
<forward name="jstl" path="/jstl.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="MessageResources" />
</struts-config>
jstl.jsp:首先指定标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<body> </body>里:
<body>
c:out测试
<hr color="orange">
hello(JSTL_default):<c:out value="${hello}" /><br>
hello(EL_default):${hello }<br>
default(123):<c:out value="${abc}" default="123" /><br><!-- 找不到abc的值,这时的default就有了作用 -->
keith(c:out输出):<c:out value="${keith}" /><br>
keith(escapeXml="flase"):<c:out value="${keith}" escapeXml="flase"/><br>
keith(escapeXml="true"):<c:out value="${keith}" escapeXml="true"/><br>
keith(EL输出):${keith}
<hr>
c:set/remove测试
<hr color="orange">
<c:set var="set1" value="keithSET" /><br>
set1:${set1 }<br>
<c:remove var="set1"/><br>
set1:${set1 }<br>
<hr>
c:if:条件控制
<hr color="orange">
<c:if test="${v1 lt v2}" var = "v">
v1小于v2<br/>
${v }<br/>
</c:if>
<c:if test="${empty v3}">
v3为空<br/>
</c:if>
<c:if test="${empty v4}">
v4为空<br/>
</c:if>
<hr>
测试C:choose,c:when,c:otherwise
<hr color="orange">
<c:choose>
<c:when test="v1 lt v2">
v1小于v2<br/>
</c:when>
<c:otherwise>
v1不小于v2<br/>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${empty v4}">
v4为空<br/>
</c:when>
<c:otherwise>
v4不为空<br/>
</c:otherwise>
</c:choose>
<hr>
<h4>测试c:forEach</h4>
<table >
<tr>
<td>姓名</td>
<td>年龄</td>
<td>组</td>
</tr>
<c:choose>
<c:when test="${empty userList}">
<tr>
<td colspan="3">没有符合条件的数据!</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach items="${userList}" var="user" varStatus="vs">
<c:choose>
<c:when test="${vs.count % 2 == 0 }">
<tr bgcolor="orange">
</c:when>
<c:otherwise>
<tr>
</c:otherwise>
</c:choose>
<td>
<c:out value="${user.name}"></c:out>
</td>
<td>
<c:out value="${user.age}"></c:out>
</td>
<td>
<c:out value="${user.group.groupName}"></c:out>
</td>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
<hr>
<h3>测试循环控制标签c:forEach,begin,end,step</h3>
<table>
<tr>
<td>姓名</td>
<td>年龄</td>
<td>组名</td>
</tr>
<c:choose>
<c:when test="${empty userList}">
<tr>
<td colspan="3">没又符合的数据</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach items="${userList}" var="user" begin="2" end="5" step="2">
<tr>
<td>${user.name }</td>
<td>${user.age }</td>
<td>${user.group.groupName }</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
<p></p>
<hr>
<h4>测试循环控制标签 c:foreach 普通循环</h4>
<c:forEach begin="1" end="5">
a<br/>
</c:forEach><br>
<h4>测试循环控制标签c:forEach,输出map</h4>
<c:forEach items="${mapValue}" var="v">
${v.key } = ${v.value }<br/>
</c:forEach>
<h4>测试循环控制标签c:forTokens,用于有符号的表达式</h4>
<c:forTokens items="${strTokens}" delims="," var="v">
${v }<br/>
</c:forTokens>
<h4>测试c:catch</h4>
<%
try{
Integer.parseInt("keith");
}catch(Exception e){
out.println(e.getMessage());
}
%>
<p></p>
<c:catch var="exinfo"><!-- 获取异常变量 -->
<%
Integer.parseInt("keith");
%>
</c:catch>
${exinfo }<br/><!-- 输出异常变量 -->
<li>测试:redirect:直接跳转;context项目名称;url跳转的页面</li><br>
<c:redirect context="/struts_test" url="/index.jsp"/>
</body>
分享到:
相关推荐
**配置JSTL**的步骤通常包括以下几个部分: 1. 添加JSTL库:将JSTL的JAR文件(如`jstl.jar`和`standard.jar`)放入项目WEB-INF/lib目录下,或者如果使用Maven或Gradle,将依赖添加到构建文件中。 2. 引用JSTL库:...
JSTL 标签库的使用可以分为以下几个方面: 1. 循环输出数据:JSTL 的 foreach 标签可以用于循环输出数据。 例如:${emplist}"> 循环输出 emplist 集合中的数据 2. 条件判断:JSTL 的 if 标签可以用于条件判断。 ...
**配置JSTL标签库**通常涉及以下几个步骤: 1. **添加依赖**:在项目中,你需要引入JSTL相关的jar文件。对于Maven项目,可以在pom.xml中添加如下依赖: ```xml <groupId>javax.servlet.jsp.jstl <artifactId>...
JSTL主要由几个不同的标签库组成,包括核心标签库、SQL标签库、XML标签库以及函数标签库。 1. **核心标签库 (Core Tags):** 这个库定义了`cc.tld`,包含了用于常见任务的标签,如数据管理、流程控制和输出。主要...
自定义JSTL标签的创建涉及到以下几个步骤: 1. **创建Tag Handler类**:这是处理自定义标签逻辑的Java类,需要继承自`javax.servlet.jsp.tagext.TagSupport`或`javax.servlet.jsp.tagext.SimpleTagSupport`。在这个...
下面我们将详细探讨`c`标签库的几个主要标签。 1. `<c:set>`:这个标签用于设置一个变量。例如,你可以将一个值赋给一个特定的范围(如page、request、session或application)。以下是一个例子: ```jsp ``` ...
在Java Web开发中,JSTL的核心标签库(Core Tag Library)包含以下几个主要方面: 1. **流程控制**: - `<c:if>`:用于执行条件判断,可以根据指定的条件执行不同的代码块。 - `<c:choose>`, `<c:when>`, `...
`jstl.jar`**: 这个文件包含了JSTL的主要标签库实现,包括以下几个部分: - **Core Taglib**: 提供了一系列基础控制流标签,如条件语句(`<c:if>`, `<c:choose>`)、迭代(`<c:forEach>`, `<c:forTokens>`)、URL操作...
在JSTL中,主要包含以下几个核心标签库: 1. **Core标签库 (c:)** - 提供了基本的控制结构,如迭代和条件语句。 2. **Format标签库 (fmt:)** - 用于日期、时间、数字格式化和国际化。 3. **Function标签库 (fn:)** ...
JSTL标签库包括核心标签、XML处理标签、SQL标签和函数标签等几大类,覆盖了网页开发中的常见操作。 在JSP页面中使用JSTL,首先需要将对应的jar包添加到项目的类路径(classpath)中。这里提供的“jstl标签jar包”...
JSTL由几个核心组件组成,主要包括Core、Format、Function、I18N和SQL等标签库。其中: - Core库提供了基本的控制流标签,如条件判断、循环等。 - Format库则负责国际化和格式化功能,如日期和数字的格式化。 - ...
它包括几个主要的标签库,如Core、XML、I18N&Format和Function,覆盖了数据处理、控制流、国际化和函数等多个领域。 2. **Core库** Core库是JSTL中最基础的部分,提供了类似于Java中的流程控制结构,例如条件语句...
JSTL主要由以下几个核心部分组成:Core、XML、JDBC和Function。 在提供的压缩包`jakarta-taglibs-stard-current.rar`中,我们找到了两个关键的jar文件:`jstl.jar`和`standard.jar`。这两个文件在JSTL的使用中起着...
JSTL由几个核心部分组成,包括Core、XML、Internationalization (i18n)、Function和Expression Language (EL)。其中,Core库是最常用的部分,包含了处理页面导航、条件语句、循环等基本操作的标签。 **创建自定义...
JSTL主要由以下几个核心模块组成: - **Core**:提供了基本的控制结构,如条件语句和循环。 - ** fmt**:用于格式化日期、数字和消息。 - **i18n**:支持国际化和本地化。 - **sql**:用于执行SQL查询和数据库操作。...
JSTL(JavaServer Pages Standard Tag Library)是一个开放源代码的JSP标签库,由Apache的Jakarta项目组进行维护。JSTL的设计目标是简化Web应用程序的开发过程,通过提供一系列功能丰富的标签来减少JSP页面中的脚本...
JSTL主要由以下几个核心模块组成: - **Core**: 提供基本的控制结构,如循环、条件语句、URL操作等。 - **Format**: 处理日期、时间、数字的格式化,支持国际化。 - **I18N**: 国际化和本地化支持。 - **XML**: ...
自定义标签的开发主要涉及以下几个步骤: 1. **创建TLD文件**:TLD(Tag Library Descriptor)文件是描述标签库的元数据文件,它定义了标签的名字、属性、返回类型等信息。例如: ```xml <tlib-version>1.0 ...
它包括核心库(core)、SQL库(sql)、XML库(fmt、func、tagext)等几个部分,分别对应不同的功能。 **JSTL的核心库(core)**: - `<c:set>`:设置变量。 - `<c:out>`:输出变量值,可以进行简单的HTML转义。 - `...