JSTL核心库常用标签举例(详解)
struts-config.xml:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<action-mappings>
<action path="/jstlcore"
type="com.yulin.struts.JSTLCoreAction"
>
<forward name="success" path="/jstlcore.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="MessageResources" />
</struts-config>
演示的JSP页面(jstlcore.jsp):
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Test JSTL</title>
</head>
<body>
<h1>Test JSTL</h1>
<hr>
<li>TEST c:out</li><hr>
core(el): ${core }<br>
core(el.empty): ${empty core }<br>
core(default):<c:out value="${core}"> </c:out> <br>
core(default):<c:out value="${core1}" > </c:out> <br>
core(default="123456"):<c:out value="${core1}" default="123456" ></c:out> <br>
<hr>
html(el): ${core2 }<br>
html(el.requestScope): ${requestScope.core2 }<br>
html(default):<c:out value="${core2}"> </c:out> <br>
html(escapeXml="true"):<c:out value="${core2}" escapeXml="true" ></c:out> <br>
html(escapeXml="false"):<c:out value="${core2}" escapeXml="false" ></c:out> <br>
html(default="<font color='red'>输出html文件</font>"):<c:out value="${core3}" default="<font color='red'>输出html文件</font>"></c:out> <br>
html(default="<font color='red'>输出html文件</font>"escapeXml="false"):<c:out value="${core3}" default="<font color='red'>输出html文件</font>" escapeXml="false"></c:out> <br>
<hr>
<li>TEST c:set c:remove</li><hr>
<c:set var="temp" value="1000n"> </c:set>
temp(c:set): ${temp }<br>
<c:remove var="temp"/>
temp(c:remove): ${temp }<br>
<hr>
<li>TEST c:if</li><hr>
<c:if test="${v1 lt v2}" var="r">
v1小于v2,${r }<br>
</c:if>
<c:if test="${v2 gt v1}" var="r">
v2da于v1,${r }<br>
</c:if>
<hr>
<li>TEST c:choose,c:when,c:otherwise</li><hr>
<c:choose>
<c:when test="${v1 lt v2}">
v1小于v2<br>
</c:when>
</c:choose>
<c:choose>
<c:when test="${v1 gt v2}">
v1da于v2<br>
</c:when>
<c:otherwise>
v1xiaoyuv2<br>
</c:otherwise>
</c:choose>
<hr>
<li>TEST c:forEach varStatus="vs" begin="4" end="40" step="5" </li><hr>
<table border="1">
<tr bgcolor="yellow">
<td>Username</td>
<td>Age</td>
<td>Group</td>
</tr>
<c:choose>
<c:when test="${empty userList}">
<tr>
<td clospan="3">there is no info!</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach items="${userList}" var="user" varStatus="vs" begin="4" end="40" step="5">
<c:choose>
<c:when test="${vs.count % 2 == 0}">
<c:set var="str" value="bgcolor=green" />
</c:when>
<c:otherwise>
<c:set var="str" value="bgcolor=red" />
</c:otherwise>
</c:choose>
<tr ${str }>
<td>${user.username }</td>
<td>${user.age }</td>
<td>${user.group.name }</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
<hr>
<li>TEST c:fortokens delims="," var="f"</li><hr>
<c:forTokens items="${fortokens}" delims="," var="f">
${f }<br>
</c:forTokens>
<hr>
<li>TEST c:catch</li><hr>
<c:catch var="e">
<%
Integer.parseInt("sss");
%>
</c:catch>
${e }<br>
<hr>
<li>TEST c:import </li><hr>
<c:import url="http://localhost:8080/struts-taglib/index.jsp"/>
<hr>
<li>TEST c:url c:param </li><hr>
<c:url value="http://localhost:8080/struts-taglib/index.jsp" var="turl">
<c:param name="id" value="01" />
<c:param name="name" value="linzhang"/>
</c:url>
${turl }<br>
<hr>
<li>TEST c:redirect [context]url </li><hr>
</body>
</html>
所需的JSTLCoreAction页面(JSTLCoreAction.java):
package com.yulin.struts;
import java.util.ArrayList;
import java.util.List;
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;
public class JSTLCoreAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
request.setAttribute("core", "core");
request.setAttribute("core1", "");
//输出html文件
request.setAttribute("core2", "<font color='red'>输出html文件</font>");
request.setAttribute("core3", "");
request.setAttribute("v1", 1);
request.setAttribute("v2", 2);
request.setAttribute("v3", "");
List userList = new ArrayList();
for(int i=0;i<50;i++){
Group g = new Group();
g.setName("China");
User u = new User();
u.setUsername("LinZhang" + i);
u.setAge(23);
u.setGroup(g);
userList.add(u);
}
request.setAttribute("userList", userList);
request.setAttribute("fortokens", "a,b,c,d,e,f,g");
return mapping.findForward("success");
}
}
涉及到的User(User.java)和Group(Group.java)页面:
User.java:
package com.yulin.struts;
public class User {
private String username;
private int age;
private Group group;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
}
}
Group.java:
package com.yulin.struts;
public class Group {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}