zoukankan      html  css  js  c++  java
  • Oracle+jsp+Servlet的员工表的简单增删改查

    1.引入jar包   

    2.连接数据库(编写连接数据库工具类)

    JDBCUtils.java

    package com.demo.utils;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class JDBCUtils {
    	private static String jar="oracle.jdbc.OracleDriver";
    	private static String url="jdbc:oracl:thin:@localhost:1521:orcl";
    	private static String user="scott";
    	private static String pwd="tiger";
    	private static Connection conn=null;;
    	public static Connection getConnection(){
    		 
    			try {
    				Class.forName("oracle.jdbc.OracleDriver");
    				conn = DriverManager.getConnection(url, user, pwd);
    			} catch (ClassNotFoundException e) {
    				e.printStackTrace();
    			}catch (SQLException e) {
    				e.printStackTrace();
    			}
    		return conn;  	 
    	}
    	public static void closeConnection(Connection conn){
    		if(conn!=null){
    			try {
    				conn.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    }
    

     3.编写员工的实体类   Emp.java

    package com.demo.pojo;
    
    public class Emp {
    	private int empno;
    	private String ename;
    	private String job;
    	private int sal;
    	private int comm;
    	private int mgr;
    	private int deptno;
    	
    	public String getEname() {
    		return ename;
    	}
    	public void setEname(String ename) {
    		this.ename = ename;
    	}
    	public int getEmpno() {
    		return empno;
    	}
    	public void setEmpno(int empno) {
    		this.empno = empno;
    	}
    	
    	public String getJob() {
    		return job;
    	}
    	public void setJob(String job) {
    		this.job = job;
    	}
    	public int getSal() {
    		return sal;
    	}
    	public void setSal(int sal) {
    		this.sal = sal;
    	}
    	public int getComm() {
    		return comm;
    	}
    	public void setComm(int comm) {
    		this.comm = comm;
    	}
    	public int getMgr() {
    		return mgr;
    	}
    	public void setMgr(int mgr) {
    		this.mgr = mgr;
    	}
    	public int getDeptno() {
    		return deptno;
    	}
    	public void setDeptno(int deptno) {
    		this.deptno = deptno;
    	}
    }
    

     4.编写一个接口

    package com.demo.dao;
    
    import java.util.List;
    import java.util.Map;
    
    import com.demo.pojo.Emp;
    
    public interface EmpDAO {
    	//显示数据列表
    	public List<Map<String,Object>> getAll();
    	//删除
    	public boolean delEmpByEno(int empno);
    	//新增
    	public boolean addEmpByEno(Emp e);
            //根据编号查询信息
    	public Map<String, Object> findEmpByEno(int eno);
            //修改
    	public boolean updateEmp(Emp e);
    }
    

     5.写接口实现类

    package com.demo.dao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import com.demo.pojo.Emp;
    import com.demo.utils.JDBCUtils;
    
    public class EmpDAOImpl implements EmpDAO {
    
    	/**
    	 * 加载员工表中的所有信息
    	 */
    	@Override
    	public List<Map<String, Object>> getAll() {
    		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    		String sql = "select empno,ename,sal,job, nvl(comm,0) from emp";
    		try {
    			Connection conn = JDBCUtils.getConnection();
    			Statement st = conn.createStatement();
    			ResultSet rs = st.executeQuery(sql);
    			while (rs.next()) {
    				Map<String, Object> m = new HashMap<String, Object>();
    				m.put("eno", rs.getInt(1));
    				m.put("ename", rs.getString(2));
    				m.put("sal", rs.getInt(3));
    				m.put("job", rs.getString(4));
    				m.put("comm", rs.getInt(5));
    				list.add(m);
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return list;
    	}
    
    	/**
    	 * 根据员工编号,删除员工信息
    	 */
    	@Override
    	public boolean delEmpByEno(int empno) {
    		boolean b = false;// 默认对数据库操作失败
    		String sql = "delete from emp where empno=" + empno;
    		try {
    			Connection conn = JDBCUtils.getConnection();
    			Statement st = conn.createStatement();
    			int i = st.executeUpdate(sql);
    			if (i > 0) {
    				b = true;
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return b;
    	}
    
    	/**
    	 * 新增员工操作
    	 */
    	@Override
    	public boolean addEmp(Emp e) {
    		boolean b = false;// 对数据库的操作失败的
    		String sql = "insert into emp(empno,ename,job,sal,comm,mgr,deptno,hiredate) "
    				+ " values(?,?,?,?,?,?,?,sysdate) ";
    		// 获取数据库连接
    		Connection conn = JDBCUtils.getConnection();
    		try {
    			// 创建对数据库操作的预编译对象,目的:看看sql中有多少个?,然后用实际数据替换?
    			PreparedStatement ps = conn.prepareStatement(sql);
    			ps.setInt(1, e.getEmpno());
    			ps.setString(2, e.getEname());
    			ps.setString(3, e.getJob());
    			ps.setInt(4, e.getSal());
    			ps.setInt(5, e.getComm());
    			ps.setInt(6, e.getMgr());
    			ps.setInt(7, e.getDeptno());
    
    			int i = ps.executeUpdate();
    			if (i > 0) {
    				b = true;
    			}
    		} catch (SQLException e1) {
    			e1.printStackTrace();
    		}
    		JDBCUtils.closeConnection(conn);
    		return b;
    	}
    
    	/**
    	 * 根据员工编号加载员工信息
    	 */
    	@Override
    	public Map<String, Object> findEmpByEno(int eno) {
    		Map<String, Object> m = new HashMap<String,Object>();
    		String sql = "select empno,ename,job,sal,comm,mgr,deptno from emp where empno=" + eno;
    		try {
    			Connection conn = JDBCUtils.getConnection();
    			Statement st = conn.createStatement();
    			ResultSet rs = st.executeQuery(sql);
    			
    			//在获取查询结果的时候,因为明确的知道了,查询的结果,最多只有1行,所以才使用了if操作
    			if(rs.next()){
    				m.put("eno", rs.getInt(1));
    				m.put("ename", rs.getString(2));
    				m.put("job", rs.getString(3));
    				m.put("sal", rs.getInt(4));
    				m.put("comm", rs.getInt(5));
    				m.put("mgr", rs.getInt(6));
    				m.put("dno", rs.getInt(7));
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return m;
    	}
    
    	/**
    	 * 修改员工信息
    	 */
    	@Override
    	public boolean updateEmp(Emp e) {
    		boolean b = false;
    		String sql="update emp set ename=?,sal=?,job=?,comm=?,mgr=?,deptno=? where empno=?";
    		try {
    			Connection conn = JDBCUtils.getConnection();
    			PreparedStatement ps= conn.prepareStatement(sql);
    			ps.setString(1, e.getEname());
    			ps.setInt(2, e.getSal());
    			ps.setString(3, e.getJob());
    			ps.setInt(4, e.getComm());
    			ps.setInt(5, e.getMgr());
    			ps.setInt(6, e.getDeptno());
    			ps.setInt(7, e.getEmpno());
    			
    			int i = ps.executeUpdate();
    			if(i > 0){
    				b = true;
    			}
    		} catch (SQLException e1) {
    			e1.printStackTrace();
    		}
    		return b;
    	}
    }
    

     6.增删改查的servlet

    ListEmpServlet

    package com.demo.servlet;
    
    import java.io.IOException;
    import java.util.List;
    import java.util.Map;
    
    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.demo.dao.EmpDAO;
    import com.demo.dao.EmpDAOImpl;
    
    
    public class ListEmpServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doPost(request, response);
    	}
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		//获取数据库表中的所有数据
    		EmpDAO dao = new EmpDAOImpl();
    		List<Map<String,Object>> list = dao.getAll();
    		
    		//创建输出流对象,将数据通过输出流对象,然后使用for 进行操作显示
    		//将list 传递到java server page 简称jsp 的页面上
    		//将数据添加到request 对象中
    		request.setAttribute("list", list);
    		//跳转你想去的页面,服务器端跳转
    		request.getRequestDispatcher("list.jsp").forward(request, response);
    	}
    
    }
    

    DelEmpServlet

    package com.demo.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.demo.dao.EmpDAO;
    import com.demo.dao.EmpDAOImpl;
    
    /**
     * Servlet implementation class DelEmpServlet
     */
    @WebServlet("/DelEmpServlet")
    public class DelEmpServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		this.doPost(request, response);
    	}
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		//获取页面传递的eno参数信息
    		String eno = request.getParameter("eno");
    		
    		//将数据转换为你需要的int 类型
    		int empno = Integer.parseInt(eno);
    		
    		//将empno 传递到DAO层,对象数据库进程操作
    		EmpDAO  dao = new EmpDAOImpl();
    		//接收对数据库操作的返回值信息
    		boolean b  = dao.delEmpByEno(empno);
    		
    		//根据返回值信息,跳转不同的页面
    		if(b){
    			/*
    			 * 删除成功了,则回显到数据列表
    			 * 此时,为什么必须带着forward?
    			 * 因为当前处理用户问题的操作(请求),还是在服务器上呢,并给没有给用户一个结果呢,
    			 * 切在下一个操作步骤中,不世道是不是需要继续处理用户的问题(请求),
    			 * 因此,就继续向下一个操作步骤,传递request,response 了
    			 */
    			request.getRequestDispatcher("ListEmpServlet").forward(request, response);
    		}else{
    			//删除失败了,则显示首页信息
    			request.getRequestDispatcher("index.html").forward(request, response);
    		}
    	}
    
    }
    

    AddEmpServlet

    package com.demo.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.demo.dao.EmpDAO;
    import com.demo.dao.EmpDAOImpl;
    import com.demo.pojo.Emp;
    
    @WebServlet("/AddEmpServlet")
    public class AddEmpServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		doPost(request, response);
    	}
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		// 获取表单数据
    		int empno = Integer.valueOf(request.getParameter("empno"));
    		String ename = request.getParameter("ename").trim();
    		String job = request.getParameter("job").trim();
    		/*
    		 * String age = request.getParameter("age"); int a = new Integer(age);
    		 */
    		int sal = Integer.valueOf(request.getParameter("sal"));
    		int comm = new Integer(request.getParameter("comm"));
    		int mgr = new Integer(request.getParameter("mgr"));
    		int deptno = new Integer(request.getParameter("deptno"));
    
    		// 将数据进行封装,存入到数据库中去
    		Emp e = new Emp();
    		e.setComm(comm);
    		e.setDeptno(deptno);
    		e.setEmpno(empno);
    		e.setJob(job);
    		e.setMgr(mgr);
    		e.setSal(sal);
    		e.setEname(ename);
    
    		//创建dao层操作对象
    		EmpDAO  dao = new EmpDAOImpl();
    		boolean b = dao.addEmp(e);
    		//根据返回值信息,跳转不同的页面
    		if(b){
    			request.getRequestDispatcher("ListEmpServlet").forward(request, response);
    		}else{
    			//删除失败了,则显示首页信息
    			request.getRequestDispatcher("index.html").forward(request, response);
    		}
    	}
    
    }
    

    FindEmpByEnoServlet

    package com.demo.servlet;
    
    import java.io.IOException;
    import java.util.Map;
    
    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.demo.dao.EmpDAO;
    import com.demo.dao.EmpDAOImpl;
    @WebServlet("/FindEmpByEnoServlet")
    public class FindEmpByEnoServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		this.doPost(request, response);
    	}
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		//获取员工的编号信息
    		int eno = Integer.parseInt(request.getParameter("eno"));
    		
    		//将员工编号传递到dao层,然后加载当前eno的员工信息
    		EmpDAO  dao = new EmpDAOImpl();
    		//接收对数据库操作的返回值信息
    		Map<String, Object> b  = dao.findEmpByEno(eno);
    		
    		//使用一个临时存储的空间,放置页面要获取的信息
    		request.setAttribute("info", b);
    		
    		//跳转到update.jsp页面上,然后显示出当前,员工的信息
    		request.getRequestDispatcher("update.jsp").forward(request, response);
    	}
    
    }
    

    UpdateEmpServlet

    package com.demo.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.demo.dao.EmpDAO;
    import com.demo.dao.EmpDAOImpl;
    import com.demo.pojo.Emp;
    
    @WebServlet("/UpdateEmpServlet")
    public class UpdateEmpServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		this.doPost(request, response);
    	}
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		//接收表单数据
    		int empno = Integer.valueOf(request.getParameter("empno"));
    		
    		//下面处理中文乱码的方式,只能是单行,也就是只能对一个文本框的信息进行操作,不能全局操作。
    		String ename = new String(request.getParameter("ename").getBytes("iso-8859-1"),"UTF-8");
    		String job = request.getParameter("job").trim();
    		int sal = Integer.valueOf(request.getParameter("sal"));
    		int comm = new Integer(request.getParameter("comm"));
    		int mgr = new Integer(request.getParameter("mgr"));
    		int deptno = new Integer(request.getParameter("deptno"));
    		
    		//封装表单数据
    		Emp e = new Emp();
    		e.setComm(comm);
    		e.setDeptno(deptno);
    		e.setEmpno(empno);
    		e.setJob(job);
    		e.setMgr(mgr);
    		e.setSal(sal);
    		e.setEname(ename);
    		//将表单数据向下传递到DAO层,并获取返回结果
    		EmpDAO dao = new EmpDAOImpl();
    		boolean b =dao.updateEmp(e);
    		
    		//根据返回结果跳转页面
    		if(b){
    			request.getRequestDispatcher("ListEmpServlet").forward(request, response);
    		}else{
    			//删除失败了,则显示首页信息
    			request.getRequestDispatcher("index.html").forward(request, response);
    		}
    	}
    
    }
    

     前台jsp页面

    1.首页  index.jsp

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>首页</title>
    </head>
    <body>
      <a href="ListEmpServlet">数据列表</a>
      <a href="addEmp.jsp">新增</a>
    </body>
    </html>
    

     2.头文件  head.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    welcome: <font size="20" color="blue">aaa</font>   logout repassword
    </body>
    </html>
    

     3.数据列表页面   list.jsp

    <%@page import="java.util.Map"%>
    <%@page import="java.util.List"%>
    <%@ 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>
    <%@ include file="head.html" %>
    <!-- 就目前,学习到的知识点来说,只有jsp 能够帮助我们获取动态数据 -->
    <center>
    	<h1>数据列表页面</h1>
    	<h6>数据列表页面</h6>
    </center>
    <!-- 获取servlet 传递过来的信息内容 -->
    <table align="center" width="900" border="1" cellpadding="0" cellspacing="0">
    	<!--一行标签 tr  -->
    	<tr align="center" height="30">
    		<!--一列叫td  -->
    		<td width="90">eno</td>
    		<td>ename</td>
    		<td>sal</td>
    		<td>job</td>
    		<td>comm</td>
    		<td>操作</td>
    	</tr>
    <%
    	List<Map<String,Object>> list = (List<Map<String,Object>>)request.getAttribute("list");
    	for(Map<String,Object> m : list) { %>
    		<tr align="center"  height="30">
    			<td width="90"><%=m.get("eno")%></td>
    			<td><%=m.get("ename")%></td>
    			<td><%=m.get("sal")%></td>
    			<td><%=m.get("job")%></td>
    			<td><%=m.get("comm")%></td>
    			<td><a href="DelEmpServlet?eno=<%=m.get("eno")%>">删除</a>||
    				<a href="FindEmpByEnoServlet?eno=<%=m.get("eno")%>">修改</a>
    			</td>
    		</tr>
    <%
    	}
    %>
    <%-- 
    修改操作:
    1、在数据列表的基础上做信息的修改
    	需要将数据列表中的修改这个文字,加上可以点击的操作
    	<a href="">修改</a>
    	
    2、点击修改文字,然后将需要修改的信息显示到update.jsp 页面上。
    	给后台java代码一个信息,告诉java代码,你要修改的信息是哪一行
    	<a href="findEmpByEno?eno=<%=m.get("eno")%>">修改</a>
    	如此,去数据库层,查询eno 加载eno当前的一行信息
    	说的直白一些:根据员工编号,去数据库加载当前员工的信息,显示在update.jsp 页面上
    
    3、添加需要修改的信息,然后点击保存按钮
    4、如果操作成功则显示数据列表
    
     --%>
    </table>
    </body>
    </html>
    

     4.增加页面  add.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>servlet处理表单信息</title>
    </head>
    <body>
    	<form action="AddEmpServlet" method="post">
    		员工编号:<input type="text" name="empno"/><br/>
    		员工姓名:<input type="text" name="ename"/><br/>
    		工资:<input type="text" name="sal"/><br/>
    		职位:<input type="text" name="job"/><br/>
    		领导编号:<input type="text" name="mgr"/><br/>
    		提成:<input type="text" name="comm"/><br/>
    		部门编号:<input type="text" name="deptno"/><br/>
    		<input type="submit" value="提交"/>
    	</form>
    </body>
    </html>
    

     5.修改页面  update.jsp

    <%@page import="java.util.Map"%>
    <%@ 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>
    <!-- html的注释 -->
    <%-- jsp 的注释写法 --%>
    <%@ include file="head.html" %>
    <br/><br/><br/><br/>
    <%
    	Map<String,Object> m =(Map<String,Object>)request.getAttribute("info");
    %>
    <!-- 
    	input 标签中的属性:(页面上的显示效果看似相同,实则操作结果不一样)
    	只读	: readonly="readonly"  能看不能改,提交表单数据后,当前所在的文本框信息,随表单提交到url指定位置
    	禁用: disabled="disabled"  能看不能改,提交表单数据后,当前所在的文本框信息,"不能"随表单提交到url指定位置
     -->
    	<form action="UpdateEmpServlet" method="post">
    		员工编号:<input type="text" readonly="readonly" name="empno" value="<%=m.get("eno") %>"/><br/>
    		员工姓名:<input type="text" name="ename" value="<%=m.get("ename") %>"/><br/>
    		工资:<input type="text" name="sal" value="<%=m.get("sal") %>"/><br/>
    		职位:<input type="text" name="job" value="<%=m.get("job") %>"/><br/>
    		领导编号:<input type="text" name="mgr" value="<%=m.get("mgr") %>"/><br/>
    		提成:<input type="text" name="comm" value="<%=m.get("comm") %>"/><br/>
    		部门编号:<input type="text" name="deptno" value="<%=m.get("dno") %>"/><br/>
    		<input type="submit" value="提交"/>
    		<input type="reset" value="清空">
    	</form>
    </body>
    </html>
    
  • 相关阅读:
    JavaScript 中的面向对象编程
    LINUX --- echo修改GPIO状态
    Ubuntu安装海思SDK(转)
    一个C++版本的Sqlite3封装--SmartDb
    分享一个内网穿透工具frp
    opencv图片缩放与镜像
    和菜鸟一起学linux之DBUS基础学习记录(转)
    谈谈嵌入式系统中多进程设计与进程通信
    高效c/c++日志工具zlog使用介绍
    udevd启动失败问题
  • 原文地址:https://www.cnblogs.com/cxqbk/p/11207755.html
Copyright © 2011-2022 走看看