JSP MVC 实现增删改查数据库

1.首先先建一个界面就算是一个增加的界面,add
2.建一个实体类,用于得到数据,添加数据的一个对象类。在endity包中,可以自动创建成功
3.建一个数据访问层,这里要包括所有增删改查的功能。其中具体方法的参数可以用实体类来或者自己定义一个变量,过后会传值,dao包中
4.建一个逻辑功能层,这里主要是调用数据访问层的具体方法,这里把那些方法结合起来,可以实现更加完美的功能。 service包中
5.建各个Servlet类,每种功能一个Servlet,一一对应,然后在这里面就可以获取从前端传来的数据并调用逻辑功能层中的方法。servlet包中
大概的流程如上所述,下面是核心代码:在这里插入代码片

<%@ 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>Insert title here</title>
</head>
<body>
	<form action="AddStudentServlet " method="post">
	    ID:<input type="text" name="sid"/><br/>
		姓名:<input type="text" name="sname"/><br/>
		年龄:<input type="text" name="sage"/><br/>
		地址:<input type="text" name="saddress"/><br/>
		<input type="submit" value="新增"/><br/>
	</form>
	<form action="QueryAllStudents" method="post">
		<input type="submit" value="查询"/><br/>
	</form>

</body>
</html>
package zmx.endity;
/*
 * 构建实体类
 * */
public class Student {
	private int id;
	private String sname;
	private int age;
	private String saddress;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getSaddress() {
		return saddress;
	}
	public void setSaddress(String saddress) {
		this.saddress = saddress;
	}
	public Student() {
		
	}
	public Student( String sname, int age, String saddress) {
		super();
		this.sname = sname;
		this.age = age;
		this.saddress = saddress;
	}

	public Student(int id, String sname, int age, String saddress) {
		super();
		this.id = id;
		this.sname = sname;
		this.age = age;
		this.saddress = saddress;
	}
	public String toString(){
		//这个是会打印的方法,当打印对象时会自动执行
		return this.getId()+"-"+this.getSname()+"-"+this.getAge()+"-"+this.getSaddress();
	}

} 

package zmx.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import zmx.endity.Student;

//数据访问层,原子性的增删改查
public class StudentDao {
	private static PreparedStatement pstmt=null;
	private static Connection connection=null;
	private static int count=0;
	private static ResultSet rs=null;
	String URL="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
	String USENAME="root";
	String PWD="1234";
		
	public boolean isExist(int sid){
		boolean a=(queryStuentBySid(sid)==null?false:true);
		System.out.println(a);
		return a;
	}
	public boolean udateStudentBysno(int sid,Student student){
		boolean flag=false;
		try{
			Class.forName("com.mysql.cj.jdbc.Driver");//加载具体的驱动类(新的驱动类)
			//b.与数据库建立连接
			connection=DriverManager.getConnection(URL,USENAME,PWD);
			String sql="update guest set sname=?,sage=?,saddress=? where sid=?";
			pstmt=connection.prepareStatement(sql);
			pstmt.setString(1,student.getSname());
			pstmt.setInt(2,student.getAge());
			pstmt.setString(3,student.getSaddress());
			pstmt.setInt(4,sid);
			count=pstmt.executeUpdate();
			if(count>0){
				flag=true;
			}
			else{
				flag=false;
			}
			
			
			//c.发送sql,执行命令
			}catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				flag=false;
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				flag=false;

			}catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				flag=false;

			}
			finally {
				try{
					if(pstmt!=null)pstmt.close();
					if(connection!=null)connection.close();
				}catch(SQLException e){
					e.printStackTrace();
					flag=false;
				}
			}
			return flag;
			
	}
	
	public boolean deleteStudentBySno(int sid){
		boolean flag=false;
		try{
			Class.forName("com.mysql.cj.jdbc.Driver");//加载具体的驱动类(新的驱动类)
			//b.与数据库建立连接
			connection=DriverManager.getConnection(URL,USENAME,PWD);
			String sql="delete from guest where sid = ? ";
			pstmt=connection.prepareStatement(sql);
			pstmt.setInt(1,sid);
			count=pstmt.executeUpdate();
			if(count>0){
				flag=true;
			}
			else{
				flag=false;
			}
			
			
			//c.发送sql,执行命令
			}catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				flag=false;
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				flag=false;

			}catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				flag=false;

			}
			finally {
				try{
					if(pstmt!=null)pstmt.close();
					if(connection!=null)connection.close();
				}catch(SQLException e){
					e.printStackTrace();
					flag=false;
				}
			}
			return flag;
			
	}
	public boolean addStudent(Student student){
		boolean flag=false;
		
		try{
		Class.forName("com.mysql.cj.jdbc.Driver");//加载具体的驱动类(新的驱动类)
		//b.与数据库建立连接
		connection=DriverManager.getConnection(URL,USENAME,PWD);
		String sql="insert into guest value(?,?,?,?)";
		pstmt=connection.prepareStatement(sql);
		pstmt.setInt(1,student.getId());
		pstmt.setString(2, student.getSname());
		pstmt.setInt(3, student.getAge());
		pstmt.setString(4, student.getSaddress());
		count=pstmt.executeUpdate();
		if(count>0){
			flag=true;
		}
		else{
			flag=false;
		}
		
		
		//c.发送sql,执行命令
		}catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			flag=false;
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			flag=false;

		}catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			flag=false;

		}
		finally {
			try{
				if(pstmt!=null)pstmt.close();
				if(connection!=null)connection.close();
			}catch(SQLException e){
				e.printStackTrace();
				flag=false;
			}
		}
		return flag;
		
	}
	
	public List<Student> queryAllStuents(){
		List<Student> students=new ArrayList<>();
		Student student=null;
		try{
			Class.forName("com.mysql.cj.jdbc.Driver");//加载具体的驱动类(新的驱动类)
			//b.与数据库建立连接
			connection=DriverManager.getConnection(URL,USENAME,PWD);
			String sql="select * from guest";
			pstmt=connection.prepareStatement(sql);
			rs=pstmt.executeQuery();
			while(rs.next()){
				int id=rs.getInt("sid");
				String name=rs.getString("sname");
				int age=rs.getInt("sage");
				String address=rs.getString("saddress");
				student=new Student(id,name,age,address);
				students.add(student);
			}
			return students;
			
			//c.发送sql,执行命令
			}catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				return null;
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				return null;
			}catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				return null;
			}
			finally {
				try{
					if(rs!=null)rs.close();
					if(pstmt!=null)pstmt.close();
					if(connection!=null)connection.close();
				}catch(SQLException e){
					e.printStackTrace();
				}
			}
		}
	
	public Student queryStuentBySid(int sid){
		Student student=null;
		try{
		Class.forName("com.mysql.cj.jdbc.Driver");//加载具体的驱动类(新的驱动类)
		//b.与数据库建立连接
		connection=DriverManager.getConnection(URL,USENAME,PWD);
		String sql="select * from guest where sid = ?";
		pstmt=connection.prepareStatement(sql);
		pstmt.setInt(1,sid);
		rs=pstmt.executeQuery();
		while(rs.next()){
			int id=rs.getInt("sid");
			String name=rs.getString("sname");
			int age=rs.getInt("sage");
			String address=rs.getString("saddress");
			student=new Student(id,name,age,address);
		}
		
		
		//c.发送sql,执行命令
		}catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			
		}catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			
		}
		finally {
			try{
				if(rs!=null)rs.close();
				if(pstmt!=null)pstmt.close();
				if(connection!=null)connection.close();
			}catch(SQLException e){
				e.printStackTrace();
			}
		}
		return student;
	}

}

package zmx.service;

import java.util.List;

import zmx.dao.StudentDao;
import zmx.endity.Student;

//业务逻辑层:逻辑性 增删改查(增:查+增对Dao层的的组装)
public class StudentService {
	StudentDao studentDao=new StudentDao();
	
	public boolean deleteStudentBySno(int sid){
		if(studentDao.isExist(sid)){
			return studentDao.deleteStudentBySno(sid);
		}
		else
		return false;
	}
	
	public List<Student> queryAllStudents(){
		return studentDao.queryAllStuents();
	}
	
	public Student queryStudentBySno(int sid){
		return studentDao.queryStuentBySid(sid);
	}
	public boolean updateStudentBySno(int mid,Student student){
		if(studentDao.isExist(mid)){
			System.out.println("存在");
			return studentDao.udateStudentBysno(mid, student);
			
		}
		else
			return false;
	}
	public boolean addStudent(Student student){
		boolean flag=false;
		if(!studentDao.isExist(student.getId())){
			studentDao.addStudent(student);
			flag=true;
		}
		else{
			System.out.println("此人已存在");
			flag=false;
		}
		return flag;
	}

}

package zmx.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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

import zmx.endity.Student;
import zmx.service.StudentService;

/**
 * Servlet implementation class AddStudentServlet
 */
public class AddStudentServlet extends HttpServlet {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	request.setCharacterEncoding("utf-8");
		int id=Integer.parseInt(request.getParameter("sid"));
		String name=request.getParameter("sname"); 
		int age=Integer.parseInt(request.getParameter("sage")); 
		String address=request.getParameter("saddress"); 
		Student student=new Student(id,name,age,address);
		
		StudentService studentService=new StudentService();
		boolean result=studentService.addStudent(student);
		/*
		 * out request  reponse session application
		 * out:  PrintWriter out=response.getWriter();
		 * session:  request.getSession();
		 * application:    request.getServletContext();
		 * */
		response.setContentType("text/html; charset=UTF-8"); 
		response.setCharacterEncoding("utf-8");
		if(result){
			 request.setAttribute("error", "noerror");
			 //out.print("增加成功"); 
		}
		else {
			//PrintWriter out=response.getWriter();
			//out.print("增加失败");
			request.setAttribute("error", "error");
		}
		request.getRequestDispatcher("QueryAllStudents").forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

在这里插入图片描述


版权声明:本文为qq_41648092原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。