- 浏览: 119736 次
- 性别:
- 来自: 湖南
文章分类
最新评论
-
一步一个天涯:
good.
tomcat配置热启动,我试过有用的方式 -
yuechen323:
哥们!!看了你博客的大部分文章,写的都非常的通俗易懂,谢谢~ ...
我在java中碰到的设计模式 -
悲剧了:
...
jstl
98. 现在来看一下 el 表达式对运算符的支持:
1+1=${1+1}这样能计算出来,这里面支持通常的运算
10/5=${10/5}
10 div 5 = ${10 div 5} 效果是一样的。
10%3 = ${10%3} 取余是1
10 mod 3 = ${10 mod 3} 这个也是取余
还有
== eq
!= ne
< lt
> gt
<= le
>= ge
&& and
|| or
! not
/ div
% mod
现在来看一个为不为空的取法:
servlet里面的代码:
request.setAttribute("value2","");
request.setAttribute("value3",new ArrayList());给一个空的集合
request.setAttribute("value4","asdf");
request.setAttribute("value5",null);
在jsp页面代码:
value1:${empty value1} value1我没有设置啊,如果为空他就会返回true
value2:${empty value2} true
value3:${empty value3} true 集合为空他也能检测出来
value4:${empty value4} false 有值就是false
value5:${empty value5} true
value5:${!empty value5} 你取一下非,运行就是false了。
99. el得配合那套标签才能发挥他强大的作用啊。
使用el 你看咱们什么包都没有引入,但是他是有要求的,要求我们的,你看我们现在使用的tomcat,他要实现一定的规范才行。
你看我们在建立项目的时候,用的是j2ee1.4,你得用这个1.4 5.0的话会有一些问题。也就是说我们的web服务器要实现j2ee1.4规范。其实这个1.4规范他就实现了servlet1.4规范,其实就是jsp2.0的规范。
这是他说的,我用5.0也可以用啊。
你得注意了,你的工程的web.xml里面头部引入的schema一定要是servlet2.4的啊,不然的话,你在jsp页面上拿值是拿不到的。
100. 以后你在jsp里面别写什么尖括号,百分号之类的东西了。
jstl也是一个规范,sun对他做 了实现 ,就像jdbc一样,oracle对他做了一个实现,其他数据库厂商也对他做了一个实现。
在那个包中都有一些实例用法 ,你可以解开来看看
你要用这个jstl的话,你得拷两个 jar包,一个是standard.jar 一个是 jstl.jar
使用el不要导包,但是使用jstl就要导包了。
1. jstl中还是操作xml的,访问数据库的,函数标签库,也就是函数库。主要学习核心库。
核心库一般以c 开头,
2. 现在来看一下这个out标签:
<c:out value="abcd"></c:out>
现在输出就是abcd了,你输出一个原封字符串,你就可以这样输出了,其实你要输出字符串的话,在jsp里面你就直接写就可以了。
3. 我们为什么能用这个标签,就是因为有一个很重要的文件叫 .tld 的文件
采用taglib 引入标签,其实就是引入 .tld文件。
http://java.sun.com/jsp/jstl/core 1.1的引法
http://java.sun.com/jstl/core 1.0的引法
我们现在都用1.2了,就是第一种引法,这些东西王勇是在eclipse下面的standard.jar文件的META-INF下面看到,我是在jstl1.2.jar中的META-INF下看到的。
4. 关于这个前缀最好跟官方的<short-name>c<short-name>一样,你这样一写,大家一看就知道,你如果用什么abc 一写,人家一看就不是很明白了。
5. 现在来输出在servlet里面设置的值 :
<c:out value="${hello}"></c:out>输出hello world
这还不如直接使用
${hello}效果是一样的。用上面那个还麻烦一些还得引库,其实在有些情况下还是好一些,例如他就有一个缺省值的概念,也就是说当你什么都没有找到的时候,就给我输出一个值 :
<c:out value="${abc}" default="123"></c:out>输出123也就是说在这种情况下是有好处的。
6. 现在在servlet里面设置html字符串:
request.setAttribute("welcome","<font color='red'>北京欢迎你</font>");我们的意图就是一出来他是红的。先用el 来显示一下,看看区别:
welcome(el表达式:):${welcome}结果就是显示红色字体。现在用 <c:out>来一下:
welcome(default):<c:out value="${welcome}"/>显示结果是 <font color='red'>北京欢迎你</font>
所以c:out能显示,el则不能,el给解析了。
7. c:out为什么能把font给输出来呢?一个属性决定的:他有一个属性,这个属性默认值是true
<c:out value="${welcome}" escapeXml="false"></c:out>
8. 现在来看c:set 以前在一个页面中写:
<%
int i = 100;
%>你这么一写只能在这个页面中使用,使用c:set的话,还可以设置范围
<c:set value="123" var="temp" scope="page"></c:set> 这个是默认的范围。
可以直接取:${temp}
假设我这个变量我不想要了,可以考虑使用c:remove
如下:
<c:remove var="temp"/>
现在再来显示一下,看看显示什么,结果是什么都没有
${temp} 可以想到一个什么东西,以前什么电话字段中的内容为空的时候,我们 是怎么处理的啊,还用了一个三元运算符来搞,为null显示什么,活学活用啊。
9. <c:catch>标签,现在不介绍,就相当于try catch
10. <c:if>为true的话,他就会进入这个标签里面。这个标签比较好用。在servlet里面设几个值
request.setAttribute("v1",1);
request.setAttribute("v2",2);在jsp页面
<c:if test="${v1 lt v2}">
v1 小于 v2
</c:if>
11. <c:if>标签还有一个属性 var
<c:if test="${v1 lt v2}" var="v">
v1 小于 v2
</c:if>
我设置了这个变量,在这个页面中我都可以使用:
v:${v} 就显示为一个true 这个变量存放的是上面比较的结果。
12. 其实在很多情况下我们还要使用if else在这个jstl里面的if else是这么来使用的,使用
<c:choose> <c:when> <c:otherwise>这三个合起来用的,这个<c:choose>不能单独使用,至少得有一个<c:when> <c:otherwise>可以没有.如果没有的话,会报500错误的。
示例:
<c:choose>
<c:when test="${v1 lt v2}">
v1 小于 v2
</c:when>
<c:otherwise>
v1 大于v2
</c:otherwise> 注意这个不能放在c:when的前面。
</c:choose>
13. 还在servlet里面设置一个值
List userList = ewn ArrayList();
userList.add("user1");
userList.add("user2");
request.setAttribute("userlist",userList);如果他为空我们来做些什么
jsp页面:
<c:choose>
<c:when test="${empty userlist}">
用户列表为空:
</c:when>
<c:otherwise>
用户列表不为空
</c:otherwise>
</c:choose> otherwise在c:choose里面只能有一个
14. 现在来看一下结构:在servlet里面
Group group = new Group();
group.setName("动力节点");
List users = new ArrayList();
for(int i=0;i<10;i++){
User user = new User();
不写了,太简单了。
} 在Jsp页面 你用表格来显示的话,会好一些
<table border="1">
<tr>
<td>姓名</td>
<td>年龄</td>
<td>所属组</td>
</tr>
以前写法肯定是<% List users = request.getAttribute("users");
for(Iterator iter = users.iterator();iter.hasNext();){
User user = (User)iter.next();
}
%>
</table>
15. 现在他把那个for()注释了,那么 你在页面中肯定是空了,你不用标签的话,就这么 写
<% List users = request.getAttribute("users");
if(users == null || users.size() == 0){
%>
<tr>
<td colspan="3">没有符合条件的数据</td>
</tr>
<%>
}else{
for(Iterator iter = users.iterator();iter.hasNext();){
User user = (User)iter.next();
}
}
%> 这多麻烦 啊,下面用标签来写
16.
<table border="1">
<tr>
<td>姓名</td>
<td>年龄</td>
<td>所属组</td>
</tr>
<c:choose>
<c:when test="${empty users}">
<tr>
<td colspan="3">没有符合条件的数据</td>
</tr>
<c:otherwise>
<c:forEach items="${users}" var="user">
<tr>
<td>${user.username}</td>
<td>${user.age}</td>
<td>${user.group.name}</td>
</tr>
</c:forEach>
</c:otherwise>
</c:when>
</c:choose>
</table>
17. 现在有这样一种需求,如果这个值 能被2整除就给变红色显示:怎么做呢?c:forEach有一个属性
varStatus
<c:forEach items="${users}" var="user" varStatus="vs">
<c:choose>
<c:when test="${vs.count % 2 == 0}">
<tr bgcolor="red">
</c:when>
<c:otherwise>
<tr> 不能被2整除不需要变,就是一个tr
</c:otherwise>
</c:choose>
<td>${user.username}</td>
<td>${user.age}</td>
<td>${user.group.name}</td>
</tr> 这么 一写他会报一个错,你看前面有一个tr,没有结束,我又写了一个tr,他就不认了,这个没有关系,一运行就没事了。
</c:forEach>
18. c:forEach还有这些 begin end step属性
step这个是步长。如果你设置步长是2的话,那么就是52 54 56了,或者51 53 55.
19. 现在用c:forEach 来 循环输出 map
<c:forEach items="${map}" var="v">
${v.key} = ${v.value}
</c:forEach>
20. 这个jstl没有那么强大,就负责一些输出输出逻辑的,如果像以前那样嵌套java的代码,那功能就大了,这也就是满足jsp页面就是一些标签的原则。
21. 还有一个c:forTokens输出采用某种符号间隔的字符串。这个使用频率并不高。
servlet里面设置
request.setAttribute("strTokens","a#b#c#d");
jsp页面
<c:forTokens items="${strTokens}" delims="#" var="v">
${v}<br>
</c:forTokens>
22. 现在来看c:catch 因为不能使用java代码,
先看看java代码的形式吧
<%
try{
Integer.parseInt("abc");
}catch(NumberFormatException e){
out.println(e.getMessage());
}
%>
<c:catch>
<%
Integer.parseInt("abc");
%>
</c:catch>
23. 现在来看c:import 把一个页面引进来
<c:import url="http://localhost:8080/drp/index.html"/>
24. 还有一个c:url这个标签可以生成一个url,一般结合 c:param来使用
<c:url value="http://localhost:8080/drp/sysmgr/user_add.jsp">
<c:param name="username" value="Tom"/>
<c:param name="age" value="20"/>
</c:url>这样形成的url后面就会跟上参数
http://localhost:8080/drp/sysmgr/user_add.jsp?username=Tom&age=20
25. 还有一个c:redirect重定向
<c:redirect context="/drp" url="index.html">
context指定在到哪去,url:指定到哪个页面。
</c:redirect>
他没有调成功,用这个出错了,没事,一般不用,这个的话,在sevlet里面一定要会用。
26. 现在来看一下,这个fmt这个标签库,这个标签库叫格式化相关的,也叫国际化相关的。其实主要还是国际化相关,以fmt 开头 的。我们只了解两个常用 的,一个格式化时间,一个格式化数值。
27. <fmt:formatDate pattern="设置一种模式,最主要就掌握这种吧"
在servlet里面
request.setAttribute("today",new Date());
在jsp页面你还得引一下
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 前缀可以随便命名,最好跟他的发布名称是一样的。
today(default): <fmt:formatDate value="${today}" /> 显示效果:2009-11-16默认只有年月日,没有时分秒
<fmt:formatDate value="${today}" type="date"/>显示 为:2009-11-16默认为date
<fmt:formatDate value="${today}" type="time"/>
显示效果只有 时分秒
<fmt:formatDate value="${today}" type="date"/>
<fmt:formatDate value="${today}" type="both"/>
现在效果为:年月日加时分秒的格式显示。
<fmt:formatDate value="${today}" dateStyle="short"/> 09-11-16 前面 20没有了,
<fmt:formatDate value="${today}" dateStyle="medium"/> 2009-11-16这个是默认的
<fmt:formatDate value="${today}" dateStyle="long"/> 2009年11月16日
<fmt:formatDate value="${today}" dateStyle="full"/> 2009年11月16日 星期一 这个显示的结果来源于操作系统里面的区域时间。
<fmt:formatDate value="${today}" pattern="yyyy/mm/dd HH:mm:ss"/>
<fmt:formatDate value="${today}" pattern="yyyy/mm/dd HH:mm:ss" var="d" />把结果放到一个变量里面
both:二者都,二者
medium:中间
28. 现在来看格式化数字 c:formatNumber,这个也比较常见
servlet里面
request.setAttribute("n",1234567.123);
jsp页面
n(default)<fmt:formatNumber value="${n}"/>
效果为:1,234,567.123 自动加上了 ,
<fmt:formatNumber value="${n}" pattern="###,###.####"/>
效果为:1,234,567.123就三位 不补0
<fmt:formatNumber value="${n}" pattern="###,###.0000"/>
效果为:1,234,567.1230 补0
<fmt:formatNumber value="${n}" groupingUsed="false"/> 这样千分位就没有了
效果:1234567.123
29. 现在来看jstl中的函数库,
在servlet中
request.setAttribute("hello","hello world");
jsp页面
hello.length(jsp脚本):<%=((String)request.getAttribute("hello")).length()%>
页面头部还得引入
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
hello.length(jstl函数,jstl函数必须使用在el表达式中,语法:前缀 + 冒号 + 函数名):
${fn:length (hello) }
最好用 gt 你用 > < 就可能会和一些标签冲突
<c:choose>
<c:when test="${fn:length(userList) gt 0}">//判断这个集合是不是大于0
存在用户数据
</c:when>
<c:otherwise>
没有符合条件的数据
</c:otherwise>
</c:choose>
30. 假设我现在就想在jsp里面直接调用类的一个方法:演示:
写一个类 MyFunctions
//方法必须为static public 的,这是要求
public static String sayHello(String name){
return "Hello " + name;
}
你一写完,你还得描述一下,得用一个.tld的文件来描述一下,这个文件就叫myFunctions.tld
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>my functions library</description>
<display-name>my functions</display-name>
<tlib-version>1.0</tlib-version>
<short-name>my</short-name> //跟写官方似的指定最好以什么开头
//描述你的uri
<uri>http://www.bjpowernode/functions</uri>
<function>
<name>say</name> 在页面中调用 的时候用say
<function-class>com.bjpowernode.jstl.MyFunctions</function-class>
<function-signature>java.lang.String sayHello(java.lang.String)</function-signature>
</function>
</taglib>
发表评论
-
读取配置的又一种读法
2010-08-29 11:05 806/** * 读取配置文件 * */ pub ... -
Thread.sleep(long)和object.wait(long)的共同点和不同点
2010-08-20 16:11 1537Thread.sleep(long)和object. ... -
取得context.xml中配置的连接池的Java代码的写法
2010-08-18 11:00 10437. bind(String name,Object obj ... -
uri与url的区别
2010-08-18 10:00 123323. 所以我们得把这个login.jsp这个页面除外。 ... -
java中的类加载器,与tomcat自己又做了一些类加载器的不同
2010-08-17 11:11 152452. 现在来讲一下java中的类加载器的原理(双亲委派机制 ... -
Cache-control缓存控制
2010-08-17 11:05 1190HTTP头的Expires与Cache-control ... -
map
2010-08-17 10:32 121479. map是一个非常强大的数据结构,他还可以用来表示一个 ... -
request.getSession(true)和request.getSession(false)的区别
2010-08-17 10:10 183677. 现在来看一下 request.getSession ... -
之前的一个表之间的关联我没能查出来
2010-08-17 10:07 77565. 现在要做这个分销 ... -
验证码:
2010-08-17 10:03 118558. 接下来看一下,验证码,现在很多网站都加上了验证码,其 ... -
Listener
2010-08-17 09:56 975107. 我们再介绍一个比 ... -
Jsp中的静态包含与动态包含:
2010-08-17 09:55 80899. 现在来讲静态和动态include 关于这个inc ... -
转发情况下的查询条件保持住:
2010-08-17 09:53 68396. 重点说一下上面的东西,${param.clientN ... -
ThreadLocal 我所用到的地方
2010-08-16 15:35 125492. 现在来看怎么把三 ... -
一个servlet解决增删改查
2010-08-16 15:26 1763现在用三大框架来开发,快是很快,什么事务,转发的非常容易了,回 ... -
如果你的项目 数值类型要求非常严的话请用BigDecimal
2010-08-16 15:12 75558. 他说这个计算的事,如果你使用什么float,do ... -
不同服务器上开发程序时间同步的问题
2010-08-16 15:08 105049. 你现在在操作日期这个字段上放值,一般 是直接放一个n ... -
定位解决默认选中
2010-08-16 15:05 746jstl: <select name="ca ... -
成员变量与类的属性的区别
2010-08-16 14:43 1231public class User{ pr ... -
java中synchronized浅析
2010-08-16 14:40 81069. 你也可以不在方法定义的时候声明synchroniz ...
相关推荐
jstl-1.2.1,之前的版本需要在服务器中配置一下,而且它分成了两个jar(jstl.jar和standard.jar)还有一个tld文件,而1.2已经不用配置了,直接把javax.servlet.jsp.jstl-1.2.1.jar和javax.servlet.jsp.jstl-api-1.2.1...
`jstl-api-1.2.jar` 和 `jstl-impl-1.2.jar` 是JSTL的两个关键组件: 1. **jstl-api-1.2.jar**:这是JSTL的API接口定义,包含了所有JSTL标签库的接口和抽象类。开发人员在编写JSP页面时需要导入这个包,以便使用...
当然可以帮助您撰写关于`jstl.jar`和`standard.jar`这两个JAR包的介绍。以下是一段示例文本: --- ### JAR包资源介绍 #### 1. jstl.jar `jstl.jar`(JavaServer Pages Standard Tag Library,简称 JSTL)是一个...
**JSTL(JavaServer Pages Standard Tag Library)** 是一个标准的标签库,用于简化JavaServer Pages(JSP)开发。它提供了许多预定义的标签,使得开发者可以更方便地处理常见任务,如控制流、迭代、XML处理等,而...
JSTL,全称为JavaServer Pages Standard Tag Library,是Java服务器页面标准标签库,它提供了一系列的标签来简化JSP开发,使开发者能够更高效地编写动态网页。JSTL的主要目标是减少在JSP页面中使用脚本元素,提升...
**JSTL(JavaServer Pages Standard Tag Library)中文帮助文档** JSTL 是一套用于 JavaServer Pages (JSP) 的标准标签库,旨在简化 JSP 开发,提高代码的可读性和可维护性。它提供了多种核心标签和扩展标签,包括...
**JSTL(JavaServer Pages Standard Tag Library)**是一个用于JSP的标准标签库,它提供了一系列的标签,用于简化JSP页面中的业务逻辑处理。JSTL的主要目标是提高JSP开发的可维护性和可读性,通过使用预定义的标签,...
"jstl-impl-1.2.jar"和"jstl-api-1.2.jar"是JSTL 1.2版本的两个关键组件,它们在Java Web应用中起着至关重要的作用。 1. **jstl-api-1.2.jar**: 这个jar文件包含了JSTL的API接口定义。它定义了所有JSTL标签库的接口...
**JSTL(JavaServer Pages Standard Tag Library)**是一个用于JavaServer Pages(JSP)的标签库,旨在简化Web应用程序的开发。它提供了一系列预定义的标签,使得开发者可以通过简单的XML标记来处理常见任务,而无需...
**JSTL(JavaServer Pages Standard Tag Library)详解** JSTL,全称为JavaServer Pages Standard Tag Library,是Java EE平台中的一个标准标签库,它为JSP开发者提供了丰富的、可重用的组件,用于处理常见任务,如...
JSTL,全称为JavaServer Pages Standard Tag Library,是Java EE平台中用于简化JSP页面开发的一组标准标签库。它提供了一系列预定义的标签,用于处理常见的任务,如迭代、条件判断、国际化、XML处理等,使得JSP代码...
**JSTL(JavaServer Pages Standard Tag Library)是Java服务器页面的一个标准标签库,它提供了一组用于处理常见Web开发任务的标签,如迭代、条件判断、XML处理等,极大地简化了Java Servlet和JSP中的代码。...
JSTL,全称JavaServer Pages Standard Tag Library,是JavaServer Pages(JSP)标准标签库,它提供了一系列标签来简化JSP页面的编写,使页面逻辑更清晰,代码更简洁。在Java Web开发中,JSTL经常与EL(Expression ...
今天做项目,用到了el表达式和jstl,在tomcat6.0上跑得好好的,没想到copy到tomcat5.5后,服务器起不来了,是tomcat版本的问题。查阅了不少资料,现在总结如下: 错误信息: java.lang.NoClassDefFoundError: javax...
jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2...
**JSTL(JavaServer Pages Standard Tag Library)详解** JSTL,全称为JavaServer Pages Standard Tag Library,是Java Web开发中的一个标准标签库,它为开发者提供了在JSP页面中处理常见任务的标签,例如迭代、...
**购物车(JSTL实现)** 购物车是任何电子商务网站的核心组成部分,它允许用户临时存储想要购买的商品,以便在结账时一次性处理。在这个项目中,我们将关注使用JavaServer Pages (JSP) 和 JavaServer Pages ...
JavaServer Pages Standard Tag Library,简称JSTL,是用于Java Web开发的标准标签库,它提供了一组用于处理常见任务的标签,比如迭代、条件判断、XML处理等,从而减轻了在JSP页面中使用Java脚本的复杂性。JSTL ...
1. 添加JSTL库:将JSTL的JAR文件(如`jstl.jar`和`standard.jar`)放入项目WEB-INF/lib目录下,或者如果使用Maven或Gradle,将依赖添加到构建文件中。 2. 引用JSTL库:在JSP页面的顶部,使用`<%@ taglib %>`指令...
在给定的压缩包文件中,我们有两个重要的JAR文件:`jstl-impl-1.2.jar`和`jstl-api-1.2.jar`。这两个文件是JSTL 1.2版本的核心组成部分。 1. **JSTL API (jstl-api-1.2.jar)** 这个JAR文件包含了JSTL的接口和抽象...