设为首页 收藏本站
查看: 335|回复: 0

[经验分享] Tomcat中的JSTL配置与使用

[复制链接]

尚未签到

发表于 2017-2-1 13:03:44 | 显示全部楼层 |阅读模式
  现在不怎么做前台开发,对jstl已经很陌生了,偶尔要用的时候很多基本的东西一下想不起来,故转载本文用作备用资料。
  原文出处:http://blog.csdn.net/rocket5725/archive/2009/03/31/4038403.aspx
  ======================================================================
  一、在Tomcat中安装JSTL

前提 OS: WIN2003;Tomcat5.5;tomcat已经配置好。


1.准备jstl

   到http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/下载jakarta-taglibs-standard-1.1.2.zip

解压后成为jakarta-taglibs-standard-1.1.2


2.准备web开发目录

   比如我的web目录系统默认目录%tomcat_home%\webapps\ROOT下,工作目录为ROOT,也可以自定义工作目录,但必须要保证工作目录下建立WEB-INF\lib,WEB-INF\classes


3.拷贝.jar文件

   将jakarta-taglibs-standard-1.1.2\lib\下的两个jar文件:standard.jar和jstl.jar文件拷贝到工作目录的\WEB-INF\lib\下


4.拷贝.tld文件

 将jakarta-taglibs-standard-1.1.2\tld\下的15个tld类型文件拷到"Working folder\WEB-INF\tld"下


5.在工作目录下的\WEB-INF\下建立web.xml文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app 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-app_2_4.xsd"
version="2.4">
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt-1_0</taglib-uri>
<taglib-location>/WEB-INF/tld/fmt-1_0.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt-1_0-rt</taglib-uri>
<taglib-location>/WEB-INF/tld/fmt-1_0-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core-1_0-rt</taglib-uri>
<taglib-location>/WEB-INF/tld/c-1_0-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core-1_0</taglib-uri>
<taglib-location>/WEB-INF/tld/c-1_0.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/tld/sql.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql-1_0</taglib-uri>
<taglib-location>/WEB-INF/tld/sql-1_0.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql-1_0-rt</taglib-uri>
<taglib-location>/WEB-INF/tld/sql-1_0-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
<taglib-location>/WEB-INF/tld/x.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/x-1_0</taglib-uri>
<taglib-location>/WEB-INF/tld/x-1_0.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/x-1_0-rt</taglib-uri>
<taglib-location>/WEB-INF/tld/x-1_0-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/fn</taglib-uri>
<taglib-location>/WEB-INF/tld/fn.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/permittedTaglibs</taglib-uri>
<taglib-location>/WEB-INF/tld/permittedTaglibs.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/scriptfree</taglib-uri>
<taglib-location>/WEB-INF/tld/scriptfree.tld</taglib-location>
</taglib>
</web-app>
   

6.建立一个名为test.jsp文件

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>测试你的第一个使用到JSTL 的网页</title>
</head>
<body>
<c:out value="欢迎测试你的第一个使用到JSTL 的网页"/>
</br>你使用的浏览器是:</br>
<c:out value="${header['User-Agent']}"/>
<c:set var="a" value="David O'Davies" />
<c:out value="David O'Davies" escapeXml="true"/>
</body>
</html>
   

7.显示结果:

欢迎测试你的第一个使用到JSTL 的网页

你使用的浏览器是:

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SailBrowser; .NET CLR 1.1.4322) David O'Davies
  

8.注意的问题

主要的一个问题还是路径的问题,笔者配置了好几次都不能成功,就是把工作目录给弄错了,把项目的目录误认为是工作目录,一直在项目的目录下配置文件,其实应该在工作目录下配置,当然可以把工作目录改成项目的目录,问题也就可以解决了。


9.常出现的问题和提示:

org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application

出现这个问题主要一种可能是工作目录的\WEB-INF\lib\下缺少standard.jar和jstl.jar文件,另外一种可能是web.xml没有进行TAG的正确配置。

According to TLD or attribute directive in tag file, attribute value does not accept any expressions

应用部署运行的时候出现JSP异常, 发生在使用JSTL库的时候: According to TLD or attribute directive in tag file, attribute value does not accept any expressions, 可能是因为使用了JSP2.0版本, 同时又没有使用JSTL core库的备用版本(RT库), 以下有两种处理方法:


a. 修改web.xml.

<web-app 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-app_2_4.xsd" version="2.4">


改为2.3版本的

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>


b. 使用JSTL core RT库

JSTL core库的有两种taglib伪指令, 其中RT库即是依赖于JSP传统的请求时属性值, 而不是依赖于EL来实现(称为EL库.JSP2.0将支持EL)


JSP中使用<%@ taglib uri=http://java.sun.com/jstl/core prefix="c"%>在2.3版本都可以,在2.4就不行了, 难道是版本不兼容吗?


只要将

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>

改为

<%@ taglib uri=http://java.sun.com/jstl/core_rt prefix="c"%>

就没有问题了


三、标签的使用


C标准标签库

Taglib-http://java.sun.com/jstl/core

基础:

1.jsp页面引入C标签库:

<@taglib uri=”http://java.sun.com/jstl/core” prefix=”c”>   //引入标签库 前缀为c


2.c标签库的标签列表

C标签库例举

标签名   用处

<c:choose> 

<c:forEach> 

<c:forTokens> 

<c:if> 

<c:import> 

<c:otherwise> 

<c:out>   把对象的数值输出到JspWriter

<c:param> 

<c:redirect> 

<c:remove>   删除某个变量或属性

<c:url> 

<c:when> 

<c:set>    1.   用于在某个作用范围(Request、Session、Application等)中设置某个值

                2.   设置某个对象的属性

<c:catch>   捕获嵌在它里面的标签抛出异常


(1)<c:catch>标签

作用: 捕获嵌在它里面的标签抛出异常

<%@taglib uri=”http://java.sun.com/jstl/core” prefix=”c”%>
<%@page contentType=”text/html;charset=gb2312” %>
<html>
<head><title>c:catch标签演示</title></head>
<body>
<c:catch var=”myException” >   //设置异常句柄,好比JAVA的 Exception e一样
<%
String str=”abc”;
int   i =Integer.parseInt(str);   //此处转换产生异常,因为abc字符串不能转换成数值
%>
</c:catch>
异常:<c:out value=”${myException }”/>
</body>
</html>
  

(2)<c:set>标签

作用: 1.用于在某个作用范围(Request、Session、Application等)中设置某个值

2.设置某个对象的属性

<%@taglib uri=”http://java.sun.com/jstl/core” prefix=”c”%>//引入标签库,设置前缀
<%@page contentType=”text/html;charset=gb2312”%>
<html>
<head><title>演示c:set标签</title></head>
<body>
<c:set var=”objInRequest” value=”abcStr” scope=”request” />
//相当于request.setAttribute(“objInRequest”,”abcStr”)
<c:out value=”${objInRequest}”/>
//在request中获取objInRequest属性,将其值输出到JspWriter
</body>
</html>
  User.java //这是一个javabean对象的定义

package dev;
public class User{
public int id;
public String username;
public String password;
//public TYPE getter….
//public void setter….
}
  //JSP页面

<%@taglib uri=”http://java.sun.com/jstl/core” prefix=”c”%>
<%@page contentType=”text/html;charset=gb2312”%>
<jsp:useBean id=”userHandle” class=”dev.User”/>
<html>
<head><title>演示c:set标签</title></head>
<body>
<c:set target=”${userHandle}” property=”id” value=”123”/>
<c:set target=”${userHandle}” property=”username” value=”lindeqiang”/>
<c:set target=”${userHandle}” property=”password”>
This is my password //注意,这里的password的value的值也可以赋值在<c:set的标签体中
//写成<c:set target=”${userhandle}” property=”password” value=”123456”/>也可以
</c:set>
ID:<c:out value=”${ userHandle .id}”/><br>
User:<c:out value=”${userHandle.username}”/><br>
PWD:<c:out value=”${userHandle.password}”/><br>
</body>
</html>
  3.<c:out>标签

作用: 把对象的数值输出到JspWriter

属性:

属性说明

属性   类型   描述

value   Object   计算的表达式

escapeXml   Boolean   是否将转换成字符实体代码,默认为true

default   Object   D当value的对象不存在时(null),就输出这个default的值

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-336147-1-1.html 上篇帖子: tomcat中web.xml的配置详解 下篇帖子: MyEclipse中用Tomcat部署项目时遇到的问题2:Document base D:/Tomcat 5.5/server/webapps/ admin d
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表