struts2自定义标签的详细使用

    例子:查询所有学生的资料(学号,姓名,性别,出生年月,家庭地址)
     第一步:在tags包下,新建Java类,需继承javax.servlet.jsp.tagext.TagSupport,并编写代码如下:

Code:
  1. package tags;   
  2.   
  3. import java.io.IOException;   
  4. import java.util.ArrayList;   
  5.   
  6. import javax.servlet.jsp.JspException;   
  7. import javax.servlet.jsp.JspWriter;   
  8. import javax.servlet.jsp.tagext.TagSupport;   
  9.   
  10. import po.Student;   
  11.   
  12. import dao.StudentDao;   
  13.   
  14. //自定义标签的规范   该标签的功能:显示所有的学生的详细资料   
  15. //1、继承:javax.servlet.jsp.tagext.TagSupport   
  16. //2、重写方法doEndTag和doStartTag(系统自动调用)   
  17.   
  18. public class DisplayAllTags extends TagSupport {   
  19.     private static final long serialVersionUID = 1L;   
  20.   
  21.     public DisplayAllTags() {   
  22.         System.out.println("displayaddtags 构造函数");   
  23.     }   
  24.   
  25.     public int doStartTag() throws JspException {   
  26.         System.out.println("doStartTag函数");   
  27.            
  28.         return SKIP_BODY;  //不实现标签的体,即空体标签。   
  29.     }   
  30.   
  31.     public int doEndTag() throws JspException {   
  32.         System.out.println("doEndTag函数");   
  33.         //查询数据库   
  34.         StudentDao studentDao=new StudentDao();   
  35.         ArrayList arrayList=(ArrayList)studentDao.queryStus();   
  36.            
  37.         //通过父类TagSupport的属性值pageContext 取得相关的内置对象   
  38.         JspWriter out=pageContext.getOut();   
  39.         //遍历循环打印。   
  40.        
  41.         try {   
  42.             out.println("");   
  43.             out.println("
  44. ");   
  45.             out.println("
  46. ");   
  47.             out.println("
  48. ");   
  49.             out.println("
  50. ");   
  51.             out.println("
  52. ");   
  53.             out.println("
  54. ");   
  55.             out.println("
  56. ");   
  57.             for(int i=0;i
  58.                 Student student=(Student)arrayList.get(i);   
  59.                 out.println("
  60. ");   
  61.                 out.println("
  62. ");   
  63.                 out.println("
  64. ");   
  65.                 out.println("
  66. ");   
  67.                 out.println("
  68. ");   
  69.                 out.println("
  70. ");   
  71.                 out.println("
  72. ");   
  73.             }   
  74.             out.println("
  75. 学号 姓名 性别 出生年月 家庭住址
    "+student.getStuId()+" "+student.getStuName()+" "+student.getStuSex()+" "+student.getStuBir()+" "+student.getStuAdd()+"
    ");   
  76.         } catch (IOException e) {   
  77.             e.printStackTrace();   
  78.         }   
  79.                
  80.         //=============pageContext还可以get更多的内置对象。   
  81. //      pageContext.getRequest();   
  82. //      pageContext.getResponse();   
  83. //      pageContext.getSession();   
  84. //      pageContext.getServletContext();   
  85.         return EVAL_PAGE;   //   
  86.     }   
  87.   
  88. }   

  89.      第二步:在 webroot→web-inf下新建一个.tld文件(右键new file就OK了),并编写代码如下:

    Code:
    1. xml version="1.0" encoding="UTF-8"?>  
    2. >  
    3. <taglib>       
    4. <tlibversion>1.2tlibversion>       
    5. <jspversion>1.1jspversion>         
    6. <shortname>displaytagsshortname>          
    7. <uri>displaytagsuri>     
    8.   
    9. <tag>  
    10.  <name>displayAllname>                              
    11.  <tagclass>tags.DisplayAllTagstagclass>            
    12. tag>  
    13.   
    14.   
    15.   <tag>  
    16.        <name>displayBySexname>  
    17.         <tagclass>tags.DisplayBySexTagstagclass>  
    18.         <attribute>     
    19.              <name>sexname>  
    20.              <required>truerequired>    
    21.         attribute>         
    22.    tag>  
    23.   
    24.   
    25.    <tag>  
    26.     <name>displayBySAname>  
    27.     <tagclass>tags.DisplayBySAtagstagclass>  
    28.     <attribute>  
    29.          <name>sexname>  
    30.          <required>falserequired>  
    31.      attribute>  
    32.      <attribute>  
    33.          <name>addname>  
    34.          <required>truerequired>  
    35.          <rtexprvalue>truertexprvalue>    
    36.      attribute>  
    37.    tag>  
    38. taglib>  


         第三步:编写jsp页面,代码如下:

    Code:
    1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>   
    2. <%@ taglib uri="displaytags" prefix="stu"%>   
    3. "-//W3C//DTD HTML 4.01 Transitional//EN">   
    4.   
    5.   
    6.      
    7.     测试自定义标签   
    8.      
    9.      
    10.           打印学生的名单
        
    11.        
    12.     
      打印学生的名单(一个属性的测试)
        
    13.     "男">   
    14.     
      打印学生的名单(两个属性的测试)
        
    15.     "上海">   
    16.      
    17.   

         大概的流程就这样子。其中还用到的dao.Student类(负责与数据库交互)和po.Student(javabean);还有DisplayBySexTags.java和DispalyBySATags.java  与DisplayAllTags.java差不多。


    你可能感兴趣的:(struts2)