其实看了前面的那篇文章 《JSTL的EL表达式简单使用》 <http://www.the5fire.com/JSTL的EL表达式简单使用.html>
_ ,再结合说明文档使用JSTL已经基本可行了,不过由于EL在JSTL中实在是比较简单,因此很有必要说一下JSTL的核心库的使用。
EL就像是被封装好的函数,而核心库中的表达式像是一个新的语言,包括基本的语句。废话不多说了,还是代码为主。 差点忘了,这里需要引入两个jar包,从这下载: http://www.apache.org/dist/jakarta/taglibs/standard/binaries/,然后在使用JSTL核心库的JSP页面要声明一下,看下面具体的JSP代码吧。
首先Servlet:
.. code:: java
package com.jstl;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 演示JSTL核心库
* @author 胡阳
*
*/
public class JstlCoreServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//普通字符串
request.setAttribute("hello", "hello world");
//HTML
request.setAttribute("welcome", "<font color=red>the5fire的技术博客</font>");
//条件控制
request.setAttribute("v1", 10);
request.setAttribute("v2", 20);
//对象数组
//对象数组
User[] users = new User[9];
for (int i = 0; i < users.length; i++) {
users[i] = new User();
users[i].setUsername("胡阳" + i);
users[i].setAge(23 + i);
}
request.setAttribute("users", users);
request.getRequestDispatcher("/jstl_core.jsp").forward(request, response);
}
}
然后关于xml的配置,你看上篇文章吧,比较简单
建立JSP页面:jstl_core.jsp:(要注意第二行的这个引入)
.. code:: html
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!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>jstl核心库</title>
</head>
<body>
<h1>jstl核心库</h1>
<hr>
<li>采用c:out标签</li>
hello(使用标签):<c:out value="123"/><br>
hello(使用标签):<c:out value="hello"/><br>
hello(使用标签):<c:out value="${hello }"/><br>
hello(使用EL表达式):${hello }<br>
hello(default):${hello123 }<br>
hello(使用缺省值):<c:out value="${hello123 }" default="没有纸"/><br>
hello(使用缺省值):<c:out value="${hello123 }">没有纸</c:out><br>
welcome(使用EL表达式):${welcome }<br>
welcome(使用标签,escapeXml):<c:out value="${welcome }" escapeXml="true"/><br>
welcome(使用标签,escapeXml):<c:out value="${welcome }" escapeXml="false"/><br>
<p>
<li>测试c:set,c:remove</li><br>
<c:set value="root" var="userid"/>
userid:${userid }<br>
<c:remove var="userid"/>
<p>
<li>条件控制标签:c:if</li><br>
<c:if test="${v1 lt v2 }">
v1小于v2<br>
</c:if>
<p>
<li>条件控制标签:c:choose,c:when,c:otherwise</li><br>
<c:choose>
<c:when test="${v1 gt v2 }">
v1大于v2<br>
</c:when>
</c:choose>
<c:choose>
<c:when test="${empty userList }">
没有符合条件的数据<br>
</c:when>
<c:otherwise>
存在用户数据<br>
</c:otherwise>
</c:choose>
<p>
<li>演示循环控制标签:forEach</li><br>
<h3>采用jsp脚本显示</h3>
<table border="1">
<tr>
<td>用户名称</td>
<td>年龄</td>
</tr>
<c:choose>
<c:when test="${empty users }">
<tr>
<td colspan="3">没有符合条件的数据</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach items="${users }" var="user">
<tr>
<td>${user.username }</td>
<td>${user.age }</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
<h3>采用forEach标签,varstatus</h3>
<table border="1">
<tr>
<td>用户名称</td>
<td>年龄</td>
</tr>
<c:choose>
<c:when test="${empty users }">
<tr>
<td colspan="3">没有符合条件的数据</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach items="${users }" var="user" varStatus="vs">
<c:choose>
<c:when test="${vs.count mod 2 == 0 }">
<tr bgcolor=red>
</c:when>
<c:otherwise>
<tr bgcolor=blue>
</c:otherwise>
</c:choose>
<td>${user.username }</td>
<td>${user.age }</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
</body>
</html>
在原先的index页面中添加:
.. code:: html
<a href="servlet/JstlCoreServlet">测试核心库</a>
然后启动index页面,完了
其实这里面在对JSP核心库的引用进行声明时,你需要看一下standard.jar下面的META-INF的tld文件。比如说你要使用c标签,你就看一下c.tld中的uri。这个是在jsp页面声明时需要使用的。
如果你有足够的好奇心,我想你现在应该已经发现了JSTL的一些秘密,到底是什么秘密呢?下篇文章再说。
- from the5fire.com
----EOF-----
微信公众号:Python程序员杂谈
微信公众号:Python程序员杂谈