- 浏览: 347385 次
- 性别:
- 来自: 沈阳
文章分类
最新评论
-
haiw:
谢谢分享
Oracle 的递归查询(树型查询) -
nomandia:
除非是通过open打开的窗口,否则没法close的
JS 关闭当前页面 -
c30989239:
注意 SimpleDateFormat 是非线程安全的
Java 获取网络时间并在jsp中显示 -
归来朝歌:
不错,以后可能用得上
Java 操作Excel -
luhantu:
不错!学习了
Java 操作Excel
摘自http://jzinfo.iteye.com/blog/507387
http://wing123.iteye.com/blog/356585
参照http://my.oschina.net/aps/blog/107922
第一种方法:
创建的标签类,必须实现javax.servlet.jsp.tag接口.
下面是编写的一个简单的使用标签类的例子,该标签用来输出一行文字信息:
Tag类:userTagLib
Java代码
/*
* 标签处理类UserTagLibrary直接实现接口javax.servlet.jsp.tagext.tag接口
* 已经全部实现了Tag接口中的6个方法
* **/
package com.longweir.taglib;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.*;
import javax.servlet.http.*;
import java.io.*;
//实现接口Tag中的6个方法来编写Tag处理类
public class userTagLib implements javax.servlet.jsp.tagext.Tag
{
private PageContext pagecontext;
private Tag Parent;
public void setPageContext(PageContext pagecontext)
{
this.pagecontext=pagecontext;
}
public void setParent(Tag parent)
{
this.Parent=parent;
}
public Tag getParent()
{
return Parent;
}
//开始标签处理
public int doStartTag()
{
return SKIP_BODY; //此处是空标签体,所以直接跳过
}
//结束标签体处理
public int doEndTag()
{
try
{
pagecontext.getOut().print("Hello,欢迎使用JSP标签对象");
}
catch (Exception e)
{}
return EVAL_PAGE; //继续执行后续JSP页面代码
}
//空实现release方法
public void release()
{
//空实现
}
}
编写tld标签库文件userTagLib.tld,用来映射处理的标签所对应的标签类:
Xml代码 收藏代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.1</tlib-version>
<jsp-version>2.1</jsp-version>
<short-name>userTagLib</short-name>
<uri>/MyuserTagLib</uri>
<tag>
<name>Hello</name>
<tag-class>com.longweir.taglib.userTagLib</tag-class>
<body-content>empyt</body-content>
</tag>
</taglib>
在web.xml文件中,配置标签库的信息
Xml代码 收藏代码
<jsp-config>
<taglib>
<taglib-uri>/userTagLib</taglib-uri>
<taglib-location>/WEB-INF/tlds/userTagLib.tld</taglib-location>
</taglib>
</jsp-config>
编写一个简单的hello01.jsp文件来显示标签内容:
Java代码 收藏代码
<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib uri="/userTagLib" prefix="myTag" %>
<html>
<head>
<title>HelloApp</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<b>Nice to meet you:${param.username}</b> <br>
<p>显示标签库中的信息</p>
<h1><myTag:Hello/></h1>
</body>
</html>
提交页面:http://localhost:8085/hello/hello01.jsp?username=luoxianqiao (username是提交的request参数)
显示结果为:
Nice to meet you:luoxianqiao
显示标签库中的信息
Hello,欢迎使用JSP标签对象
一般编写标签类直接继承自TagSupport即可,该类实现了接口IetreationTag接口,直接继承类实现的代码更简单,如下:
package com.longweir.taglib;
import javax.servlet.http.*;
import javax.servlet.jsp.tagext.*;
import java.io.*;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.JspWriter;
public class userTagLib2 extends javax.servlet.jsp.tagext.TagSupport
{
//结束标签体处理
public int doEndTag()
{
/*
String paramvalue=null;
paramvalue=pageContext.getRequest().getParameter(name); //pageContext已在TagSupport中定义
JspWriter out=pageContext.getOut();
try
{
if (paramvalue!=null)
out.print(paramvalue);
else
out.print("参数未能获取");
}
catch (Exception e)
{
e.printStackTrace();
}
*/
JspWriter out=pageContext.getOut();
try
{
out.print("成功显示了标签内容");
}
catch (Exception e)
{
e.printStackTrace();
}
return EVAL_PAGE; //继续执行后续JSP页面代码
}
}
第二种方法:
jstl标签库的配置
* 将jstl.jar和standard.jar拷贝到WEB-INF/lib下(如果使用el表达式,不用拷贝这两个jar)
注意:jstl必须在能够支持j2ee1.4/servlet2.4/jsp2.0版本上的容器才能运行,这个环境
是目前较为常用的环境
标签库的使用
* 采用taglib指令引入
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
自定义函数库:
1、定义类和方法(方法必须是public static)
2、编写自定义tld文件,并且将此文件放到WEB-INF或WEB-INF任意子目录下
3、在jsp中采用taglib指令引入自定义函数库
4、采用 前缀+冒号(:)+函数名 调用即可
MyFunctions.java
Myfunctions.java代码
public class MyFunctions {
public static String sayHello(String name) {
return "Hello " + name;
}
}
myfunctions.tld
自定义标签
Xml代码
<?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>http://www.bjsxt.com/functions</uri>
<function>
<name>sayHello</name>
<function-class>com.bjsxt.struts.MyFunctions</function-class>
<function-signature>java.lang.String sayHello(java.lang.String)</function-signature>
</function>
</taglib>
jstl_fn.jsp
注意与前面的配置文件myfunctions.tld相对应,
prefix对应<short-name>my</short-name>
uri对应 <uri>http://www.bjsxt.com/functions</uri>
可使用以下面两种方式给name赋值:
1、${my:sayHello("David") }
2、request.setAttribute("name", "David");
Java代码
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ taglib uri="http://www.bjsxt.com/functions" prefix="my" %>
<%
request.setAttribute("name", "David");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>testTemplate</title>
</head>
<body>
${my:sayHello(name) }
</body>
</html>
补充:web-app version="2.4"
有时也需要在web.xml中添加对标签的定义:
Xml代码
<jsp-config>
<taglib>
<taglib-uri>www.bjsxt.com/functions</taglib-uri>
<taglib-location>/WEB-INF/my.tld</taglib-location>
</taglib>
</jsp-config>
注意:
可能出现的异常
1、The function xxx must be used with a prefix when a default namespace is not specified
--- 在jsp页面中调用方式不正确,可能将 ":" 写成了 "."
2、The function xxx cannot be located with the specified prefix
--- a) 类中定义的方法不是 public static 的方法
b) 类中的方法名称和jsp自带的标签元素冲突,重名等
http://wing123.iteye.com/blog/356585
参照http://my.oschina.net/aps/blog/107922
第一种方法:
创建的标签类,必须实现javax.servlet.jsp.tag接口.
下面是编写的一个简单的使用标签类的例子,该标签用来输出一行文字信息:
Tag类:userTagLib
Java代码
/*
* 标签处理类UserTagLibrary直接实现接口javax.servlet.jsp.tagext.tag接口
* 已经全部实现了Tag接口中的6个方法
* **/
package com.longweir.taglib;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.*;
import javax.servlet.http.*;
import java.io.*;
//实现接口Tag中的6个方法来编写Tag处理类
public class userTagLib implements javax.servlet.jsp.tagext.Tag
{
private PageContext pagecontext;
private Tag Parent;
public void setPageContext(PageContext pagecontext)
{
this.pagecontext=pagecontext;
}
public void setParent(Tag parent)
{
this.Parent=parent;
}
public Tag getParent()
{
return Parent;
}
//开始标签处理
public int doStartTag()
{
return SKIP_BODY; //此处是空标签体,所以直接跳过
}
//结束标签体处理
public int doEndTag()
{
try
{
pagecontext.getOut().print("Hello,欢迎使用JSP标签对象");
}
catch (Exception e)
{}
return EVAL_PAGE; //继续执行后续JSP页面代码
}
//空实现release方法
public void release()
{
//空实现
}
}
编写tld标签库文件userTagLib.tld,用来映射处理的标签所对应的标签类:
Xml代码 收藏代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.1</tlib-version>
<jsp-version>2.1</jsp-version>
<short-name>userTagLib</short-name>
<uri>/MyuserTagLib</uri>
<tag>
<name>Hello</name>
<tag-class>com.longweir.taglib.userTagLib</tag-class>
<body-content>empyt</body-content>
</tag>
</taglib>
在web.xml文件中,配置标签库的信息
Xml代码 收藏代码
<jsp-config>
<taglib>
<taglib-uri>/userTagLib</taglib-uri>
<taglib-location>/WEB-INF/tlds/userTagLib.tld</taglib-location>
</taglib>
</jsp-config>
编写一个简单的hello01.jsp文件来显示标签内容:
Java代码 收藏代码
<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib uri="/userTagLib" prefix="myTag" %>
<html>
<head>
<title>HelloApp</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<b>Nice to meet you:${param.username}</b> <br>
<p>显示标签库中的信息</p>
<h1><myTag:Hello/></h1>
</body>
</html>
提交页面:http://localhost:8085/hello/hello01.jsp?username=luoxianqiao (username是提交的request参数)
显示结果为:
Nice to meet you:luoxianqiao
显示标签库中的信息
Hello,欢迎使用JSP标签对象
一般编写标签类直接继承自TagSupport即可,该类实现了接口IetreationTag接口,直接继承类实现的代码更简单,如下:
package com.longweir.taglib;
import javax.servlet.http.*;
import javax.servlet.jsp.tagext.*;
import java.io.*;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.JspWriter;
public class userTagLib2 extends javax.servlet.jsp.tagext.TagSupport
{
//结束标签体处理
public int doEndTag()
{
/*
String paramvalue=null;
paramvalue=pageContext.getRequest().getParameter(name); //pageContext已在TagSupport中定义
JspWriter out=pageContext.getOut();
try
{
if (paramvalue!=null)
out.print(paramvalue);
else
out.print("参数未能获取");
}
catch (Exception e)
{
e.printStackTrace();
}
*/
JspWriter out=pageContext.getOut();
try
{
out.print("成功显示了标签内容");
}
catch (Exception e)
{
e.printStackTrace();
}
return EVAL_PAGE; //继续执行后续JSP页面代码
}
}
第二种方法:
jstl标签库的配置
* 将jstl.jar和standard.jar拷贝到WEB-INF/lib下(如果使用el表达式,不用拷贝这两个jar)
注意:jstl必须在能够支持j2ee1.4/servlet2.4/jsp2.0版本上的容器才能运行,这个环境
是目前较为常用的环境
标签库的使用
* 采用taglib指令引入
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
自定义函数库:
1、定义类和方法(方法必须是public static)
2、编写自定义tld文件,并且将此文件放到WEB-INF或WEB-INF任意子目录下
3、在jsp中采用taglib指令引入自定义函数库
4、采用 前缀+冒号(:)+函数名 调用即可
MyFunctions.java
Myfunctions.java代码
public class MyFunctions {
public static String sayHello(String name) {
return "Hello " + name;
}
}
myfunctions.tld
自定义标签
Xml代码
<?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>http://www.bjsxt.com/functions</uri>
<function>
<name>sayHello</name>
<function-class>com.bjsxt.struts.MyFunctions</function-class>
<function-signature>java.lang.String sayHello(java.lang.String)</function-signature>
</function>
</taglib>
jstl_fn.jsp
注意与前面的配置文件myfunctions.tld相对应,
prefix对应<short-name>my</short-name>
uri对应 <uri>http://www.bjsxt.com/functions</uri>
可使用以下面两种方式给name赋值:
1、${my:sayHello("David") }
2、request.setAttribute("name", "David");
Java代码
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ taglib uri="http://www.bjsxt.com/functions" prefix="my" %>
<%
request.setAttribute("name", "David");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>testTemplate</title>
</head>
<body>
${my:sayHello(name) }
</body>
</html>
补充:web-app version="2.4"
有时也需要在web.xml中添加对标签的定义:
Xml代码
<jsp-config>
<taglib>
<taglib-uri>www.bjsxt.com/functions</taglib-uri>
<taglib-location>/WEB-INF/my.tld</taglib-location>
</taglib>
</jsp-config>
注意:
可能出现的异常
1、The function xxx must be used with a prefix when a default namespace is not specified
--- 在jsp页面中调用方式不正确,可能将 ":" 写成了 "."
2、The function xxx cannot be located with the specified prefix
--- a) 类中定义的方法不是 public static 的方法
b) 类中的方法名称和jsp自带的标签元素冲突,重名等
发表评论
-
springmvc整合cxf webservice
2016-03-15 16:54 1323springmvc中整合cxf webservice。 ... -
JSTL fn函数中字符串拼接
2015-11-30 11:35 5263关于JSTL的标签,在网上查了很久,都是介绍fn ... -
Java 获取网络时间并在jsp中显示
2015-09-07 14:15 1894开发中经常会遇到需要将服务器时间或者网络时间显示在 ... -
记录--ReflectionUtil
2015-07-22 10:51 826import java.lang.reflect.Field; ... -
JSTL foreach及if when标签使用
2015-07-22 08:48 2091需要在jsp中加入以下标签库和函数库 <%@ ta ... -
Java 获取服务器IP和本地Ip
2015-07-21 21:39 8731在项目中经常会遇到需要获取服务器的IP和本地IP, ... -
Mybatis 模糊查询
2015-06-11 18:42 657参数中直接加入%% param.setUsernam ... -
MyBatis之增加删除修改
2015-06-11 16:32 1697insert、update、delete这三个元素分别用于执行 ... -
MyBatis 传入参数parameterType详解
2015-06-11 16:29 18796在MyBatis的select、insert、update ... -
Java 操作Excel
2015-06-10 20:54 2319前不久做过Excel的导入导出功能,其主要的难点是java如何 ... -
SpringMVC+mybatis 实现easyui中tree
2015-06-08 22:08 5329最近做项目用到了前端框架easyUI,以下是easyUI ... -
MD5加密工具类
2015-06-03 18:47 1348package base; /** * MD5加密算法 * ... -
spring+mybatis配置
2015-02-08 17:04 8841.用spring配置mybatis <?xml ver ... -
JAVA 处理JSON工具类
2014-12-31 13:49 1604以下代码为Java处理json数据的工具类,以备后用 pac ... -
Java解析及读取Json数据
2014-12-31 13:46 18701.JSON介绍 JSON比XML简单,主要体现在传输相 ... -
新版SSH整合(备用)
2014-09-01 19:40 1656在网上找的S4S2H4架构实现,现记录一下,以备后用。 附件中 ... -
jsp静态化和伪静态化
2014-06-12 16:21 833首先说说为什么要静态化。 对于现在的Web Applicat ... -
Struts2实现Excel导入
2014-05-28 17:15 2613除Struts2必须的jar包外,还需要jar包:poi ... -
ssh项目中strust2从2.0.11升级到2.3.15.1详细步骤
2014-03-28 15:33 2240将ssh项目中strust2从2.0.11升级到2.3.15. ... -
MyEclipse下创建的项目 导入eclipse(转载)
2014-03-19 17:15 814FROM:http://www.cnblogs.com/zho ...
相关推荐
本教程将深入探讨JSP自定义标签的使用,同时结合实例介绍分页和下拉框绑定值的封装。 一、JSP自定义标签基础 1. **定义标签库(Tag Library)**:自定义标签首先需要定义一个TLD(Tag Library Descriptor)文件,它...
在JavaServer Pages (JSP) 技术中,自定义标签是扩展JSP功能的关键手段,它允许开发者创建可重用的组件,提高...在给定的实例中,我们可以看到一个简单的自定义标签的实现和使用过程,涵盖了JSP自定义标签的基本流程。
通过以上内容的学习,我们可以理解JSP自定义标签的基本原理,掌握创建和使用自定义标签的方法,从而提升JSP应用的开发效率和代码质量。在实际项目中,合理利用自定义标签,可以构建出模块化、易于维护的Web应用程序...
本篇将详细介绍如何创建JSP自定义标签。 首先,了解自定义标签的基本结构。一个自定义标签其实是一个Java类,这个类需要继承自`TagSupport`或`BodyTagSupport`。这两个类由JSP容器提供,它们包含处理JSP页面与...
"jsp 2.0自定义标签.doc"文件很可能包含了一个关于如何创建和使用自定义标签的详细教程。它可能涵盖了从创建TLD文件,编写标签处理类,到在JSP页面上实际使用自定义标签的全过程。同时,这个文档可能会提供一些实际...
总之,JSP自定义标签是提高JSP开发效率和代码复用性的重要工具,通过创建和使用自定义标签,我们可以构建出更加模块化、易于维护的Web应用程序。结合Tomcat这样的Servlet容器,可以快速地部署和测试这些自定义组件。
总的来说,JSP自定义标签库允许开发者创建自己的标签,提高代码的可读性和可维护性。在这个案例中,`UserListTag`实现了数据列表的展示,`UserInfo`提供了数据模型,`my_cms_tag.tld`定义了标签的使用规则,而`user...
本篇将深入探讨“JSP自定义标签之日期显示”,以及如何通过自定义标签来优雅地处理日期格式化和展示。 首先,我们要理解JSP自定义标签的基本概念。自定义标签是JSP的一种扩展,它不是Java内置的标签,而是由开发者...
总结,JSP自定义标签是JSP技术的重要组成部分,它们提供了扩展JSP功能的能力,使开发者能够创建高度定制且易于维护的页面组件。通过理解自定义标签的工作原理,开发者可以更好地构建高效、可扩展的Web应用。
在使用JSP自定义标签时,开发者可能会遇到一些报错问题,这通常涉及到项目结构、类路径设置或自定义标签的编译与打包方式。在本文中,我们将深入探讨这些问题,以及如何解决“JspException”这个特定异常。 首先,...
首先,我们要理解JSP自定义标签的概念。自定义标签是JSP的一种扩展机制,它允许开发者创建自己的标签库,以更加清晰和可维护的方式编写页面。自定义标签的实现通常涉及三个主要部分:标签库描述符(TLD)、标签处理...
JSP自定义标签是JSP技术的一部分,它允许开发者创建自己的标签,以扩展HTML或XML文档。这些自定义标签可以封装复杂的Java代码,使JSP页面更加清晰,易于理解和维护。自定义标签由两部分组成:标签处理类(Tag ...
总结来说,通过学习和实践JSP自定义标签,我们可以构建高效、灵活的Web应用程序,比如这里的分页系统,它不仅简化了页面的开发,还增强了系统的扩展性和可维护性。在实际项目中,结合良好的设计原则和最佳实践,...
通过理解和熟练运用这些知识点,你可以更有效地创建和使用JSP自定义标签库,提升项目开发效率。在实际应用中,务必遵循最佳实践,保持代码的清晰和规范,以便团队成员之间的协作和代码的长期维护。
本资源“jsp自定义标签大全”包含了一系列示例和详细教程,涵盖了从基础到高级的自定义标签使用方法,对于想要深入了解和掌握JSP自定义标签的开发者来说是一份宝贵的参考资料。通过学习和实践这些示例,你可以更好地...
综上所述,“权威实用jsp自定义标签demo,checkbox,radio>”教程旨在帮助开发者掌握如何创建和使用与选择器相关的自定义标签,从而提升JSP开发的效率和质量。通过学习这个教程,你可以了解到自定义标签的核心概念、...
本篇文章将深入探讨JSP自定义标签的开发与使用,以及如何通过实例`Demo1_JspTag`来理解这一过程。 首先,我们需要了解自定义标签的基本概念。自定义标签是JSP的一种扩展机制,它允许我们封装复杂的Java代码或业务...
### jsp自定义嵌套标签:定义与使用详解 在JavaServer Pages(JSP)技术中,自定义标签是扩展其功能的一种强大手段。而自定义嵌套标签,则是在此基础上进一步提升灵活性和重用性的机制。本文将深入探讨自定义嵌套...
本文将深入讲解JSP自定义标签的相关概念、格式、处理过程以及创建和使用自定义标签库的基本步骤。 1. 基本概念: - **标签**:JSP标签是XML元素,用于简化JSP页面,使其更易读且支持多语言版本。标签名和属性区分...
总结起来,"JSP自定义Table标签demo"是一个教育性的示例,它演示了如何利用JSP自定义标签的灵活性和强大功能,来创建复杂且可复用的组件,如动态表格。通过学习和理解这个demo,开发者可以提升自己的JSP开发能力,...