jsp 自定义标签

使用 Mybatis分页插件-pagehelper 自己定义了一个分页标签。

1. 标签类型集成自 BodyTagSupport

package boce.auth.common.util;

import java.io.IOException;

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.github.pagehelper.PageInfo;

@SuppressWarnings("serial")
public class PageInfoTag extends BodyTagSupport{
 private static final Logger pLog = LoggerFactory.getLogger(PageInfoTag.class);
 
 @SuppressWarnings("rawtypes")
 private PageInfo pageInfo;
 
 /**
  * 执行方法的名称
  */
 private String methodName;
 
 
 public String getMethodName() {
  return methodName;
 }

 public void setMethodName(String methodName) {
  this.methodName = methodName;
 }

 @SuppressWarnings("rawtypes")
 public PageInfo getPageInfo() {
  return pageInfo;
 }

 @SuppressWarnings("rawtypes")
 public void setPageInfo(PageInfo pageInfo) {
  this.pageInfo = pageInfo;
 }

    public String toolBar(){
     StringBuffer href = new StringBuffer(30);
     href.append("<a href=\"").append(methodName).append("?pageNow=");
     
     StringBuffer sb = new StringBuffer(200);

     sb.append("当前:").append(pageInfo.getPageNum()).append("页");
      
        sb.append(" 共").append(pageInfo.getTotal()).append("条/");
        sb.append(pageInfo.getPages()).append("页  ");
       
        //导航栏的第一页
        sb.append(href.toString()).append(pageInfo.getFirstPage()).append("\">首页</a>  ");
       
     if(pageInfo.isHasPreviousPage()){
      sb.append(href.toString()).append(pageInfo.getPrePage()).append("\">上页</a>  ");
     }
     
       if(null !=pageInfo.getNavigatepageNums()){
           int page[] =pageInfo.getNavigatepageNums();
           for(int i=0;i<page.length;i++){
            sb.append(href.toString()).append(page[i]).append("\">");
            sb.append(page[i]).append("</a>").append(" ");
           }
          }
     
     if(pageInfo.isHasNextPage()){
      sb.append(href.toString()).append(pageInfo.getNextPage()).append("\">下页</a>  ");
     }
     //导航栏的最后一页
        sb.append(href.toString()).append(pageInfo.getLastPage()).append("\">末页</a> ");
        
//         sb.append("navigatePages:"+pageInfo.getNavigatePages());
//         sb.append("last:"+pageInfo.getLastPage());
//         sb.append("pages:"+pageInfo.getPages());
//      sb.append("pagesize:"+pageInfo.getPageSize());
//      sb.append("hasNextPage"+pageInfo.isHasNextPage());
//      System.out.println(sb.toString());
     return sb.toString();
    }
 

 @Override
 public int doStartTag() throws JspException {
  
  try {
   super.pageContext.getOut().write(toolBar());
  } catch (IOException e) {
   //e.printStackTrace();
   pLog.error("PageInfoTag类 分页控件出问题了", e.fillInStackTrace());
  }
  return super.doStartTag();
 }
 
 
 
 @Override
 public int doAfterBody() throws JspException {
  //System.out.println("doAfterBody()");
  return SKIP_BODY;
 }

 @Override
 public int doEndTag() throws JspException {
//  System.out.println("doEndTag()");
//  JspWriter out = this.pageContext.getOut();
//  
//  try {
//   out.print("hello12!");
//  } catch (IOException e) {
//   e.printStackTrace();
//  }
//  
  return super.doEndTag();
 }
 
 
}

2. 在WEB-INF 目录中定义tld 文件夹,然后定义pageInfoTag.tld 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
                        "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
 <tlib-version>1.0</tlib-version>
 <jsp-version>1.2</jsp-version>
 <short-name>ct</short-name>
 <uri>/pageInfoTag</uri>
 
 <tag>
  <name>page</name>
  <tag-class>boce.auth.common.util.PageInfoTag</tag-class>
  <body-content>JSP</body-content>
  <attribute>
   <name>pageInfo</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
  </attribute>
  
  <attribute>
   <name>methodName</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
  </attribute>
 </tag>
</taglib>

3.在jsp 页面引入

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

<%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>

<%@ taglib uri="/WEB-INF/tld/dateConvert.tld" prefix="ct"%>
<%@ taglib uri="/WEB-INF/tld/pageInfoTag.tld" prefix="pg"%>

<html>
<head>
    <title></title>
</head>
<body>
欢迎${subject.principal}登录成功!

<a href="${pageContext.request.contextPath}/logout.do">退出</a>

<c:forEach items="${page.list}" var="item">
 ${item.id}--${item.userName } <br/>
</c:forEach>


<br/>

<pg:page pageInfo="${page}" methodName="user.do"></pg:page>
</body>
</html>

4. contrllor 代码

package boce.auth.shiro.mvccontroller;

import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

import boce.auth.common.util.PageCommon;
import boce.auth.shiro.pojo.User;
import boce.auth.shiro.service.UserService;

@Controller
public class UserController extends BaseController{

 @Resource
 private UserService userService;
 
 
 @RequestMapping("/sys/user.do")
 public ModelAndView webLogin(HttpServletRequest request,HttpServletResponse res){
  ModelAndView mav = new ModelAndView("sys/user");
  User user = new User();
  List<User> list = userService.list(user,getPageNum(request));
  PageInfo<User> page = new PageInfo<User>(list);
  
  mav.addObject("page", page);
  
  return mav;
 }
 
 
 @RequestMapping("/sys/refuse.do")
 public ModelAndView refuse(){
  ModelAndView mav = new ModelAndView("refuse");
   
  return mav;
 }
}

package boce.auth.shiro.service;

import java.util.List;

import javax.annotation.Resource;

import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Service;

import boce.auth.shiro.dao.UserDao;
import boce.auth.shiro.pojo.User;

@Service
public class UserService {
 @Resource
 private UserDao userDao;
 
 
 @RequiresPermissions("/sys/user.do:query")
 public List<User> list(User user,int pageNum){
  return userDao.listNoSql(user,pageNum);
 }
 
 
}

package boce.auth.shiro.dao;

import java.util.List;

import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

import boce.auth.common.util.PageCommon;
import boce.auth.shiro.pojo.User;

@Repository
public class UserDao extends SqlSessionDaoSupport{
 @Autowired
 private DataSourceTransactionManager txManager;

 public DataSourceTransactionManager getTxManager() {
  return txManager;
 }


 public void setTxManager(DataSourceTransactionManager txManager) {
  this.txManager = txManager;
 }


 public void list(){
  User user = new User();
  List<User> list = this.getSqlSession().selectList("boce.auth.shiro.pojo.User.select_user", user);
  for(User u:list){
   System.out.println(u.getUserName());
  }
 }
 
 
 public void insert() throws Exception{
  User user = new User();
  user.setId(160407);
  user.setUserName("gjp");
  user.setPassWord("123456");
  user.setPassWordSalt("salt");
  final String statement ="boce.auth.shiro.pojo.User.insert_user";
  
  DefaultTransactionDefinition def = new DefaultTransactionDefinition();
  def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);

  TransactionStatus status = txManager.getTransaction(def);
  try {

   int size = this.getSqlSession().insert(statement, user);
   System.out.println("size:"+size);
   //throw new Exception("123");
//   User u =null;
//   u.getId();
   int size1 = this.getSqlSession().insert(statement, user);
   System.out.println("size:"+size1);
   
  }
  catch (Exception ex) {
    txManager.rollback(status);
   // throw ex;
  }
  
  txManager.commit(status);
  
  
  
 }
 
 
 public List<User> listNoSql(){
  int start =1;
  Page<User> p = PageHelper.startPage(1, 1);
  UserInf userInf = this.getSqlSession().getMapper(UserInf.class);
  List<User> list = userInf.list();
  
  PageInfo<User> pageInfo = new PageInfo<User>(list, 20);
//  System.out.println("当前:"+pageInfo.getPageNum()+":"
//    +pageInfo.getTotal()+": next="+pageInfo.getNextPage()
//    +"==="+pageInfo);
  
//  for(User user:p.getResult()){
//   System.out.println(user.getUserName()+" :no sql :"+user.getPassWord());
//  }
  return list;
  
 }
 
 
 
 public List<User> listNoSql(User user,int PageNum){
  Page<User> p = PageHelper.startPage(PageNum, PageCommon.PAGE_SIZE);
  UserInf userInf = this.getSqlSession().getMapper(UserInf.class);
  List<User> list = userInf.list();
  return list;
  
 }

 
}

 运行结果:



 

猜你喜欢

转载自gjp014.iteye.com/blog/2300896