java tag_java:tag 自定义标签应用

一,tag类

1.1 TagMy标签类,格式化当前日期并输出

package com.dkt.tag;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.Date;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.JspWriter;

import javax.servlet.jsp.tagext.TagSupport;

/*

* doStartTag() SKIP_BODY执行doEndTag()跳过标签体

* EVAL_BODY_INCLUDE 执行标签体

* doAfterBody() EVAL_BODY_AGAIN 循环执行标签体

* SKIP_BODY 不执行标签体,执行doEndTag()

* doEndTag() SKIP_PAGE 不执行jsp剩余的页面

* EVAL_PAGE 执行剩余的页面

*

*/

public class TagMy extends TagSupport{

private String format;

public int doStartTag() {

SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);

String nowdate = simpleDateFormat.format(new Date());

JspWriter out = pageContext.getOut();

try {

out.print("Hello 世界!!");

out.print(nowdate);

} catch (IOException e) {

e.printStackTrace();

}

return super.SKIP_BODY;

}

public int doAfterBody() throws JspException {

return super.doAfterBody();

}

public int doEndTag() throws JspException {

return super.doEndTag();

}

public String getFormat() {

return format;

}

public void setFormat(String format) {

this.format = format;

}

}

1.2 ForTag 标签类,自定义标签,循环输出

package com.dkt.tag;

import javax.servlet.jsp.tagext.TagSupport;

public class FroTag extends TagSupport{

private int start;

private int end;

private String var;

public int doStartTag(){

System.out.println("doStartTag()"+start);

if(start<=end){

pageContext.setAttribute(var, start);

start++;

return super.EVAL_BODY_INCLUDE;

}else {

return super.SKIP_BODY;

}

//执行doAfterBody()

}

public int doAfterBody() {

if(start<=end){

pageContext.setAttribute(var, start);

start++;

System.out.println("doAfterBody()"+start);

return super.EVAL_BODY_AGAIN;

}else {

return super.SKIP_BODY;

}

}

public int doEndTag(){

System.out.println("doEndTag()"+start);

return super.EVAL_PAGE;

}

public int getStart() {

return start;

}

public void setStart(int start) {

this.start = start;

}

public int getEnd() {

return end;

}

public void setEnd(int end) {

this.end = end;

}

public String getVar() {

return var;

}

public void setVar(String var) {

this.var = var;

}

}

1.3 IteratorTag标签类,迭代集合,全部循环输出显示在页面

package com.dkt.tag;

import java.util.ArrayList;

import java.util.Iterator;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.tagext.TagSupport;

public class IteratorTag extends TagSupport{

private String scope;

private String var;

private ArrayList list = null;

Iterator it = null;

public int doStartTag() {

/*if (("page").equals(scope)) {

list = (ArrayList)pageContext.getAttribute(list,pageContext.PAGE_SCOPE);

}else if(("request").equals(scope)){

list = (ArrayList)pageContext.getAttribute(list,pageContext.REQUEST_SCOPE);

}else if(("session").equals(scope)){

list = (ArrayList)pageContext.getAttribute(list,pageContext.SESSION_SCOPE);

}else if(("application").equals(scope)){

list = (ArrayList)pageContext.getAttribute(list,pageContext.APPLICATION_SCOPE);

}*/

it = list.iterator();

return super.EVAL_BODY_INCLUDE;

}

public int doAfterBody() {

if (it.hasNext()) {

Object next = it.next();

pageContext.setAttribute(var, next);

return super.EVAL_BODY_AGAIN;

}else {

return super.SKIP_BODY;

}

}

public int doEndTag() throws JspException {

return super.doEndTag();

}

public String getScope() {

return scope;

}

public void setScope(String scope) {

this.scope = scope;

}

public String getVar() {

return var;

}

public void setVar(String var) {

this.var = var;

}

public ArrayList getList() {

return list;

}

public void setList(ArrayList list) {

this.list = list;

}

}

1.4 QueryTag 标签类,根据表名,查询数据库,并由表格输出到页面

package com.dkt.tag;

import java.io.IOException;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.JspWriter;

import javax.servlet.jsp.tagext.TagSupport;

import com.dkt.util.DButil;

public class QueryTag extends TagSupport{

private String tableName;

public int doStartTag() {

DButil dButil = new DButil();

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

conn = dButil.createConn();

String sql = "select * from "+tableName;

try {

ps = conn.prepareStatement(sql);

ResultSetMetaData rsmd = ps.getMetaData();//得到表结构

rs = ps.executeQuery();

JspWriter out = pageContext.getOut();

out.print("

for (int i = 0; i < rsmd.getColumnCount(); i++) {//字段数量

out.print("

"+rsmd.getColumnName(i+1)+"");//字段名字

}

out.print("

");

while(rs.next()){

out.print("

");

for (int i = 0; i < rsmd.getColumnCount(); i++) {

out.print("

"+rs.getObject(i+1)+"");

}

out.print("

");

}

out.print("

");

} catch (SQLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return super.SKIP_BODY;

}

public int doAfterBody() throws JspException {

return super.doAfterBody();

}

public int doEndTag() throws JspException {

return super.doEndTag();

}

public String getTableName() {

return tableName;

}

public void setTableName(String tableName) {

this.tableName = tableName;

}

}

二,hellotag.tld

文件 hellotag.tld 放在WEB-INF目录下,与web.xml同级

/p>

"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

1.0

1.2

hello

hello

hello

com.dkt.tag.TagMy

empty

format

true

true

formy

com.dkt.tag.FroTag

jsp

start

true

true

end

true

true

var

true

true

iteratormy

com.dkt.tag.IteratorTag

jsp

list

true

true

scope

true

true

var

true

true

query

com.dkt.tag.QueryTag

empty

tableName

true

true

三,jsp

index.jsp  开启服务器,直接访问项目下的index.jsp页面即可显示自定义标签

在jsp页面导入自定义标签

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'index.jsp' starting page

formy:

${item1 }----


iterator:

ArrayList list = new ArrayList();

list.add(new UserInfo(0,"小白","123456","",""));

list.add(new UserInfo(1,"小白111","353456","",""));

list.add(new UserInfo(2,"小白222","532456","",""));

list.add(new UserInfo(3,"小白333","532356","",""));

list.add(new UserInfo(4,"小白444","123536","",""));

request.setAttribute("list",list);

%>

${item2.name}+++${item2.password }



四,web.xml

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

index.jsp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值