- 浏览: 905834 次
文章分类
最新评论
-
mxdxm:
总结不错,赞
NoSQL学习笔记(三)之BigTable -
itbj00:
不错,有实际案例的文章,看着简单。
以公司实际应用讲解OpenStack到底是什么 -
追梦--:
赞一个!
数据库插入百万数据 -
enet_java:
<artifactId>PM_Member_EAR ...
使用maven2 打ear包
测试JSTL表达式
JSTL一般要配合EL表达式一起使用,通过提供大多数 Web 应用程序常用功能的标准实现,JSTL 有助于加速开发周期。
一、JSTL和El表达式的关系
EL与四个 JSTL 定制标记库提供的操作结合起来允许页面作者不使用脚本元素即可实现表示层逻辑(不需要对表示层程序编写java代码),这极大地简化了 JSP 应用程序的维护。
二、使用方法:
1、如果只是使用EL表达式不需要引入任何jar包,只要jsp/servlet容器实现了J2EE1.4/Servlet2.4、JSP2.0规范就可以
2、JSTL标签的配置和使用:
(1)将jstl.jar和standard.jar拷贝到WEB-INF/lib下
(2)在jsp页面使用:
采用taglib指令引入标签库(使用哪个引入哪个即可)
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
(3)使用自定义函数:
* 定义类MyFunctions,方法必须为静态全局的
* 提供tld描述文件(仿照其他标准tld文件写即可),将tld放到WEB-INF或WEB-INF下的任意目录中
* 在jsp中采用taglib进行引入
* 在EL表达式中采用前缀+冒号+函数名的方式进行调用
三、测试示例:
项目概览
1、EL表达式
Servlet
package com.jialin.jstl; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 测试El表达式Servlet * @author jialin * */ public class ElServlet extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub doPost(req, resp); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Group group = new Group(); group.setGroupName("第一组"); //普通对象 User user = new User(); user.setGroup(group); user.setName("张三"); user.setAge(17); //map Map map = new HashMap(); map.put("k1", "k1value"); map.put("k2", "k2value"); //字符串数组 String[] strArr = new String[] { "a", "b", "c", "d" }; // 对象数组\ User[] arrUser = new User[10]; for (int i = 0; i < arrUser.length; i++) { arrUser[i] = new User(); arrUser[i].setName("张三" + i); } // List List listUser = new ArrayList(); for (int i = 0; i <= 10; i++) { User usr = new User(); usr.setName("战三" + i); listUser.add(usr); } //放入request request.setAttribute("arrUser", arrUser); request.setAttribute("listUser", listUser); request.setAttribute("arr", strArr); request.setAttribute("map", map); request.setAttribute("user", user); request.setAttribute("v1", ""); request.setAttribute("v2", new ArrayList()); request.setAttribute("v3", null); request.setAttribute("v4", "434"); request.setAttribute("hello", "Hello World"); //转发 request.getRequestDispatcher("/ElTest.jsp").forward(request, response); } }
jsp
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!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>Insert title here</title> </head> <body> <h1> <a href="servlet/ElServlet"></a>测试EL表达式 </h1> <li> 普通字符串 </li> <br /> Jsp脚本:<%=request.getAttribute("hello")%><br /> EL表达式:${hello} <br /> RequestScope:${requestScope.hello} <li> 结构 </li> 用户名:${user.name} <br /> 用户年龄:${user.age } <br /> 用户所属组:${user.group.groupName } <br /> <li> Map </li> <br /> map.k1:${map.k1} <br /> map.k2:${map.k2 } <br /> <li> 数组 </li> <br /> arr[1]:${arr[1]}; <br /> <li> 对象数组 </li> user数组:${arrUser[4].name } <br /> <li> List </li> userList:${listUser[5].name} <br /> <br /> <li> 运算符 </li> 1+1=${1+1} <br /> 1*2=${1*2} <br /> 21/7=${21/7} <br /> 21 div 7=${21 div 7} <br /> 21 mode 7=${21 mod 7} <br /> 21 % 7=${21 % 7} <br /> <li> 测试Empty </li> <br /> v1:${empty v1 } <br /> v2:${empty v2 } <br /> v3:${empty v3 } <br /> v4:${empty v4 } <br /> v5:${empty v5 } <br /> </body> </html>
结果:
2、测试jstl
servlet
package com.jialin.jstl; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 测试JSTLServlet * @author jialin * */ public class JstlServlet extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub doPost(req, resp); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //字符串 request.setAttribute("str", "fdfsdfsd432"); request.setAttribute("strs", "fd#fs#dfsd#432"); //日期和数字 request.setAttribute("today", new Date()); request.setAttribute("num", new Double(1234567.123456789)); request.setAttribute("pnum", new Double(0.1233456)); //List List listUser = new ArrayList(); for (int i = 0; i <= 10; i++) { User usr = new User(); usr.setName("战三" + i); usr.setAge(10); Group group = new Group(); group.setGroupName("战三group" + i); usr.setGroup(group); listUser.add(usr); } //map Map map = new HashMap(); map.put("k1", "k1value"); map.put("k2", "k2value"); map.put("k3", "k3value"); map.put("k4", "k4value"); map.put("k5", "k5value"); map.put("k6", "k6value"); //加入request request.setAttribute("map", map); request.setAttribute("listUser", listUser); request.setAttribute("strTokens", "1@2@3@4@5@6@7"); request.setAttribute("v1", "10"); request.setAttribute("v2", "11"); request.setAttribute("hello", "hello world"); request.setAttribute("list", new ArrayList()); request.setAttribute("hello1","<font color=\"red\">hello world</font>"); //转发 request.getRequestDispatcher("/JstlTest.jsp").forward(request, response); } }
jsp
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> <%@ taglib uri="http://blog.csdn.net/shan9liang/myfunctions" prefix="my"%> <!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>Insert title here</title> </head> <body> <h4> 测试 JSTL </h4> <ui> <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="${hello2312}" default="hi" /> <br /> hello(使用标签): <c:out value="${hello2312}" /> hi <br /> hello world(使用EL表达式):${hello1} <br /> hello world(使用escapeXML): <c:out value="${hello1}" escapeXml="true" /> hi <br /> hello world(使用escapeXML): <c:out value="${hello1}" escapeXml="false" /> hi <br /> <br /> <li> 测试c:set 标签 </li> <c:set var="hi" value="hello world!" /> <br /> hi:${hi} <br /> <c:set var="hoho" /> hi:${hoho} <br /> <br /> <li> 测试 c:if 标签 </li> <br /> <c:if test="${v1 < v2}"> “v1 < v2” </c:if> <br /> <br /> <li> 测试 c:choose c:when c:otherwise </li> <br /> <c:choose> <c:when test="$(v1>v2)"> "v1>v2" </c:when> <c:otherwise> "v1 < v2" </c:otherwise> </c:choose> <br /> <c:choose> <c:when test="${empty list}"> 无数据 </c:when> <c:otherwise> 有数据 </c:otherwise> </c:choose> <br /> <li> 测试 c:forEach </li> <table> <tr> <td> 姓名 </td> <td> 年龄 </td> <td> 组别 </td> </tr> <c:choose> <c:when test="${empty listUser}"> <tr> <td colspan="3"> 没有数据 </td> </tr> </c:when> <c:otherwise> <c:forEach items="${listUser}" var="user"> <tr> <td> ${user.name} </td> <td> ${user.age } </td> <td> ${user.group.groupName} </td> </tr> </c:forEach> </c:otherwise> </c:choose> </table> <br /> <li> 测试c:forEach varStatus </li> <table> <tr> <td> 姓名 </td> <td> 年龄 </td> <td> 组别 </td> </tr> <c:choose> <c:when test="${empty listUser}"> <tr> <td colspan="3"> 没有数据 </td> </tr> </c:when> <c:otherwise> <c:forEach items="${listUser}" var="user" varStatus="vs"> <c:choose> <c:when test="${vs.count % 2==0}"> <tr bgcolor="green"> <td> ${user.name} </td> <td> ${user.age } </td> <td> ${user.group.groupName} </td> </tr> </c:when> <c:otherwise> <tr> <td> ${user.name} </td> <td> ${user.age } </td> <td> ${user.group.groupName} </td> </tr> </c:otherwise> </c:choose> </c:forEach> </c:otherwise> </c:choose> </table> <br /> <li> 测试forEach begin end </li> <table> <tr> <td> 姓名 </td> <td> 年龄 </td> <td> 组别 </td> </tr> <c:choose> <c:when test="${empty listUser}"> <tr> <td colspan="3"> 没有数据 </td> </tr> </c:when> <c:otherwise> <c:forEach items="${listUser}" var="user" begin="2" end="7" step="1"> <tr> <td> ${user.name} </td> <td> ${user.age } </td> <td> ${user.group.groupName} </td> </tr> </c:forEach> </c:otherwise> </c:choose> </table> <li> 测试forEach 取出map中的值 </li> <c:forEach items="${map}" var="entry"> ${entry.key},${entry.value}<br /> </c:forEach> <br /> <li> 测试forTokens </li> <c:forTokens items="${strTokens}" delims="@" var="t"> ${t}<br /> </c:forTokens> <li> 测试c:catch </li> <c:catch var="msg"> <% Integer.parseInt("rewrw"); %> </c:catch> ${msg} <br /> <li> 测试 c:import </li> <c:import url="http://www.baidu.com"></c:import> <li> 测试 c:url param </li> <c:url value="http://www.baidu.com" var="uri"> <c:param name="id1" value="321"> </c:param> <c:param name="id2" value="876"> </c:param> </c:url> <br /> ${uri} <br /> <li> 测试 fn </li> <br /> str.length(函数必须放在EL表达式中,用法:前缀+冒号+函数名称):${fn:length(str)} <br /> <c:forEach items="${fn:split(strs,\"#\")}" var="v1"> ${v1 }<br /> </c:forEach> <br /> ${my:Hello("张三")} <li> 测试 fmt </li> <br /> today(default) <fmt:formatDate value="${today}" /> <br /> today(type="date") <fmt:formatDate value="${today}" type="date" /> <br /> today(type="time") <fmt:formatDate value="${today}" type="time" /> <br /> today(type="both") <fmt:formatDate value="${today}" type="both" /> <br /> today(dateStyle="short") <fmt:formatDate value="${today}" dateStyle="short" /> <br /> today(dateStyle="medium") <fmt:formatDate value="${today}" dateStyle="medium" /> <br /> today(dateStyle="long") <fmt:formatDate value="${today}" dateStyle="long" /> <br /> today(dateStyle="full") <fmt:formatDate value="${today}" dateStyle="full" /> <br /> today(pattern="yyyy/MM/dd hh:mm:ss") <fmt:formatDate value="${today}" pattern="yyyy/MM/dd HH:mm:ss" /> <br /> <fmt:formatDate value="${today}" pattern="yyyy/MM/dd HH:mm:ss" var="nowDate" /> <br /> ${nowDate } <br /> <li> 测试格式化数字 </li> <br /> number(default) <fmt:formatNumber value="${num}" /> <br /> number(pattern="###,###,###.####") <fmt:formatNumber value="${num}" pattern="###,###,###.####" /> <br /> number(pattern="###,###,###.000") <fmt:formatNumber value="${num}" pattern="###,###,###.000" /> <br /> number(groupingUsed="false") <fmt:formatNumber value="${num}" groupingUsed="false" /> <br /> number(minIntegerDigits="10" maxIntegerDigits="10") <fmt:formatNumber value="${num}" minIntegerDigits="10" maxIntegerDigits="10" /> <br /> number(minFractionDigits="4" maxFractionDigits="5") <fmt:formatNumber value="${num}" minFractionDigits="4" maxFractionDigits="5" /> <br /> number(type="currency") <fmt:formatNumber value="${num}" type="currency" /> <br /> number(type="currency" currencySymbol="$") <fmt:formatNumber value="${num}" type="currency" currencySymbol="$" /> <br /> number(type="percent" maxFractionDigits="5" minFractionDigits="3") <fmt:formatNumber value="${pnum}" type="percent" maxFractionDigits="5" minFractionDigits="3" /> <br /> <br /> </body> </html>
结果:
测试 JSTL
hello(使用标签): hello world
hello(使用标签): hello
hello(使用EL表达式):hello world
hello(default):
hello(使用缺省值): hi
hello(使用标签): hi
hello world(使用EL表达式):hello world
hello world(使用escapeXML): <font color="red">hello world</font> hi
hello world(使用escapeXML): hello world hi
hi:hello world!
hi:
“v1 < v2”
"v1 < v2"
无数据
姓名 | 年龄 | 组别 |
战三0 | 10 | 战三group0 |
战三1 | 10 | 战三group1 |
战三2 | 10 | 战三group2 |
战三3 | 10 | 战三group3 |
战三4 | 10 | 战三group4 |
战三5 | 10 | 战三group5 |
战三6 | 10 | 战三group6 |
战三7 | 10 | 战三group7 |
战三8 | 10 | 战三group8 |
战三9 | 10 | 战三group9 |
战三10 | 10 | 战三group10 |
姓名 | 年龄 | 组别 |
战三0 | 10 | 战三group0 |
战三1 | 10 | 战三group1 |
战三2 | 10 | 战三group2 |
战三3 | 10 | 战三group3 |
战三4 | 10 | 战三group4 |
战三5 | 10 | 战三group5 |
战三6 | 10 | 战三group6 |
战三7 | 10 | 战三group7 |
战三8 | 10 | 战三group8 |
战三9 | 10 | 战三group9 |
战三10 | 10 | 战三group10 |
姓名 | 年龄 | 组别 |
战三2 | 10 | 战三group2 |
战三3 | 10 | 战三group3 |
战三4 | 10 | 战三group4 |
战三5 | 10 | 战三group5 |
战三6 | 10 | 战三group6 |
战三7 | 10 | 战三group7 |
k4,k4value
k5,k5value
k6,k6value
k1,k1value
k2,k2value
2
3
4
5
6
7
http://www.baidu.com?id1=321&id2=876
str.length(函数必须放在EL表达式中,用法:前缀+冒号+函数名称):11
fd
fs
dfsd
432
Hello! 张三
today(default) 2013-3-11
today(type="date") 2013-3-11
today(type="time") 15:46:20
today(type="both") 2013-3-11 15:46:20
today(dateStyle="short") 13-3-11
today(dateStyle="medium") 2013-3-11
today(dateStyle="long") 2013年3月11日
today(dateStyle="full") 2013年3月11日 星期一
today(pattern="yyyy/MM/dd hh:mm:ss") 2013/03/11 15:46:20
2013/03/11 15:46:20
number(default) 1,234,567.123
number(pattern="###,###,###.####") 1,234,567.1235
number(pattern="###,###,###.000") 1,234,567.123
number(groupingUsed="false") 1234567.123
number(minIntegerDigits="10" maxIntegerDigits="10") 0,001,234,567.123
number(minFractionDigits="4" maxFractionDigits="5") 1,234,567.12346
number(type="currency") ¥1,234,567.12
number(type="currency" currencySymbol="$") $1,234,567.12
number(type="percent" maxFractionDigits="5" minFractionDigits="3") 12.33456%
相关推荐
标题中的“为java_web项目添加spring_MVC框架(JSTL表达式)”指的是在Java Web开发中集成Spring MVC框架,并利用JSTL(JavaServer Pages Standard Tag Library)进行页面表达式的处理。Spring MVC是Spring框架的一个...
<head><title>测试EL表达式</title></head> 普通字符串</li><br> (jsp脚本):("hello") %> (EL表达式): ${hello} ``` 在这个例子中,`hello`是一个存储在请求范围内的属性,JSP脚本和EL表达式都能访问并...
**对于`JstlTest`这个压缩包文件,可能包含了具体的测试用例、测试类或者测试脚本,这些内容将有助于理解JSTL标签的使用方法以及如何在项目中进行测试。通过对这些测试代码的学习,开发者可以更好地理解和掌握JSTL的...
2. **分离关注点**:JSTL将业务逻辑和显示逻辑分离,增强了可重用性和可测试性。 3. **提高性能**:由于JSTL标签是服务器端预编译的,所以它们通常比纯JSP脚本执行得更快。 **JSTl.jar和standard.jar的关系:** 在...
在Java Web开发中,EL(Expression Language)表达式和JSTL(JavaServer Pages Standard Tag Library)标签是两个重要的组件,它们极大地简化了页面逻辑,提高了代码的可读性和维护性。下面将详细介绍这两个概念以及...
本示例是基于`jsp`、`servlet`、`EL(Expression Language)`表达式和`JSTL(JavaServer Pages Standard Tag Library)`实现的一个分页代码。下面,我们将深入探讨这些技术及其在分页中的应用。 **1. JSP(Java...
在Java Web开发中,EL(Expression ...总结来说,`el表达式jar包——jstl.jar+standard.jar`是Java Web开发中必不可少的组件,它们帮助开发者编写更加清晰、可维护的JSP页面,通过EL表达式和JSTL标签...
EL表达式可以与JavaServer Pages Standard Tag Library (JSTL) 结合使用,增强其功能。例如,`${expression}">` 用于安全地输出EL表达式的结果,防止跨站脚本攻击(XSS)。 **EL表达式的高级特性** 1. **隐式对象**...
JSTL表达式语言是JSP 2.0引入的一个重要特性,允许在JSP页面中方便地访问JavaBean属性。EL表达式通常用在`${}`中,如`${user.name}`将输出`user`对象的`name`属性值。 3. **JSTL函数库(Functions)** JSTL函数库...
今天做项目,用到了el表达式和jstl,在tomcat6.0上跑得好好的,没想到copy到tomcat5.5后,服务器起不来了,是tomcat版本的问题。查阅了不少资料,现在总结如下: 错误信息: java.lang.NoClassDefFoundError: javax...
此外,由于JSTL遵循Java的编程规范,它也支持面向对象的设计原则,比如可以利用EL(Expression Language)表达式来传递参数,增强了代码的灵活性。 总结一下,"jstl-impl-1.2.jar"和"jstl-api-1.2.jar"是Java Web...
欢迎测试JSTL的网页"/> 你使用的浏览器是: ${header['User-Agent']}" /> 张三" /> ${name}"/> ``` **3. JSTL Core Tag Library详解:** - **表达式操作:** - `<c:out>`:输出变量或表达式的值,...
**javawebTestJSTL.rar**可能是一个包含测试JSTL的项目,其中可能包括: 1. **JSP文件**:展示了JSTL标签的实际应用,如分页、过滤、排序等。 2. **Servlet**:可能用于处理请求,向JSP传递数据。 3. **JavaBean**:...
JSTL1.1版是为Tomcat5.x设计的,这意味着它已经过测试,可以在这些版本的Tomcat服务器上稳定运行。Tomcat5.x是一个流行的应用服务器,它支持Servlet 2.4和JSP 2.0规范,与JSTL1.1的兼容性确保了开发者可以在不升级...
在【描述】中提到的“亲测可用”,意味着这些jar包已经过实际测试,可以在项目中正常使用,无需担心兼容性问题。 **JSTL Core标签**: 1. `<c:if>`:条件判断,根据表达式的值决定是否执行相应的代码。 2. `...
`value`属性是必需的,用于指定要显示的JSTL表达式或字符串。`defaultvalue`则是在表达式计算失败时使用的备选值。`escapeXml`属性决定是否对特殊字符进行转义,如将`&`转换为`&`。如果未设置`defaultvalue`,`...
### JSTL (JSP Standard Tag Library) 详解 #### JSTL 概述 JSTL(JSP Standard Tag ...以上内容详细介绍了JSTL的核心概念、版本差异、标签库类型以及EL表达式语言的使用方法,为读者提供了全面的JSTL知识体系。
例如,通过EL表达式`${someBean.property}`获取对象属性,然后用JSTL标签`${someBean.property}">`来输出。 **安装和使用JSTL:** - 首先需要将JSTL的jar包(如`jstl-1.2.jar`和`standard-1.1.2.jar`)添加到项目的...
随后,可以在你的JSP页面中测试EL表达式的使用情况,比如通过`<%= %>`或`${bean.property}"/>`等方式访问JavaBean的属性,检查是否能正确显示预期的数据。 总之,要使Tomcat 5.5.28支持EL表达式,关键在于正确配置`...