zoukankan      html  css  js  c++  java
  • [JavaWeb基础] 012.Struts2 自定义标签使用

      在做开发中,我们会把一些比较经常使用到的代码封装起来,这样可以加快开发的速度和减少错误,并且在修改bug可以一次修改多次修复。那么在前端页面上,如果我们要经常用到公用的显示功能,并涉及到服务端逻辑操作的时候,我们就需要使用到自定义标签,自定义标签使我们可以很方便去调用一段共同的代码。下面就来看看实现自定义标签的步骤。

    一.我们需要创建一个标签类,继承自javax.servlet.jsp.tagext.TagSupport;

    package com.babybus.sdteam.tag;
    
    import java.io.IOException;
    import java.sql.SQLException;
    import java.util.ArrayList;
    
    import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.JspWriter;
    import javax.servlet.jsp.tagext.TagSupport;
    
    import com.babybus.sdteam.dao.StudentHibernateDao;
    import com.babybus.sdteam.vo.Student;
    
    public class DisplayStudentAttributeTag extends TagSupport {
    
    	/**
    	 * 序列号
    	 */
    	private static final long serialVersionUID = 1L;
    	private int studentid;
    	private String classname;
    	
    	public int getStudentid() {
    		return studentid;
    	}
    
    	public void setStudentid(int studentid) {
    		this.studentid = studentid;
    	}
    
    	public String getClassname() {
    		return classname;
    	}
    
    	public void setClassname(String classname) {
    		this.classname = classname;
    	}
    
    	public DisplayStudentAttributeTag() {   
                System.out.println("DisplayStudentAttributeTag 构造函数");   
            }   
      
            public int doStartTag() throws JspException {   
                System.out.println("doStartTag函数");   
               
                return SKIP_BODY;  //不实现标签的体,即空体标签。   
            }   
      
           public int doEndTag() throws JspException {   
               System.out.println("doEndTag函数");   
               // 查询数据库   
               StudentHibernateDao studentDao=new StudentHibernateDao();  
               Student querystudent = new Student();
               querystudent.setId(this.getStudentid());
               querystudent.setClassname(this.getClassname());
               ArrayList<Student> arrayList = new ArrayList<Student>();
    	   try {
    	            arrayList = (ArrayList<Student>)studentDao.queryStudent(querystudent);
    	   } catch (SQLException e1) {
    	           e1.printStackTrace();
    	   }   
               
               // 通过父类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("</tr>");   
                        for(int i=0;i<arrayList.size();i++){   
                            Student student=(Student)arrayList.get(i);   
                            out.println("<tr>");   
                            out.println("<td>" + student.getStudentname() + "</td>");   
                            out.println("<td>" + student.getAge() + "</td>");   
                            out.println("<td>" + student.getClassname() + "</td>");    
                            out.println("</tr>");   
                        }   
                        out.println("<table>");   
               } catch (IOException e) {   
                        e.printStackTrace();   
               }   
    
               return EVAL_PAGE;   
        }   
    }
    

     第二.我们需要在WebRoot/WEB-INF下面新建一个tld文件。

    <?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>CustomTags</shortname>     		 <!-- 标签名称-->  
    	<uri>customtags</uri>                 		 <!-- 外界导入标签时,认识的名字,很重要。-->  
       
    	<tag>  
    		<name>displayStudent</name>                        		        <!-- 标签名称 -->  
    		<tagclass>com.babybus.sdteam.tag.DisplayStudentTag</tagclass>   <!-- 对应的类 -->  
    	</tag>  
    	
    	<tag>  
    		<name>displayStudentAttribute</name>                        		     <!-- 标签名称 -->  
    		<tagclass>com.babybus.sdteam.tag.DisplayStudentAttributeTag</tagclass>   <!-- 对应的类 -->  
    		<attribute>  
              <name>studentid</name>  
              <required>true</required>  
            </attribute> 
    		<attribute>  
              <name>classname</name>  
              <required>false</required>  
            </attribute> 
    	</tag> 
     </taglib>  
    

     第三.在页面上引入标签,并使用

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib uri="customtags" prefix="stu"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
    	<meta http-equiv="pragma" content="no-cache">
    	<meta http-equiv="cache-control" content="no-cache">
    	<meta http-equiv="expires" content="0">    
    	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    	<meta http-equiv="description" content="This is my page">
    	<!--
    	<link rel="stylesheet" type="text/css" href="styles.css">
    	-->
    	
      </head>
      
      <body style="overflow:auto;margin:0">
        <stu:displayStudent>
        </stu:displayStudent>
        <stu:displayStudentAttribute studentid= "3" classname = "初三">
        </stu:displayStudentAttribute>
      </body>
    </html>
    

     以上就是自定义标签的实现步骤

    结语

    • 受益,掌握了Struts2自定义标签

     

    本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 

    转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4755806.html

  • 相关阅读:
    PAT 1123 Is It a Complete AVL Tree
    PAT 1122 Hamiltonian Cycle
    PAT 1121 Damn Single
    PAT 1120 Friend Numbers
    JS数组的sort排序
    [转] jquery操作select(取值,设置选中)
    [转]2013和2014年中国互联网企业100强排行榜
    css 更换浏览器 默认图标
    [转]CSS禁止文字选择
    github 在线 创建文件夹
  • 原文地址:https://www.cnblogs.com/superdo/p/4755806.html
Copyright © 2011-2022 走看看