密码:
网络营销 it新闻 军事新闻 社会新闻 it技术 网站优化 游戏资讯 公司资讯
实现struts2自定义标签样例经测试成功
发布日期:2014-11-22 阅读数:1315 来源:网站建设公司 由金功呈网站建设公司整理 【关闭】



例子:查询所有学生的资料(学号,姓名,性别,出生年月,家庭地址)

     第一步:在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电话、电商平台研发、公众号研发!
  • 免责申明:本站内容均来源于网络,版权归原创所有,如有任何版权方面的问题,请与我们联系处理!