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();
}
}
}
}