例子:查询所有学生的资料(学号,姓名,性别,出生年月,家庭地址)
第一步:在tags包下,新建Java类,需继承javax.servlet.jsp.tagext.TagSupport,并编写代码如下:
Code:
package tags;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import po.Student;
import dao.StudentDao;
//自定义标签的规范 该标签的功能:显示所有的学生的详细资料
//1、继承:javax.servlet.jsp.tagext.TagSupport
//2、重写方法doEndTag和doStartTag(系统自动调用)
public class DisplayAllTags extends TagSupport {
private static final long serialVersionUID = 1L;
public DisplayAllTags() {
System.out.println("displayaddtags 构造函数");
}
public int doStartTag() throws JspException {
System.out.println("doStartTag函数");
return SKIP_BODY; //不实现标签的体,即空体标签。
}
public int doEndTag() throws JspException {
System.out.println("doEndTag函数");
//查询数据库
StudentDao studentDao=new StudentDao();
ArrayList arrayList=(ArrayList)studentDao.queryStus();
//通过父类TagSupport的属性值pageContext 取得相关的内置对象
JspWriter out=pageContext.getOut();
//遍历循环打印。
try {
out.println("<table>");
out.println("<tr>");
out.println("<td>学号</td>");
out.println("<td>姓名</td>");
out.println("<td>性别</td>");
out.println("<td>出生年月</td>");
out.println("<td>家庭住址</td>");
out.println("</tr>");
for(int i=0;i<arrayList.size();i++){
Student student=(Student)arrayList.get(i);
out.println("<tr>");
out.println("<td>"+student.getStuId()+"</td>");
out.println("<td>"+student.getStuName()+"</td>");
out.println("<td>"+student.getStuSex()+"</td>");
out.println("<td>"+student.getStuBir()+"</td>");
out.println("<td>"+student.getStuAdd()+"</td>");
out.println("</tr>");
}
out.println("<table>");
} catch (IOException e) {
e.printStackTrace();
}
//=============pageContext还可以get更多的内置对象。
// pageContext.getRequest();
// pageContext.getResponse();
// pageContext.getSession();
// pageContext.getServletContext();
return EVAL_PAGE; //
}
}
第二步:在 webroot→web-inf下新建一个.tld文件(右键new file就OK了),并编写代码如下:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib> <!-- 自定义库标签的根 -->
<tlibversion>1.2</tlibversion> <!-- 版本号 -->
<jspversion>1.1</jspversion> <!-- JSP版本号 -->
<shortname>displaytags</shortname> <!-- 标签名称-->
<uri>displaytags</uri> <!-- 外界导入标签时,认识的名字,很重要。-->
<tag>
<name>displayAll</name> <!-- 标签名称 -->
<tagclass>tags.DisplayAllTags</tagclass> <!-- 对应的类 -->
</tag>
<!-- 有属性的标签 -->
<tag>
<name>displayBySex</name>
<tagclass>tags.DisplayBySexTags</tagclass>
<attribute> <!-- 对应标签的属性。 -->
<name>sex</name>
<required>true</required> <!-- 是必需写的属性,即没有写属性标签不能被正常使用 -->
</attribute>
</tag>
<!-- 1.两个属性 2.属性不是必需 3.属性可以用变量来赋值 -->
<tag>
<name>displayBySA</name>
<tagclass>tags.DisplayBySAtags</tagclass>
<attribute>
<name>sex</name>
<required>false</required>
</attribute>
<attribute>
<name>add</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue> <!-- true:可以用表达式来表示 -->
</attribute>
</tag>
</taglib>
第三步:编写jsp页面,代码如下:
Code:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="displaytags" prefix="stu"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>测试自定义标签</title>
</head>
<body>
打印学生的名单<br>
<stu:displayAll></stu:displayAll>
<br>打印学生的名单(一个属性的测试)<br>
<stu:displayBySex sex="男"></stu:displayBySex>
<br>打印学生的名单(两个属性的测试)<br>
<stu:displayBySA add="上海"></stu:displayBySA>
</body>
</html>
大概的流程就这样子。其中还用到的dao.Student类(负责与数据库交互)和po.Student(javabean);还有DisplayBySexTags.java和DispalyBySATags.java 与DisplayAllTags.java差不多。
- 深圳市一键一家网络科技有限公司官方网址:http://www.songhu9.com.cn
- QQ:316675593,电话号码:19807655856
- 业务范围:公司网站建设、管理软件研发、软件网站二次开发、400电话、电商平台研发、公众号研发!
- 免责申明:本站内容均来源于网络,版权归原创所有,如有任何版权方面的问题,请与我们联系处理!