0730 JSP(Tomcat) 员工管理系统(删除、修改、添加)

jsp隐式对象
    在jsp页面中不用声明与实例化,直接就可以使用的java对象
    一共9个
       输入输出对象
             out
             request(请求对象,封装了请求信息,请求参数)
             response(响应对象)
      
       作用域对象(绑定数据)
            pageContext
            request
                 一次请求,所以绑定的数据在一次请求内有效
            session
                一次会话
                  什么是会话?
                      多次请求称为一次会话,一般是指浏览器一开一关之间。
            
            application

       page
       config
       exception
      
  转发
      只会显示第一个jsp的地址
      转发只有一个请求(request),不论中间经历多少个jsp
      浏览器向服务器发出一次请求,得到一个响应(获得一个html文本,图片,url...)
      称为一个request
     request.getRequestDispatcher("Main.jsp").forward(request, response);   

重定向
     浏览器地址栏会改变,显示最后一个jsp的地址
     重定向是两个请求
     浏览器向第一个jsp页面发出请求,第一个jsp回传一个url地址
     浏览器得到这个地址后,立刻向这个地址指定的第二个jsp发送
     请求,第二jsp处理请求后,向浏览器回传html文本
      response.sendRedirect("Main.jsp");

作业:
   用下载的网站模板写登录,注册


案例驱动:
   用户登录
   员工管理系统

 lib中导入jdbc

 建表
  部门表
    删除表
    drop table Dept
	drop table Emp

     create table Dept(
	    deptno int primary key, --部门编号
		dname varchar(200) not null,--部门名称
		location varchar(400) not null -- 部门地址
	 )

  员工表
    create table Emp(
	     empno int primary key identity,--员工编号
		 ename varchar(50) not null,--姓名
		 sex char(3)  check(sex in('男','女')) default '男',--性别
		 age int check(age between 18 and 60),--年龄
		 sal float check(sal>=3000) default 3000,--薪资
		 deptno int  references Dept(deptno)
	)

	select * from dept
	select * from emp

	添加
	insert into dept values(10,'java开发部','北京'),(20,'市场','上海'),
	(30,'企划部','长沙')

	select * from dept

	insert into emp values('熊大','男',25,12000,10),('熊二','男',23,11000,10),
('张三','女',21,9000,10),('李四','女',26,15000,20),('王五','男',27,16000,20),
('赵六','女',20,6000,20),('孙七','男',21,10000,30),('吴八','女',23,13000,30),
('邓九','男',20,9000,30),('常十','女',21,8000,30);

	select * from emp

	删除表中所有的记录,如果再添加记录标识列,会重新开始
truncate table emp
package com.hj.bean;

public class Emp {
	//与数据表结构一致
    private Integer empno;
    private String ename;
    private String sex;
    private Integer age;
    private Float sal;
    private Integer deptno;
	public Emp() {
		super();
		// TODO Auto-generated constructor stub
	}
   
	public Emp(Integer empno, String ename, String sex, Integer age, Float sal, Integer deptno) {
		super();
		this.empno = empno;
		this.ename = ename;
		this.sex = sex;
		this.age = age;
		this.sal = sal;
		this.deptno = deptno;
	}

	
	public Emp(String ename, String sex, Integer age, Float sal, Integer deptno) {
		super();
		this.ename = ename;
		this.sex = sex;
		this.age = age;
		this.sal = sal;
		this.deptno = deptno;
	}

	public Integer getEmpno() {
		return empno;
	}

	public void setEmpno(Integer empno) {
		this.empno = empno;
	}

	public String getEname() {
		return ename;
	}

	public void setEname(String ename) {
		this.ename = ename;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public Float getSal() {
		return sal;
	}

	public void setSal(Float sal) {
		this.sal = sal;
	}

	public Integer getDeptno() {
		return deptno;
	}

	public void setDeptno(Integer deptno) {
		this.deptno = deptno;
	}

	
   @Override
   public String toString() {
	return empno+"\t"+ename+"\t"+sex+"\t"+age+"\t"+sal+"\t"+deptno;
   }
    
}
package com.hj.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.hj.bean.Emp;
import com.hj.utils.DBUtils;

public class EmpDao {
   //封装基础业务逻辑
	//增
	public int save(Emp emp) throws SQLException{
		  //声明2个核心接口
		   Connection conn = null;
		   PreparedStatement prep = null;
		   String sql = "insert into emp values(?,?,?,?,?)";
		   try {
			   //获得连接对象
			conn = DBUtils.getConnection();
			  //获得预编译对象
		     prep = conn.prepareStatement(sql);
			 //设置参数
			 prep.setString(1,emp.getEname());
			 prep.setString(2, emp.getSex());
			 prep.setInt(3, emp.getAge());
			 prep.setFloat(4, emp.getSal());
			 prep.setInt(5, emp.getDeptno());
			 //prep.setDate(x, dd);
			 //发送预编译文件,执行sql
			 return prep.executeUpdate();		 
		} catch (SQLException e) {
			e.printStackTrace();
			throw e;
		}finally{
			  //关闭资源
			  DBUtils.closeAll(null, prep, conn);
		}
	}
	//删,依据主键删除
	public int delete(int empno) throws SQLException{
		  //声明2个核心接口
		   Connection conn = null;
		   PreparedStatement prep = null;
		   String sql = "delete from emp where empno=?";
		   try {
			   //获得连接对象
			conn = DBUtils.getConnection();
			  //获得预编译对象
		     prep = conn.prepareStatement(sql);
			 //设置参数
			 prep.setInt(1,empno);
			 //发送预编译文件,执行sql
			 return prep.executeUpdate();		 
		} catch (SQLException e) {
			e.printStackTrace();
			throw e;
		}finally{
			  //关闭资源
			  DBUtils.closeAll(null, prep, conn);
		}
	}
	//改
	//只能修改数据库存在的记录
	//修改的前提是查询
	//修改应该能够修改除主键以外所有的字段
	//应该依据主键去修改
	//参数emp对象是数据库存在的记录,所以它是查询方法
	//查询出来的
	public int modify(Emp emp) throws SQLException{
		  //声明2个核心接口
		  Connection conn = null;
		  PreparedStatement prep = null;
		  //sql
		  String sql = "update emp set ename=?,sex=?,age=?,sal=?,deptno=? where empno=?";
		  try {
			//获得连接对象
			  conn = DBUtils.getConnection();
			//获得预编译对象
			  prep = conn.prepareStatement(sql);
			  //设置参数
			  prep.setString(1, emp.getEname());
			  prep.setString(2, emp.getSex());
			  prep.setInt(3, emp.getAge());
			  prep.setFloat(4, emp.getSal());
			  prep.setInt(5, emp.getDeptno());
			  prep.setInt(6, emp.getEmpno());
			  //发送预编译文件,执行sql
			  return prep.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
			throw e;
		}finally{
			 //关闭资源
			DBUtils.closeAll(null, prep, conn);
		}
	}
	
	//查(最复杂)
	//只查询一条记录,依据员工编号查询
	public Emp queryForId(int empno) throws SQLException{
		  //声明3个核心接口
		 Connection conn = null;
		 PreparedStatement prep = null;
		 ResultSet rs = null;
		 Emp emp = null;
		 //sql
		 String sql = "select * from emp where empno=?";
		 try {
			//获得连接对象
			 conn = DBUtils.getConnection();
			//获得预编译对象
			 prep = conn.prepareStatement(sql);
			 //设置参数
			 prep.setInt(1,empno);
			 //发送预编译文件,执行sql
			 //获得结果集对象
			 rs = prep.executeQuery();
			 //遍历结果集,用结果集中的数据
			 //封装对象
			 while(rs.next()){
				  emp = new Emp();
				  emp.setEmpno(rs.getInt("empno"));
				  emp.setEname(rs.getString("ename"));
				  emp.setSex(rs.getString("sex"));
				  emp.setAge(rs.getInt("age"));
				  emp.setSal(rs.getFloat("sal"));
				  emp.setDeptno(rs.getInt("deptno"));
			 }
			 return emp;
		} catch (SQLException e) {
			e.printStackTrace();
			throw e;
		}finally{
			   //关闭资源
			DBUtils.closeAll(rs, prep, conn);
		}
	}
	//查询所有的记录
	public List<Emp> queryAll() throws SQLException{
		  //声明3个核心接口
		 Connection conn = null;
		 PreparedStatement prep = null;
		 ResultSet rs = null;
		 List<Emp> emps = null;
		 //sql
		 String sql = "select * from emp";
		 try {
			//获得连接对象
			 conn = DBUtils.getConnection();
			//获得预编译对象
			 prep = conn.prepareStatement(sql);
			 //发送预编译文件,执行sql
			 //获得结果集对象
			 rs = prep.executeQuery();
			 //遍历结果集,用结果集中的数据
			 //封装对象
			 while(rs.next()){
				  if(emps==null){
					  //循环第一次,实例化集合对象
					  emps = new ArrayList<Emp>();
				  }
				  //实例化一个员工对象
				  Emp emp = new Emp();
				  emp.setEmpno(rs.getInt("empno"));
				  emp.setEname(rs.getString("ename"));
				  emp.setSex(rs.getString("sex"));
				  emp.setAge(rs.getInt("age"));
				  emp.setSal(rs.getFloat("sal"));
				  emp.setDeptno(rs.getInt("deptno"));
				  emps.add(emp);
			 }
			 return emps;
		} catch (SQLException e) {
			e.printStackTrace();
			throw e;
		}finally{
			   //关闭资源
			DBUtils.closeAll(rs, prep, conn);
		}
	}
}
package com.hj.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBUtils {
    //jdbc的四个重要参数作为工具类的常量
	//驱动字符串
	public static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
	//连接字符串
	public static final String URL = "jdbc:sqlserver://localhost:1433;dataBaseName=db01";
	//用户名
	public static final String USER = "sa";
	//密码
	public static final String PASSWORD = "123";
	
	//在静态块中加载驱动类
	//在类加载的时候,执行的代码
	static{
		try {
			Class.forName(DRIVER);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	//获得连接对象的方法
	public static Connection getConnection() throws SQLException {
		 return DriverManager.getConnection(URL, USER, PASSWORD);
	}
	
	//关闭资源的方法
	public static void closeAll(ResultSet rs, PreparedStatement prep,Connection conn) throws SQLException{
		    try {
				if(rs!=null){
					  rs.close();
				}
				if(prep!=null){
					 prep.close();
				}
				if(conn!=null){
					 conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
				throw e;//将异常信息继续往上抛,通知调用者
			}
		    
		    
	}
	//测试
	 public static void main(String[] args) throws SQLException {
		     Connection conn = getConnection();
		     System.out.println(conn);
	}
}

ListEmp.jsp

<%@page import="com.hj.bean.Emp"%>
<%@page import="java.util.List"%>
<%@page import="com.hj.dao.EmpDao"%>
<%@ 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>
<style type="text/css">
     table{
        width:600px;
        border:3px solid #ccc;
        border-collapse: collapse;
        margin:auto;
     }
     
     table th,table td{
          border:1px solid #ccc;
          
     }
     
     h3,p{
       text-align: center;
     }
     
     
</style>
</head>
<body>
   <!-- 
      从数据库获得数据,渲染到页面
    -->
     <%
         EmpDao dao = new EmpDao();
          //查询出所有10条记录
          List<Emp> es =  dao.queryAll();   
          //将数据渲染到一个table
     %>
        <h3>员工管理系统</h3>
      <table>
           <tr>
              <th>编号</th>
              <th>姓名</th>
              <th>性别</th>
              <th>年龄</th>
              <th>薪资</th>
              <th>部门</th>
              <th>操作</th>
           </tr>
           <%
               for(int i=0;i<es.size();i++){
            	     //从集合中取出一个员工数据
            	     Emp e = es.get(i);
            	     //将e的数据填充为表格的一行
            	   %>  
             <tr>
              <td><%=e.getEmpno() %></td>
              <td><%=e.getEname() %></td>
              <td><%=e.getSex() %></td>
              <td><%=e.getAge() %></td>
              <td><%=e.getSal() %></td>
              <td><%=e.getDeptno() %></td>
              <td>
                   <a href="DoDelete.jsp?empno=<%=e.getEmpno() %>">删除</a>
                   <a href="ToUpdate.jsp?empno=<%=e.getEmpno() %>">修改</a>
              </td>
           </tr>
            	   <% 
               }
           %>
      </table>
     <p>
        <a href="ToAdd.jsp">添加员工</a>
     </p>
</body>
</html>

DoDelete.jsp

<%@page import="com.hj.dao.EmpDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
         //request.setCharacterEncoding("UTF-8");
         //获得参数,要删除的员工的empno
         Integer empno = Integer.parseInt(request.getParameter("empno"));
         //创建Dao
         EmpDao dao = new EmpDao();
         int num = dao.delete(empno);
         if(num==1){
        	   //删除成功--重定向回ListEmp.jsp
        	   response.sendRedirect("ListEmp.jsp");
        	   return;//后面的代码都不执行
         }
         out.print("<h2>系统繁忙,请稍后再试</h2>");
%>

ToAdd.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>Insert title here</title>
<style type="text/css">
    form{
       width: 210px;
       margin: auto;
   }
   
    p{
       text-align: center;
    }
    
      
</style>
</head>
<body>
      <p>添加员工</p>
      <form action="AddEmp.jsp"  method="POST">
          姓名:<input name="ename"/> <br/>
          性别:<input name="sex"/> <br/>
          年龄:<input name="age"/> <br/>
          薪资:<input name="sal"/> <br/>
          部门:<input name="deptno"/> <br/>
          <input type="submit" value="添加"/>
      </form>

</body>
</html>

AddEmp.jsp

<%@page import="com.hj.dao.EmpDao"%>
<%@page import="com.hj.bean.Emp"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
//设置解码方式
request.setCharacterEncoding("UTF-8");
//获得参数
String ename = request.getParameter("ename");
String sex = request.getParameter("sex");
Integer age = Integer.parseInt(request.getParameter("age"));
Float sal = Float.parseFloat(request.getParameter("sal"));
Integer deptno = Integer.parseInt(request.getParameter("deptno"));
    //创建一个员工对象
    Emp e = new Emp(ename,sex,age,sal,deptno);
     //创建Dao对象
    EmpDao dao = new EmpDao();
     int num = dao.save(e);
     if(num==1){
    	   //添加成功---重定向回ListEmp.jsp
    	   response.sendRedirect("ListEmp.jsp");
    	   return ;//后面的代码都不执行
     }
     out.print("<h2>系统繁忙,请稍后再试</h2>");     
%>

ToUpdate.jsp

<%@page import="com.hj.bean.Emp"%>
<%@page import="com.hj.dao.EmpDao"%>
<%@ 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>
<style type="text/css">
    form{
       width: 210px;
       margin: auto;
   }
   
    p{
       text-align: center;
    }
    
      
</style>
</head>
<body>
     <%
            //获得参数empno
            Integer empno = Integer.parseInt(request.getParameter("empno"));
           //创建Dao
           EmpDao dao = new EmpDao();
           Emp e = dao.queryForId(empno);
     %>
        <p>修改员工</p>
      <form action="UpdateEmp.jsp"  method="POST">
         <!-- 隐藏域 -->
           <input type="hidden"  name="empno"  value="<%=empno%>"/>
          姓名:<input name="ename"  value="<%=e.getEname()%>"/> <br/>
          性别:<input name="sex"  value="<%=e.getSex()%>"/> <br/>
          年龄:<input name="age"  value="<%=e.getAge()%>"/> <br/>
          薪资:<input name="sal"  value="<%=e.getSal()%>"/> <br/>
          部门:<input name="deptno"  value="<%=e.getDeptno()%>"/> <br/>
          <input type="submit" value="修改"/>
      </form>
</body>
</html>

UpdateEmp.jsp

<%@page import="com.hj.dao.EmpDao"%>
<%@page import="com.hj.bean.Emp"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    //设置解码方式
    request.setCharacterEncoding("UTF-8");
    //获取参数
String ename = request.getParameter("ename");
String sex = request.getParameter("sex");
Integer age = Integer.parseInt(request.getParameter("age"));
Float sal = Float.parseFloat(request.getParameter("sal"));  
Integer deptno = Integer.parseInt(request.getParameter("deptno"));
Integer empno = Integer.parseInt(request.getParameter("empno"));
    Emp e = new Emp(empno,ename,sex,age,sal,deptno);
    //创建Dao
     EmpDao dao = new EmpDao();
     int num = dao.modify(e);
     if(num==1){
    	   //更新成功--重定向回ListEmp.jsp
    	   response.sendRedirect("ListEmp.jsp");
    	   return;//后面的代码不执行
     }
    out.print("<h2>系统繁忙,请稍后再试</h2>");     
%>

猜你喜欢

转载自blog.csdn.net/Fern2018/article/details/81301575