JDBC+Servlet+jsp(分页)

目录:

           1.导入jar包;

           2.创建实体类

           3.创建dao层

           4.创建service层

           5.创建servlet层

           6.jsp页面


   一.导入jar包;

         1.导入mysql-connector-java-5.1.0-bin.jar包;

  二.创建实体类     

package com.ybb.entity;

public class Goods {	
	private int id;
	private String name;
	private double price;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public Goods(int id, String name, double price) {
		super();
		this.id = id;
		this.name = name;
		this.price = price;
	}
	public Goods() {
		super();
		// TODO Auto-generated constructor stub
	}

}

三.创建dao层

BaseDao:封装类(封装对增删改查的方法)

package com.ybb.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


public class BaseDao {
	
	private Connection coon;
	//获取连接
	public Connection getConnnection(){
		try {
			//通过反射加载驱动
			
			Class.forName("com.mysql.jdbc.Driver");
			//连接数据库
			coon=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/school?useUnicode=true&characterEncoding=utf8", "ybb", "1234");			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return coon;
		
	}
	
	//update users set name=? where id=?;
	//增删改
	public int update(String sql,Object[]objects){
		int num=0;	
		try {
			//连接
			coon=getConnnection();
			PreparedStatement ps=coon.prepareStatement(sql);
			if (objects!=null&&objects.length>0) {
				for (int i = 0; i < objects.length; i++) {
					//替换占位符
					ps.setObject((i+1), objects[i]);
				}
			}
			//ִ执行增删改的操作
			num=ps.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return num;		
	}
	
	//查询
	public ResultSet getResultSet(String sql,Object[]objects){
		ResultSet rs=null;
		try {
			//连接
			coon = getConnnection();
			PreparedStatement ps = coon.prepareStatement(sql);
			if (objects!=null&&objects.length>0) {
				for (int i = 0; i < objects.length; i++) {
					ps.setObject((i+1), objects[i]);
				}
			}
			//执行查询操作
			rs=ps.executeQuery();
		} catch (Exception e) {
			// TODO: handle exception
		}
		return rs;	
	}
   
	 //关闭资源
    public  void  close(Connection connection ,PreparedStatement ps , ResultSet  rs){
        try {
            if(connection !=null){
                connection.close();
            }

            if(ps !=null){
                ps.close();
            }

            if(rs !=null){

                rs.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

接口类 GoodsDao

package com.ybb.dao;

import java.util.List;

import com.ybb.entity.Goods;

public interface GoodsDao {
    	//查询所有
	public List<Goods> findGoods();
	//增加
	public int addGoods(Goods goods);
	修改	
	public int updateGoods(Goods goods);
	删除
	public int deleteGoods(int id);
	分页	
	public List<Goods> fengYe(int pageIndex,int pageSize);

}

实现接口的类 GoodsDaoImpl

package com.ybb.dao;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.ybb.entity.Goods;

public class GoodsDaoImpl extends BaseDao implements GoodsDao{
 
	
	//查询所有
	@Override
	public List<Goods> findGoods() {
		// TODO Auto-generated method stub
		List<Goods>lt=new ArrayList<Goods>();
		try {
			String sql = "select * from goods";
			Object[] objects = {};
                         //调用封装类方法
			ResultSet rs = this.getResultSet(sql, objects);
                         //遍历放入集合中
			 while (rs.next()){
	                Goods goods=new Goods();
	                goods.setId(rs.getInt("id"));
	                goods.setName(rs.getString("name"));
	                goods.setPrice(rs.getDouble("price"));
                        lt.add(goods);               
	            }
		} catch (Exception e) {
			// TODO: handle exception
		}
		return lt;
	}
  
	//增加
	@Override
	public int addGoods(Goods goods) {
		// TODO Auto-generated method stub
		int count=0;
		String sql="insert into goods(name,price) values(?,?)";
		Object[]objects={goods.getName(),goods.getPrice()};
                //调用封装类的方法
		count=this.update(sql, objects);
		return count;
	}

	//修改
	@Override
	public int updateGoods(Goods goods) {
		// TODO Auto-generated method stub
		int count=0;
		String sql="update goods set name=?,price=? where id=?";
		Object[]objects={goods.getName(),goods.getPrice(),goods.getId()};
		count=this.update(sql, objects);		
		return count;
	}
    
	//删除
	@Override
	public int deleteGoods(int id){
		// TODO Auto-generated method stub
		int count=0;
		String sql="delete from goods where id=?";
		Object[]objects={id};
		count=this.update(sql, objects);
		return count;
	}

	
	//分页
	@Override
	public List<Goods> fengYe(int pageIndex, int pageSize) {
		// TODO Auto-generated method stub
		List<Goods>lt=null;
		try {
			lt=new ArrayList<Goods>();
			String sql = "select * from goods limit ?,?";
			Object[] objects = { pageIndex, pageSize };
			ResultSet rs = this.getResultSet(sql, objects);
			while (rs.next()) {
                           Goods goods=new Goods();
                           goods.setId(rs.getInt("id"));
                           goods.setName(rs.getString("name"));
                           goods.setPrice(rs.getDouble("price"));
                           lt.add(goods);
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		return lt;
	}

}

四.创建业务层(service)

package com.ybb.server;

import java.util.List;

import com.ybb.dao.GoodsDao;
import com.ybb.dao.GoodsDaoImpl;
import com.ybb.entity.Goods;

public class GoodsServer {
	private GoodsDao goodsDao=new GoodsDaoImpl();

	public GoodsDao getGoodsDao() {
		return goodsDao;
	}

	public void setGoodsDao(GoodsDao goodsDao) {
		this.goodsDao = goodsDao;
	}
	
	
	public List<Goods> findGoods(){
		return goodsDao.findGoods();		
	}
	
	public int addGoods(Goods goods){
		return goodsDao.addGoods(goods);
		
	}
	
	public int updateGoods(Goods goods){
		return goodsDao.updateGoods(goods);
		
	}
	
	public int deleteGoods(int id){
		return goodsDao.deleteGoods(id);
		
	}
	
		
	public List<Goods> fengYe(int pageIndex,int pageSize){
		return goodsDao.fengYe(pageIndex, pageSize);
		
	}
}

五.创建servlet层

GoodsServlet:实现分页

package com.ybb.servlet;

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

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

import com.ybb.entity.Goods;
import com.ybb.server.GoodsServer;

public class GoodsServlet extends HttpServlet {
    
	public GoodsServlet() {
		super();
	}
	
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}
	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		doPost(request, response);	
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		//解决中文乱码
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		//当前页数
		int pageIndex=1;
		
		//页量
		int pageSize=3;
		
		//总页数
		int pageCount=1;
		
                //获取从a标签中传输的值(request.getParameter可以拿取表单的值,也可以拿取a标签所传输的值)
		String pageIndex2 = request.getParameter("pageIndex");
		System.out.println(pageIndex2);
		if (pageIndex2!=null&&!pageIndex2.equals("")) {
			 pageIndex = Integer.parseInt(pageIndex2);
		}
		
		
		GoodsServer goodsServer=new GoodsServer();	
		List<Goods>lt=goodsServer.findGoods();
		//获取总数据量
		int total=lt.size();
		//获取总页数
		pageCount=total%pageSize==0?total/pageSize:(total/pageSize)+1;
		//判定最小页数为1,不能低于1
		if (pageIndex<1) {
			pageIndex=1;
		//判定最大页数不能高于总页数
		}else if (pageIndex>pageCount) {
			pageIndex=pageCount;
		}
		

		int page=(pageIndex-1)*pageSize;
		int size=pageSize;
		
		List<Goods>lt1=goodsServer.fengYe(page, size);
                   //当前页数
		request.getSession().setAttribute("page",pageIndex);
                   //总页数
	    request.getSession().setAttribute("count", pageCount);
                   //存放数据的集合
        request.getSession().setAttribute("list", lt1);
      
        response.sendRedirect("../index.jsp");
        
	}

	
	public void init() throws ServletException {
		// Put your code here
	}

}

六.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
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>
   <table border="1">
     <tr>
     <td>id</td>
     <td>商品名</td>
     <td>价格</td>
     <td>操作</td>
     </tr>
     <c:forEach items="${list}" var="goods">
     <tr>
     <td>${goods.id}</td>
     <td>${goods.name}</td>
     <td>${goods.price}</td>
     <td><a href="/JavaWeb-jdbc/servlet/ShanchuServlet?id=${goods.id}">
         <button onclick="delete1()">删除</button></a></td>
     </tr>
     </c:forEach>
   </table>
    
  <p>
  <a href="/JavaWeb-jdbc/add.jsp"><button>增加</button></a>
  </p>
  <p>
  <span>共${count}页/第${page}页</span>
    <a href="/JavaWeb-jdbc/servlet/GoodsServlet?pageIndex=1">首页</a>
    <a href="/JavaWeb-jdbc/servlet/GoodsServlet?pageIndex=${page-1}">上一页</a>
    <a href="/JavaWeb-jdbc/servlet/GoodsServlet?pageIndex=${page+1}">下一页</a>
    <a href="/JavaWeb-jdbc/servlet/GoodsServlet?pageIndex=${count}">尾页</a>
  </p>
  </body>
</html>

猜你喜欢

转载自blog.csdn.net/ybb520chongren_/article/details/82756251