自定义标签(tag)
来源:互联网 发布:evisu淘宝正品 编辑:程序博客网 时间:2024/05/28 15:37
从jsp1.1开始,jsp就可以使用自定义标签了。不仅实现了代码的重用,而且代码更加简洁了。
一个tag对应一个java类,该类必须继承TagSupport 或者 BodyTagSurport,这两个类提供了一些方法,可以方便的操作和页面之间的操作。
package Test07.tag;import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.TagSupport;import org.apache.struts2.ServletActionContext;public class InputTag extends TagSupport{/** * serialVersionUID */private static final long serialVersionUID = 4382050238149459293L;private static final String num = "num";private static final String str = "str";private String name;private String type;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getType() {return type;}public void setType(String type) {this.type = type;}/** * 当jsp容器遇到自定义标签的结束标志,执行该方法,通过返回值来确定后续流程 */@Overridepublic int doEndTag() throws JspException {// this.pageContext.setAttribute("input", name);ServletActionContext.getServletContext().setAttribute("input", name);//SKIP_PAGE:作为doEndTag()的返回值,表示跳过页面中标签后剩下的jsp程序代码 //EVAL_PAGE:作为doEndTag()的返回值,表示继续执行页面中标签后的jsp程序代码 return EVAL_PAGE;}/** * 当jsp容器遇到自定义标签的起始标志,执行该方法,通过返回值来确定执行流程 */@Overridepublic int doStartTag() throws JspException {boolean isStop = false;if(num.equals(type)){System.out.println("type is number!");}else if(str.equals(type)){System.out.println("type is string!");}else{System.out.println("type is not right!");isStop = true;}// 判断是否继续if(isStop){return SKIP_BODY;//SKIP_BODY:作为doStartTag()返回值,表示忽略标签体,不执行 }//EVAL_BODY_INCLUDE:作为doStartTag()的返回值,表示正常的执行标签体中的内容 return EVAL_BODY_INCLUDE;}}
主要可以通过重写doStartTag() 和 doEndTag() 方法,就可以实现基本的操作了。
tld中的属性,和java类的属性是一一对应的。
编写tld文件:
<?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.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>ZeTag</short-name> <uri>http://www.zen.com.cn/ZeTag</uri> <!-- 这个是 uri 而不是 url --><tag><name>input</name><tag-class>Test07.tag.InputTag</tag-class><body-content>empty</body-content><attribute><name>name</name><required>true</required><rtexprvalue>false</rtexprvalue></attribute><attribute><name>type</name><required>true</required><rtexprvalue>false</rtexprvalue></attribute></tag></taglib>
在web.xml中配置tag:
<jsp-config> <taglib> <taglib-uri>http://www.zen.com.cn/ZeTag</taglib-uri> <taglib-location>/WEB-INF/ZeTag.tld</taglib-location> </taglib> </jsp-config>
前台jsp页面:导入taglib
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="http://www.zen.com.cn/ZeTag" prefix="z"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <base href="<%=basePath%>"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>登陆页面</title></head><body><form action="test07/login" id="form" name="form" method="post">账号:<input id="userName" name="userName" type="text">密码:<input name="userPassword" type="password"><input type="button" onclick="check()" value="提交"><!-- <input type="hidden" id="userName" id="userName" value=""> --><z:input name="test1" type="str"/></form></body><script type="text/javascript" language="javascript">function check(){var name = document.getElementById("userName");//alert(name.value);if(name.value == ''){alert('请输入用户名!');document.getElementById("userName").focus();return false;}document.form.submit();}</script></html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="http://www.zen.com.cn/ZeTag" prefix="z" %><!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=UTF-8"><title>登陆成功</title></head><body>${userName},欢迎登陆!<hr>测试tag<z:out value="input"/><br><z:out value="test"/></body></html>
- 自定义标签(tag)
- JSP自定义标签(tag)
- JSP 自定义标签(Tag)
- 自定义标签tag
- JSP自定义标签(Tag)
- struts2 自定义tag标签
- jsp自定义tag标签
- Jsp 自定义tag标签
- 自定义标签Tag
- 开发自定义tag标签
- tag文件-自定义标签
- Jsp自定义tag标签
- 自定义Shiro标签Tag
- Java自定义标签Tag
- 自定义Tag标签
- 自定义JSP标签(tag)浅议
- 自定义Tag标签的编写
- JSP自定义分页标签TAG
- HDU 4502
- N-Queens II
- D3DXCreateTextureFromFileInMemoryEx函数
- MySQL千万级 重复数据查找及删除方案
- NodeManager启动错误
- 自定义标签(tag)
- QQ互联redirect uri is illegal(100010)!
- (Problem 28)Number spiral diagonals
- ognl.OgnlException: target is null for setProperty
- 通过PMBASE将电脑关机(softoff mode)
- hdu1238 Substrings
- Smack开发Demo一------管理连接
- JAVA中sleep()、wait()、yield()、join()方法
- (转)深入理解HashMap