目录:
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>