jsp+servlet简单增删改查项目!!

最近在学ssm框架,但感觉难度越来越大,学习效率直线下滑。想来还是要做点什么,
于是把以前写的小项目整理一下,也当是温故知新。
简单的jsp加上servlet对单表进行增删改查

用到的软件:MySQL、eclipse、tomcat9.0、
我这里用的是MySQL8.0,其他版本的驱动与url可能与我不同
…项目目录表…
工作目录
架包
jstl-1.2.jar(自行下载)
mysql-connector-java-8.0.11.jar

1.建表
CREATE TABLE flower2 (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
price varchar(50) NOT NULL,
production varchar(50) NOT NULL,
PRIMARY KEY (id)
)

2.dao层
连接数据库:

package com.lj.dao;
import java.sql.Connection;
import java.sql.DriverManager;

public class DBConnection {
	private static String driver="com.mysql.cj.jdbc.Driver";
	private static String url="jdbc:mysql://localhost:3306/firstsql?characterEncoding=utf-8&&userUnicode=true&&serverTimezone=GMT&&useSSL=false";
	private static String username="root";
	private static String password="2437813357";
	private Connection connection=null;
	
	public Connection getConnection() {
        if(connection==null) {
        	try {
        		Class.forName(driver);
        		connection=DriverManager.getConnection(url,username,password);
        	}catch(Exception e) {
        		e.printStackTrace();
        		System.out.println("未找到驱动");
        	}
        }
		return connection;
	}
}
package com.lj.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


import com.lj.pojo.*;

public class Dao{
	//对数据库的增删改查
	DBConnection dbConnection=new DBConnection();
	Connection connection=dbConnection.getConnection();
	PreparedStatement ptmt=null;
	ResultSet rs=null;
	//增加数据
	public int addAdmin(Flower flower){
		int index=0;
		try{
		    //添加命令
		    String sql="insert into flower2 values(default,?,?,?)";
	        ptmt=connection.prepareStatement(sql);
	        
	        ptmt.setObject(1,flower.getName());
	        ptmt.setObject(2,flower.getPrice());
	        ptmt.setObject(3,flower.getProduction());
	        index=ptmt.executeUpdate();
		}catch (SQLException e) {
			e.printStackTrace();
		}
	    return index;
	}
	
	//删除数据
	public int deleteFlower(int id) {
		int index = 0;
		try {
			String sql="delete from flower2 where id=?";
			ptmt =connection.prepareStatement(sql);
			ptmt.setInt(1, id);
			index=ptmt.executeUpdate();
			ptmt.close();
			//System.out.println("语句执行成功");
		}catch(SQLException e) {
			e.printStackTrace();
		}
		return index;
	}
	
	//修改数据
	public int updateFlower(Flower flower) {
		int index=0;
		try {
			//wdnmd,打了个中文的?,wc??????
			//Parameter index out of range (3 > number of parameters, which is 2)
			String sql="update flower2 set name=?,price=?,production=? where id=?";
			
			ptmt=connection.prepareStatement(sql);
			ptmt.setString(1,flower.getName());
			ptmt.setDouble(2,flower.getPrice());
			ptmt.setString(3,flower.getProduction());
			ptmt.setInt(4,flower.getId());
			index=ptmt.executeUpdate();
			ptmt.close();
		}catch(SQLException e) {
			e.printStackTrace();
		}
		//System.out.println(flower);
		return index;
	}
	
	//通过id查找数据
	public Flower selectFlower(int id) {
		Flower flower=new Flower();
		try {
			String sql="select * from flower2 where id=?";
			ptmt=connection.prepareStatement(sql);
			ptmt.setInt(1, id);
			rs=ptmt.executeQuery();
			while(rs.next()) {
				flower.setId(rs.getInt("id"));
				flower.setName(rs.getString("name"));
				flower.setPrice(rs.getDouble("price"));
				flower.setProduction(rs.getString("production"));
				//System.out.println(flower);
			}
			rs.close();
			ptmt.close();
		}catch(SQLException e) {
			e.printStackTrace();
		}
		return flower;
	}
	
	//web分页,主要是与sql语句后的两个数据进行操作来分段显示数据
	public List<Flower> selPageFlower(int pageStart,int pageSize) {
		List<Flower> list=new ArrayList<>();
		try {
			//从第几个开始往后拿多少个数据
			String sql="select * from flower2 limit ?,?";
			ptmt=connection.prepareStatement(sql);
			ptmt.setInt(1,pageStart);
			ptmt.setInt(2, pageSize);
			rs=ptmt.executeQuery();
			while(rs.next()) {
				list.add(new Flower(rs.getInt(1),rs.getString(2),rs.getDouble(3),rs.getString(4)));
			}
			ptmt.close();
			rs.close();
		}catch(Exception e) {
			e.printStackTrace();
		}
		return list;
	}
	
	//计算表中有多少行,与分页有关
	public int getLine() throws Exception{
		int line=0;
		String sql="select count(*) totalRows from flower2";
		ptmt=connection.prepareStatement(sql);
		rs=ptmt.executeQuery();
		while(rs.next()) {
			line=rs.getInt("totalRows");
		}
		return line;	
	}
}

对表的操作都在dao层

3.实体层
Flower类:

package com.lj.pojo;

public class Flower {
	private int id;
	private String name;
	private double price;
	private String production;
	public Flower(int id, String name, double price, String production) {
		super();
		this.id = id;
		this.name = name;
		this.price = price;
		this.production = production;
	}
	public Flower() {
		super();
	}
	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 String getProduction() {
		return production;
	}
	public void setProduction(String production) {
		this.production = production;
	}
}

PageInfo类,用来进行web分页操作:

package com.lj.pojo;

import java.util.List;

public class PageInfo {
	private int pageSize;//每页数据的多少
	private int pageNumber;//这是第几页
	private double total;//总页数
	private List<?> list;//每页的数据
	public int getPageSize() {
		return pageSize;
	}
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	public int getPageNumber() {
		return pageNumber;
	}
	public void setPageNumber(int pageNumber) {
		this.pageNumber = pageNumber;
	}
	public double getTotal() {
		return total;
	}
	public void setTotal(double total) {
		this.total = total;
	}
	public List<?> getList() {
		return list;
	}
	public void setList(List<?> list) {
		this.list = list;
	}
}

4.业务层

package com.lj.service;

import java.sql.SQLException;
import com.lj.dao.Dao;
import com.lj.pojo.Flower;
import com.lj.pojo.PageInfo;

public class FlowerService {
	Dao dao=new Dao();
	//增加花卉
	public int addFlowerService(Flower flower) throws SQLException {
		return dao.addAdmin(flower);
	}
	//删除花卉
	public int delFlowerService(int id) {
		return dao.deleteFlower(id);
	}
    //修改花卉
	public int updFlowerService(Flower flower) {
		return dao.updateFlower(flower);
	}
	//通过查找id来方便修改花卉
	public Flower selFlowerService(int id) {
		return dao.selectFlower(id);
	}
	public PageInfo showPageService(int pageNumber,int pageSize) throws Exception {
		PageInfo pageInfo=new PageInfo();
		pageInfo.setPageNumber(pageNumber);
		pageInfo.setPageSize(pageSize);
		//每一页的第一个数据
		int everyPageStart=pageSize*(pageNumber-1);
		
		int count=dao.getLine();//总行数
		//总页数
		int total=count%pageSize==0?count/pageSize:count/pageSize+1;
		pageInfo.setTotal(total);
		pageInfo.setList(dao.selPageFlower(everyPageStart, pageSize));
		//System.out.println(pageInfo.getTotal());
		return pageInfo;
	}
}

5.servlet
AddFlowerServlet:

import java.io.IOException;
import java.sql.SQLException;

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

import com.lj.pojo.Flower;
import com.lj.service.FlowerService;

/**
 * Servlet implementation class AddFlowerServlet
 */
@WebServlet("/AddFlowerServlet")
public class AddFlowerServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    FlowerService flowerService=new FlowerService();
    private int index;
    
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		String name=req.getParameter("name");
		String price=req.getParameter("price");
		String production=req.getParameter("production");
		
		//创建一个flower对象存放数据
		Flower flower=new Flower();
		flower.setName(name);
		flower.setPrice(Double.parseDouble(price));
		flower.setProduction(production);
		
		//调用业务层方法(将数据传入方法中)
		try {
			index = flowerService.addFlowerService(flower);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if(index>0) {
			//防止表单重复提交
			resp.sendRedirect("ShowPage");
			//请求转发
			//req.getRequestDispatcher("ShowPage").forward(req, resp);
		}
		//System.out.println(index);
	}
}

DelFlowerServlet:

package com.lj.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.lj.service.FlowerService;

/**
 * Servlet implementation class DelFlowerServlet
 */
@WebServlet("/DelFlower")
public class DelFlowerServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    FlowerService flowerService=new FlowerService();
    
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
	    String id0=req.getParameter("id");
	    int id=Integer.parseInt(id0);
	    try {
	    	flowerService.delFlowerService(id);
	    }catch(Exception e) {
	    	e.printStackTrace();
	    }
	    req.getRequestDispatcher("ShowPage").forward(req,resp);  
	}
}

SelFlowerServlet:

package com.lj.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.lj.pojo.Flower;
import com.lj.service.FlowerService;

/**
 * Servlet implementation class SelFlowerServlet
 */
@WebServlet("/SelFlowerServlet")
public class SelFlowerServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	FlowerService flowerService=new FlowerService();
	
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		String idString=req.getParameter("id");
		int id0=Integer.parseInt(idString);
		Flower flower0=flowerService.selFlowerService(id0);
		req.setAttribute("flower0",flower0);
		req.getRequestDispatcher("UpdFlower.jsp").forward(req, resp);
	}
}

ShowPageServlet(这里开始运行,拿到数据):

package com.lj.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.lj.pojo.PageInfo;
import com.lj.service.FlowerService;

@WebServlet("/ShowPage")
public class ShowPageServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    private FlowerService flowerService=new FlowerService();
    
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String strPageNumber=req.getParameter("pageNumber");
	    //初始页
		//System.out.println(strPageNumber);
		
		int pageNumber=1;
	    if(strPageNumber!=null&&!strPageNumber.equals("")) {
	    	pageNumber=Integer.parseInt(strPageNumber);
	    }
	    //System.out.println(pageNumber);
	    
	    String strPageSize=req.getParameter("pageSize");
	    //页面数据条数
	    int pageSize=3;
	    if(strPageSize!=null&&!strPageSize.equals("")) {
	    	pageSize=Integer.parseInt(strPageSize);
	    }
	
		PageInfo pageInfo=null;
		try {
			pageInfo = flowerService.showPageService(pageNumber, pageSize);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//System.out.println(pageInfo.getTotal());
	    req.setAttribute("pageInfo000", pageInfo);
	    req.getRequestDispatcher("ShowPageFlower.jsp").forward(req, resp);
	}
}

UpdFlowerServlet:

package com.lj.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.lj.pojo.Flower;
import com.lj.service.FlowerService;

/**
 * Servlet implementation class UpdFlowerServlet
 */
@WebServlet("/UpdFlowerServlet")
public class UpdFlowerServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    FlowerService flowerService=new FlowerService();
	
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		req.setCharacterEncoding("utf-8");
		String id= req.getParameter("id");
	    String name=req.getParameter("name");
	    String price=req.getParameter("price");
	    String production=req.getParameter("production");
	    Flower flower=new Flower();
	    
	    flower.setId(Integer.parseInt(id));
	    flower.setName(name);
	    flower.setPrice(Double.valueOf(price));
	    flower.setProduction(production);
	    flowerService.updFlowerService(flower);
	    req.getRequestDispatcher("ShowPage").forward(req, resp);
	}
}

7.jsp视图
AddFlower.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>添加花卉</title>
</head>
<body>
<script type="text/javascript">
   function test(){
	   var name=document.getElementById("name").value;
	   var price=document.getElementById("price").value;
	   var production=document.getElementById("production").value;
	   if(name==null||name==''){
		   alert("姓名不能为空!!");
		   return false;
	   }else if(price==null||price==''){
		   alert("价格不能为空!!");
		   return false;
	   }else if(production==null||production==''){
		   alert("地址不能为空!!");
		   return false;
	   }
   }
</script>
<form action="AddFlowerServlet" method="get" onsubmit="return test()">
    <table align="center" cellspacing="0">
         <tr>
              <td>名称</td>
              <td><input id="name" type="text" name="name"></td>
         </tr>
         <tr>
              <td>价格</td>
               <td><input id="price" type="text" name="price"></td>
         </tr>
         <tr>
              <td>产地</td>
              <td><input id="production" type="text" name="production"></td>
         </tr>
         <tr>
              <td colspan="2" align="center">
                  <input type="submit" value="提交">
                  <input type="reset" value="重置">
                  <input type="reset" value="返回" onclick="history.go(-1)">
              </td>
         </tr>
     </table>
</form>     
</body>
</html>

ShowPageFlower.jsp:

<%@page import="org.apache.jasper.tagplugins.jstl.core.ForEach"%>
<%@page import="com.lj.pojo.Flower"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>展示花卉</title>
<link rel="stylesheet" href="css/style.css" type="text/css">
<style type="text/css">
  a{
	text-decoration:none;
}
</style>
</head>
<body>
<!-- 因为直接从ShowFlower.jsp运行,没有运行ShowServlet,就无法拿到数据,从ShowServlet运行可以跳转到ShowFlower.jsp
从而显示界面
-->
       <table border="1" align="center" cellspacing="0">
           <tr>
               <th>编号</th>
               <th>名称</th>
               <th>价格</th>
               <th>产地</th>
               <th>操作</th>
           </tr> 
           <c:forEach items="${pageInfo000.list }" var="pi">
           <tr>
               <td>${pi.id }</td>
               <td>${pi.name }</td>
               <td>${pi.price }</td>
               <td>${pi.production }</td>
               <td>
               <!-- a标签相当于重定向,只传递id-->
                   <a href="DelFlower?id=${pi.id }" onclick="javascript:return confirm('确认删除吗?');">删除</a>
                   <a href="SelFlowerServlet?id=${pi.id }">修改</a></td>
           </tr>
           </c:forEach>
           <tr>
               <td colspan="5" align="center">
                   <a href="AddFlower.jsp" class="showhref">添加花卉信息</a> 
               </td>
           </tr>
           <tr>
               <td colspan="5" align="center">
               <a href="ShowPage?pageNumber=${pageInfo000.pageNumber-1}&pageSize=${pageInfo000.pageSize}"
               <c:if test="${pageInfo000.pageNumber<=1 }"> onclick="javascript:return false;"</c:if>>上一页
               </a>
               <a href="ShowPage?pageNumber=${pageInfo000.pageNumber+1}&pageSize=${pageInfo000.pageSize}"
               <c:if test="${pageInfo000.pageNumber>=pageInfo000.total}"> onclick="javascript:return false;"</c:if>>下一页
               </a>
               </td>
           </tr>     
        </table>
</body>
</html>

UpdFlower.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>修改</title>
</head>
<body>
     <form action="UpdFlowerServlet" method="post">
     <table border="1" align="center" cellspacing="0">
           <tr>
               <td>编号</td>
               <td>
                   <input type="text" name="id" value="${flower0.id }" readonly="readonly">
               </td>
           </tr>
           <tr>
               <td>名称</td>
               <td>
                   <input type="text" name="name" value="${flower0.name }">
               </td>
           </tr>
           <tr>
               <td>价格</td>
               <td>
                   <input type="text" name="price" value="${flower0.price }">
               </td>
           </tr>
           <tr>
               <td>产地</td>
               <td>
                   <input type="text" name="production" value="${flower0.production }">
               </td>
           </tr>
           <tr> 
               <td colspan="2" align="center">
                   <input type="submit" name="" value="确认">
                   <input type="button" name="" value="返回" onclick="history.go(-1)">
               </td>
           </tr>   
     </table>
     </form>      
</body>
</html>

8.css(其实没写什么)

@charset "UTF-8";
a{
	font-size:20px;
	align:center;
}

由于是web3.0,所以没有在web.xml中对servlet进行配置

效果:
效果
ok,完工!!!

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值