热门文章 | 热门软件| 热门源码 | 热门电影 | 知识库 | 联系我们
软件 源码 教程 影视 健康 招聘
  HTML | JavaScript | ASP | PHP | JSP | NET | VB | VC | VF | Windows | Linux | Mysql | Mssql | Oracle | Struts 
当前位置: 创世纪计算机资源网 -> 文章频道 ->jsp 
站内搜索:
jstl自定义标记_分页和查找
作者:大灰狼 来源:创世纪计算机资源网 整理日期:2007-7-23
欢迎转载,请保留出处: http://www.gold98.net/blog

昨天学习了一下自定义标记,简单标记,下面们用实例来说看一下自定义标记的威力:

标记处理文件:

package com.zb.servlet;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;

import org.hibernate.Session;

import com.zb.hibernate.entity.Testuser;
import com.zb.hibernate.util.HibernateSessionFactory;

public class Tag extends SimpleTagSupport{
    private String id="";
    private String userName="";
    private int page=1;
    private int pageSize=1;

    
    public void doTag() throws JspException,IOException{
        getJspContext().getOut().write("Find UserId: "+id+" ok");
        String un=getUserName();
        getJspContext().setAttribute("username", "UserName:"+un);
        getJspContext().setAttribute("userid", "UserId:"+id);
        getJspContext().setAttribute("pagelink", getPageLink());
        Iterator it=getUserList().iterator();
        while(it.hasNext())
        {
            Testuser tu=(Testuser)it.next();
            getJspContext().setAttribute("user", tu);
            getJspBody().invoke(null);
        }
        
        
    }


    public void setId(String id) {
        this.id = id;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }
    
    public List getUserList()
    {
        List it=null;
        int start=(page-1)*pageSize;
        Session session=HibernateSessionFactory.getSession();
        String hql="from Testuser t order by t.id desc";
        it=session.createQuery(hql).setFirstResult(start).setMaxResults(pageSize).list();
        return it;
        
    }
    
    public String getUserName()
    {
        Iterator it=null;
        String uname="No result!";
        Session session=HibernateSessionFactory.getSession();
        String hql="from Testuser t where t.id="+id+" order by t.id desc";
        it=session.createQuery(hql).list().iterator();
        if(it.hasNext())
        {    
            Testuser tu=(Testuser)it.next();
            uname=tu.getUsername();
        }
            return uname;
        
    }

    public void setPage(int page) {
        if(page==0)
        {
        this.page = 1;    
        }else
        {
        this.page = page;
        }
    }


    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public String getPageLink()
    {
        String hql="select count(*) from Testuser";
        String plink="";
        Session session=HibernateSessionFactory.getSession();
        int recordCount=((Number)session.createQuery(hql).uniqueResult()).intValue();
        int pageCount=(recordCount+pageSize-1)/pageSize;
        for(int i=1;i<=pageCount;i++)
        {
           plink=plink+"<a href=testusertld.jsp?page="+i+">"+i+"</a>"+"  ";    
        }
        return plink;
        
    }

}



user.tld


<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/
xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
    
  <description>TestUser</description>
  <display-name>TestUser</display-name>
  <tlib-version>1.0</tlib-version>
  <short-name>tu</short-name>
  <uri>testuser</uri>

   <tag>
    <description>
        TestUser and Tag
    </description>
    <name>testuser</name>
    <tag-class>com.zb.servlet.Tag</tag-class>
    <body-content>scriptless</body-content>
    <attribute>
        <name>id</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
        <attribute>
        <name>userName</name>
        <required>false</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
   <attribute>
        <name>page</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
        <name>pageSize</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>

</taglib>



测试页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="tu" uri="testuser" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
   <title>测试user.tld</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
  </head>
  <body>

  <table width="500" border="1">
   <tu:testuser id="${param.uid}"  page="${param.page}" pageSize="2">
     <tr><td>${user.username }</td><td>${user.useremail }</td></tr>
   </tu:testuser>
   </table>
   <br>分页:${pagelink}<br><br>
   <form name="f1" method="post" action="testusertld.jsp">
   请输入用户ID:<input type="text" name="uid"><input type="submit" value="查找">
   </form>
   Result: <br>
   <c:out value="${userid}"></c:out><br>
   <c:out value="${username}"></c:out>
  </body>
</html>


简单代码就实现了分页测试与查找测试~

结果: 

 


相关文章