java+servlet+jsp连接数据库的增删改查

1.首先建一个公共的包,里面包括连接数据库的方法,不用每次都连接数据库。
 
 
public String url="jdbc:mysql://localhost:3306/rwgl?useSSL=false";
	@SuppressWarnings("unused")
	public String userName="root";//数据库的账号
	@SuppressWarnings("unused")
	public String pwd="password";//数据库的密码
 
 
protected void initDriver() {//数据加载驱动
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

获取数据库的链接

 
 
 
 
protected Connection getConn() {
		// 在连接的时候,应该先加载数据库驱动
		initDriver();
		try {
			conn = DriverManager.getConnection(url, userName, pwd);
		} catch (SQLException e) {

			e.printStackTrace();
		}

		return conn;
	}

2.创建实体类

 
 
package com.systop.rwgl.employee.model;

import java.io.Serializable;
import java.util.Date;

public class Employee implements Serializable{

	
	private static final long serialVersionUID = -5469025483066661789L;
	//唯一的主键
	private int id;
	private int userid;
	private int deptid;
	private int no;
	private String name;
	private String sex;
	//生日是date的数据类型
        private Date birthday;
	private String duty;
	private String address;
	private String number;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public int getUserid() {
		return userid;
	}
	public void setUserid(int userid) {
		this.userid = userid;
	}
	public int getDeptid() {
		return deptid;
	}
	public void setDeptid(int deptid) {
		this.deptid = deptid;
	}
	
	
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	
	public int getNo() {
		return no;
	}
	public void setNo(int no) {
		this.no = no;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	
	
	public String getDuty() {
		return duty;
	}
	public void setDuty(String duty) {
		this.duty = duty;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getNumber() {
		return number;
	}
	public void setNumber(String number) {
		this.number = number;
	}
	public void setBirthday(String parameter) {
		// TODO Auto-generated method stub	
	}
}

3.在前台的界面上的form表单上,action连接的时候,增加一个action的参数,给他一个特定的值

 
 
action="${pageContext.request.contextPath}/employee?action=add"

然后在servlet的文件中写有关增删改查的,初学者适用

 
 
 
 
package com.systop.rwgl.employee.controller;
import java.io.IOException;
import java.sql.Date;
import java.sql.SQLException;
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.systop.rwgl.employee.dao.EmployeeDao;
import com.systop.rwgl.employee.model.Employee;
import com.systop.rwgl.user.model.User;

public class EmployeeServlet extends HttpServlet{
	
	private static final long serialVersionUID = 1L;
	/**
	 * doget的提交方式在使用a标签的时候使用,
	 * 是将get的提交方式转化为post的提交方式。
	 * dopost的是将按钮的提交方式
	 * 
	 * 转化提交方式
	 */
	public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
		doPost(request,response);
	}
	public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
		
		       String action = request.getParameter("action");
                       //当你前台界面设置的action的值等于add的时候执行下面的语句
		       if(action != null && action.equals("add")) {
		           EmployeeDao employeedao = new EmployeeDao();
                          //测试有没有执行	
                          System.out.println("?????????????????"+action);
			
			try {
	                  //封装一个employee的实体类,将前台文本框中的值获取到,存入employee中
                          Employee employee = new Employee();		
                          //强制转化no的值,int类型的转为String类型的
	                  employee.setNo(Integer.valueOf(request.getParameter("no")));
                          //双引号中的值跟前台文本框中的name的值相同
	 	          employee.setName(request.getParameter("name"));
		          employee.setSex(request.getParameter("sex"));
		          //必须跟数据库中的类型相同					
                          employee.setBirthday(Date.valueOf(request.getParameter("birth")));
		          employee.setDuty(request.getParameter("zhiwu"));
		          employee.setAddress(request.getParameter("zhuzhi"));
		          employee.setNumber(request.getParameter("number"));
                          //Dao文件中有addEmployee的方法,在这里调用	        	        
                          employeedao.addEmployee(employee);
	        	  //添加完成提交之后首页显示所有的信息
	        	try {
			    List list = employeedao.getEmployee("");
			    for(int i = 0;i<list.size();i++) {
		            Employee employee1 = (Employee) list.get(i);		        	                 }
			//将list的值赋给employeelist并传送给前台	        	                			request.setAttribute("employeelist",list);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
                               //重定向,执行完了之后跳转到自己想到的界面	
        	                 request.getRequestDispatcher("/employee/manager.jsp").forward(request, response);
			} catch (ServletException e) {//刨出异常
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		/**
		 * 查询所有的信息
		 */
		else if(action != null && action.equals("sel")) {
			EmployeeDao employeedao = new EmployeeDao();
			try {
				//定义一个集合			        
				List list = employeedao.getEmployee("");
				//使用for循环查询出所有的信息				
				for(int i = 0;i<list.size();i++) {
				//得到集合中的信息	        		
				Employee employee1 = (Employee) list.get(i);
	        	}
        	                request.setAttribute("employeelist",list);
        	                request.getRequestDispatcher("/employee/manager.jsp").forward(request, response);
		        } catch (SQLException e) {
			        // TODO Auto-generated catch block
			        e.printStackTrace();
		        }
	}
		/**在前台的时候添加一个参数id,id为主键
		 * 按照id的值删除信息
		 */
		else if(action != null && action.equals("del")) {
		EmployeeDao employeedao = new EmployeeDao();
		//得到主键的值		
		int id=Integer.valueOf(request.getParameter("id"));
           	System.out.println(id);
		try {
			Employee employee = new Employee();
			//得到前台主键的值			
			employee.setId(id);
			employeedao.deleteEmployee(employee);
			try {
			        List list = employeedao.getEmployee("");
			        for(int i = 0;i<list.size();i++) {
	        		Employee employee1 = (Employee) list.get(i);
	        	}
        	                request.setAttribute("employeelist",list);
		        } catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		       }
			request.getRequestDispatcher("/employee/manager.jsp").forward(request, response);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
		/**按照id查询一条信息
		 * 查询一条信息
		 */
		else if(action != null && action.equals("selOne")) {
		EmployeeDao employeeDao = new EmployeeDao();
		int id=Integer.valueOf(request.getParameter("id"));
		try {
			List employeeOne = employeeDao.getOne(id);
		/*	System.out.println(employeeOne.size());*/
			
			request.setAttribute("employeeOne",employeeOne);
	        request.getRequestDispatcher("/employee/update.jsp").forward(request, response);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
		/**
		 * 修改信息
		 */
		else if(action != null && action.equals("update")) {
		EmployeeDao employeeDao = new EmployeeDao();
		int id=Integer.valueOf(request.getParameter("id"));
		/*System.out.println(id);*/
		Employee employee = new Employee();
		
		/*employee.setId(request.getp);*/
		//得到修改之后的值,并获取,放在employee中
		employee.setId(id);
		employee.setNo(Integer.valueOf(request.getParameter("no")));
		employee.setName(request.getParameter("name"));
		employee.setSex(request.getParameter("sex"));
		//改变生日的数据类型		
		employee.setBirthday(Date.valueOf(request.getParameter("birth")));
		employee.setDuty(request.getParameter("zhiwu"));
		employee.setAddress(request.getParameter("zhuzhi"));
		employee.setNumber(request.getParameter("number"));
    	        try {
		        //修改完信息之后,再次的显示全部的信息			
		        employeeDao.updateEmployee(employee);
			
			try {
			        List list = employeeDao.getEmployee("");
				for(int i = 0;i<list.size();i++) {
	        		Employee employee1 = (Employee) list.get(i);
	        	}
        	                request.setAttribute("employeelist",list);
        	                request.getRequestDispatcher("/employee/manager.jsp").forward(request, response);
		        } catch (SQLException e) {
			        // TODO Auto-generated catch block
			        e.printStackTrace();
		        }
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}
}
}
 
 

4.在Dao中的文件写增删改查的方法

 
 
package com.systop.rwgl.employee.dao;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.mysql.jdbc.Connection;
import com.systop.core.dao.BaseDao;
import com.systop.rwgl.employee.model.Employee;
import com.systop.rwgl.user.model.User;

public class EmployeeDao extends BaseDao{
    /**
     * 在数据库中添加信息
     * @param employee
     * @throws Exception
     */
	public void addEmployee(Employee employee) throws Exception{
		String sql = "insert into task_employee (EM_NO,EM_XM,EM_XB,EM_SR,EM_ZW,EM_ZZ,EM_SFZH) values (?,?,?,?,?,?,?)";//添加的insert语句
		Connection conn = null;
		PreparedStatement stmt = null;
		try {
			conn = (Connection) getConn();
			stmt = conn.prepareStatement(sql);
			/*System.out.println(sql);*/
			stmt.setInt(1, employee.getNo());//从servlet文件中封装到employee中,从employee中获取各个字段的值
			stmt.setString(2, employee.getName());//从employee中得到值的顺序必须跟sql语句中的顺序一致
			stmt.setString(3, employee.getSex());
			stmt.setDate(4, (Date) employee.getBirthday());
			stmt.setString(5, employee.getDuty());
			stmt.setString(6, employee.getAddress());
			stmt.setString(7, employee.getNumber());
			stmt.execute();
			/*System.out.println(stmt);*/
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			if (conn != null) {
				conn.close();
			}
			if (stmt != null) {
				stmt.close();
			}
		}
	}
	/**
	 * 在数据库中查询所有的记录,并显示在页面上
	 * @param deptNo
	 * @return
	 * @throws SQLException
	 */
	public List getEmployee(String deptNo) throws SQLException{	
     //查询select的语句
		String sql = "SELECT ID,EM_NO,EM_XM,EM_XB,EM_SR,EM_ZW,EM_ZZ,EM_SFZH  FROM task_employee";
		Connection conn = null;
		PreparedStatement stmt = null;
		List employeeList = new ArrayList();
		try {
			conn = (Connection) getConn();
			stmt = conn.prepareStatement(sql);
			
			ResultSet rs = stmt.executeQuery();
			while (rs.next()) {
				Employee u = new Employee();
				u.setId(rs.getInt(1));
				u.setNo(rs.getInt(2));
				u.setName(rs.getString(3));
				u.setSex(rs.getString(4));
				u.setBirthday(rs.getDate(5));
				u.setDuty(rs.getString(6));
				u.setAddress(rs.getString(7));
				u.setNumber(rs.getString(8));
				
				employeeList.add(u);	
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			if (conn != null) {
				conn.close();
			}
			if (stmt != null) {
				stmt.close();
			}
		}
		return employeeList;
	}
	/**
	 * 按照id来删除数据库中的信息
	 * @param employee
	 * @throws SQLException
	 */
	public void deleteEmployee(Employee employee) throws SQLException {
		String sql="delete from task_employee where id=?";//delete的sql语句
		Connection conn = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			conn = (Connection) getConn();
			stmt = conn.prepareStatement(sql);
			stmt.setInt(1, employee.getId());//只得到主键id的值,并且删除id的那一条信息
			
			stmt.execute();		
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			if (conn != null) {
				conn.close();
			}
			if (stmt != null) {
				stmt.close();
			}
		}
	}
	/**
	 * 查询一条记录
	 * @param id
	 * @return
	 * @throws SQLException
	 */
	public List getOne(int id) throws SQLException
	  {
	    String sql = " select ID,TASK_USER_ID,TASK_DEPT_ID,EM_NO,EM_XM,EM_XB,EM_SR,EM_ZW,EM_ZZ,EM_SFZH from task_employee where ID=?";
	    Connection conn = null;
      PreparedStatement stmt = null;
      conn = (Connection) getConn();
		stmt = conn.prepareStatement(sql);
		stmt.setInt(1, id);
		ResultSet rs = stmt.executeQuery();
		List employeeOne = new ArrayList();
		while (rs.next())
	    {
	      Employee em = new Employee();
	       em.setId(rs.getInt(1));
	       em.setUserid(rs.getInt(2));
			em.setDeptid(rs.getInt(3));
			em.setNo(rs.getInt(4));
			em.setName(rs.getString(5));
			em.setSex(rs.getString(6));
			em.setBirthday(rs.getDate(7));
			em.setDuty(rs.getString(8));
			em.setAddress(rs.getString(9));
			em.setNumber(rs.getString(10));
			employeeOne.add(em);
	    }
		return employeeOne;
	  }
	/**
	 * 修改信息
	 * @param employee
	 * @throws SQLException
	 */
	public void updateEmployee(Employee employee) throws SQLException{
		String sql = "update task_employee set EM_NO=?,EM_XM=?,EM_XB=?,EM_SR=?,EM_ZW=?,EM_ZZ=?,EM_SFZH=? where ID=?";//update的sql语句获取到修改之后的信息之后,插入到update语句中
		Connection conn = null;
	    PreparedStatement stmt = null;
	    try {
			conn = (Connection) getConn();
			stmt = conn.prepareStatement(sql);
			/*System.out.println(sql);*/
			stmt.setInt(1, employee.getNo());
			stmt.setString(2, employee.getName());
			stmt.setString(3, employee.getSex());
			stmt.setDate(4, (Date) employee.getBirthday());
			stmt.setString(5, employee.getDuty());
			stmt.setString(6, employee.getAddress());
			stmt.setString(7, employee.getNumber());
			stmt.setInt(8, employee.getId());
			stmt.execute();
			/*System.out.println(stmt);*/
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			if (conn != null) {
				conn.close();
			}
			if (stmt != null) {
				stmt.close();
			}
		}
	}
}



猜你喜欢

转载自blog.csdn.net/cxc_happy111/article/details/79920241