jsp分页显示数据库内容

笔者使用了Servlet来处理请求,当访问newhome.lzw时,会调用Servlet来处理请求

阅读本博文时,因为这些代码不单单是为了实现分页显示的,所以不要觉得太多。可以从NewHome.java的 //分页显示 以下的部分直接开始阅读,遇到相关函数时再在其他java文件查找,实现分页显示的实际代码不长、不难!

web.xml

  <servlet>
  <servlet-name>newhome</servlet-name>
  <servlet-class>onload.NewHome</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>newhome</servlet-name>
  <url-pattern>/newhome.lzw</url-pattern>
  </servlet-mapping>


BaseDao.java

package dao;

import java.util.List;

import org.hibernate.Session;

public interface BaseDao {
	public Session getSession();
	public void closeSession();
	public List search(String hql);

}


BaseDaoImpl.java

package dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class BaseDaoImpl implements BaseDao {
	
	private SessionFactory sessionFactory;
	private Session session;
	private Transaction transaction;
	
	public void init(){
		//加载配置文件
		Configuration configuration = new Configuration().configure();
		//向Hibernate注册相关服务
		@SuppressWarnings("deprecation")
		ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
		//创建会话工厂
		sessionFactory = configuration.buildSessionFactory(serviceRegistry);
		//打开会话
		session = sessionFactory.openSession();
		
		this.transaction = session.beginTransaction();
	}

	public Transaction getTran(){
		return transaction;
	}
	@Override
	public Session getSession() {
		// TODO Auto-generated method stub
		init();
		return session;
	}

	@Override
	public void closeSession() {
		// TODO Auto-generated method stub
		session.close();

	}

	@Override
	public List search(String hql) {
		// TODO Auto-generated method stub
		Session session = null;
		session = getSession();
		List alist = null;
		alist = session.createQuery(hql).list();
		session.close();
		return alist;
	}

}



GoodsDao.java

package dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;

import conn.Goods;

public class GoodsDao extends BaseDaoImpl{
	
	@SuppressWarnings("unchecked")
	public List<Goods> display(String sql) {
		List<Goods> list = super.search("FROM Goods "+sql);
		return list;
	}
	
	public List<Goods> pageshow(int pagesize,int pagenow,String sql){
		List<Goods> alist = display(sql);
		List<Goods> blist = new ArrayList<Goods>();
		for(int i=pagesize*(pagenow-1);i>=0&&i<pagesize*pagenow&&i<alist.size();i++){
			blist.add(alist.get(i));
		}
		return blist;
	}

}



NewHome.java

package onload;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import operation.ShowGoods;

import org.apache.struts2.ServletActionContext;

import conn.Goods;
import conn.SubType;
import conn.SuperType;
import dao.BaseDaoImpl;
import dao.GoodsDao;

public class NewHome extends HttpServlet{
	  public void doGet(HttpServletRequest request,HttpServletResponse response)
	                   throws ServletException,IOException{

		//实现主页左侧分类列表值的获取  
		HttpSession session = request.getSession();
		
	    if(session.getAttribute("sublist")==null){
	    	BaseDaoImpl BD = new BaseDaoImpl();

                          //得到大分类的列表
			  @SuppressWarnings("unchecked")
			  List<SuperType> suplist = BD.search("From SuperType");

			 //创建一个列表数组
                         Object sublist[] = new Object[suplist.size()];

			 for(int i=0,b=1;i<suplist.size();i++,b++){

                                 //得到该大分类的小分类的列表
				 @SuppressWarnings("unchecked")
				 List<SubType> sub = BD.search("From SubType where superType='"+b+"'");

                                 //将该小分类列表放入列表数组中
				 sublist[i]=sub;
				    
			 }
			 session.setAttribute("sublist",sublist);
			 session.setAttribute("suplist",suplist);
	    }



//分页显示

                
                int pagesize=6;  //每页显示的数量
		int pagenow;     //当前页
		String s_pagenow=request.getParameter("pagenow");
		if(s_pagenow!=null){
		    pagenow=Integer.parseInt(s_pagenow);
		}else{
		    pagenow=1;   //首次访问时显示第一页的内容
		   }
		GoodsDao dao=new GoodsDao();
		
		   
		String s=request.getParameter("sql");
		String sql;
		if(s==null){
	    sql="";
		}else{
		   sql=s;
		}
		try {
                        //得到按sql排列,页面大小为pagesize,页数为pagenow的数据,数据类型为列表
			List<Goods> pagelist=dao.pageshow(pagesize,pagenow,sql);

			if(session.getAttribute("list")!=null){
				session.removeAttribute("list");  //多次访问该页面时,比如点击下一页,要更新list的值,当然,这里完全可以不用移除list而是直接更新它
			}
			session.setAttribute("list", pagelist);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		if(session.getAttribute("pagenow")!=null){
			session.removeAttribute("pagenow");
			session.removeAttribute("sql");
		}
		session.setAttribute("pagenow", pagenow);
		session.setAttribute("sql",sql );
		 
                //Servlet跳转页面
		//getServletConfig().getServletContext().getRequestDispatcher("/NewHome.jsp").forward(request, response);
		response.sendRedirect(request.getContextPath()+"/NewHome.jsp");
		return;
		
	
	}
}



NewHome.jsp

<div id="right">
  <hr>
  <table>
    <tr>
      <td><a href="">按好评度排列</a></td>
      <td><a href="newhome.lzw?sql=order by sale desc">按销量sale排列</a></td>
      <td><a href="newhome.lzw?sql=order by id asc">按id排列</a></td>
    </tr>
  </table>
  
  <table border="1" align="center" width="60%" cellpadding="0" cellspacing="0"> 
  <tr>
  <c:forEach var="list" items="${list }" begin="0" end="2" varStatus="s">
  <td>
   <table width=300>
   
  <tr height="20">
    <td rowSpan=5 width="150"> <a href="goodsdetail.lzw?id=${list.id}" target="_blank" >
        <img src="images/goods/${list.picture }" width="140" height="100"/> </a></td>
    <td width="100">id:</td>
    <td width="50">${list.id }</td>
  </tr>
  <tr>
    <td>goodsname:</td>
    <td>${list.goodsname }</td>
  </tr>
  <tr>
    <td>price:</td>
    <td>${list.price }</td>
  </tr>
  <tr>
    <td>sale:</td>
    <td>${list.sale }</td>
  </tr>
  <tr>
    <td>inventory:</td>
    <td>${list.inventory }</td>
  </tr>
  <tr>
      <td> </td>
      <td> </td>
      <td> </td>
  </tr>

  </table>
  </td>
  </c:forEach>
  
  <tr>
    <c:forEach var="list" items="${list }" begin="3" end="6">
  <td>
   <table width=300>
   
  <tr height="20">
    <td rowSpan=5 width="150"> <a href="goodsdetail.lzw?id=${list.id}" target="_blank" >
        <img src="images/goods/${list.picture }" width="140" height="100"/></a></td>
    <td width="100">id:</td>
    <td width="50">${list.id }</td>
  </tr>
  <tr>
    <td>goodsname:</td>
    <td>${list.goodsname }</td>
  </tr>
  <tr>
    <td>price:</td>
    <td>${list.price }</td>
  </tr>
  <tr>
    <td>sale:</td>
    <td>${list.sale }</td>
  </tr>
  <tr>
    <td>inventory:</td>
    <td>${list.inventory }</td>
  </tr>
  <tr>
      <td> </td>
      <td> </td>
      <td> </td>
  </tr>
  
  </table>
  </td>
  </c:forEach>
  </tr>
  
</table>
<hr>
<table align="center">
  <tr>
    <td width=250 align="left"><a href="newhome.lzw?pagenow=${pagenow-1 }&sql=${sql }">上一页</a></td>
    <td width=250 align="right"><a href="newhome.lzw?pagenow=${pagenow+1 }&sql=${sql }">下一页</a></td>
  </tr>

</table>
</div>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值