关于Servlet一点,做个简单的emp页面(1)

servlet是个web服务器的标准组件规范,

一般都和tomcat一起使用,tomact应用(java)容器,用来处理动态页面


现在写一个小程序,关于员工列表。会用到jdbc。用的是oracal数据库

具体的流程是1,进入html页面,点提交按钮

2,会直接跳转至list页面进行数据插入,将数据插入至oracal数据库

3,跳转页面至listAll,此页面会显示员工的所有信息,包括delete,modifi,和add

4,按个人所需进行曾,查,改,删操作

这个程序使用myecplise

首先写个html文件

<!DOCTYPE html>
<html>
  <head>
    <title>MyHtml.html</title>	
    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <meta name="description" content="this is my page">
    <meta name="content-type" content="text/html; charset=UTF-8">    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
  </head>  
  <body >
   	<form action="list" method="post">
   		<div >  		
   		姓名<input type="text" name="name"><br>
   		年龄<input type="text" name="age"><br>
   		工资<input type="text" name="sal"><br>
   		<input type="submit" value="提交">
   	</div>
   	</form>  	
  </body>
</html>
在这个html中。只有表单,有submit这个提交type,action是用来连接,值就是xml中servlet的url-patten,看下面的xml文件


在这里还需定义一个xml文件。用来作为文件之间的关联。查找的联系是这样的

先在<servlet-mapping>中查找url-mapping,就会有对应的,servler-name,

根据servlet-name,在<servlet>中查找同样的servlet-name,就会获取servlet-class

servlet-class中的内容是这样定义的:  包名.class文件名,

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  
  <servlet> 
    <servlet-name>addemp</servlet-name>
    <servlet-class>web03.AddEmp</servlet-class>
  </servlet> 
  <servlet-mapping>
    <servlet-name>addemp</servlet-name>
    <url-pattern>/list</url-pattern>
  </servlet-mapping>
  
   <servlet> 
    <servlet-name>listall</servlet-name>
    <servlet-class>web03.ListAll</servlet-class>
  </servlet> 
  <servlet-mapping>
    <servlet-name>listall</servlet-name>
    <url-pattern>/alllist</url-pattern>
  </servlet-mapping>
  
  <servlet> 
    <servlet-name>delall</servlet-name>
    <servlet-class>web03.DelEmp</servlet-class>
  </servlet> 
  <servlet-mapping>
    <servlet-name>delall</servlet-name>
    <url-pattern>/alldel</url-pattern>
  </servlet-mapping>
  
   <servlet> 
    <servlet-name>loademp</servlet-name>
    <servlet-class>web03.LoadEmp</servlet-class>
  </servlet> 
  <servlet-mapping>
    <servlet-name>loademp</servlet-name>
    <url-pattern>/load</url-pattern>
  </servlet-mapping>
  
  <servlet> 
    <servlet-name>modifyemp</servlet-name>
    <servlet-class>web03.ModifyEmp</servlet-class>
  </servlet> 
  <servlet-mapping>
    <servlet-name>modifyemp</servlet-name>
    <url-pattern>/modify</url-pattern>
  </servlet-mapping>
  
</web-app>
在这个xml文件中。定义了几个操作员工表的操作

1,list 用来插入单条数据

2,load和modify一起使用,用load获取员工的单条记录,然后进行modify操作

3,alldel用来删除员工的单条记录

4,alllist用来获取员工表数据。

接下来,根据前面的html页面会跳转至此下页面。用来插入单条emp数据

public class AllEmp extends HttpServlet {
	public void service(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException {
		res.setContentType("text/html;charset=utf-8");
		PrintWriter out = res.getWriter();
		String name=req.getParameter("name");
		String age=req.getParameter("age");
		String sal=req.getParameter("sal");
		out.println(name);	
 		Connection conn=null;
		PreparedStatement ps=null;
		try{
			Class.forName("oracle.jdbc.driver.OracleDriver");
			conn=DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.202:1521:tarena", "jsd1505", "jsd1505");	
			ps = conn.prepareStatement("insert into emp_dongruisu(id,name,age,sal) values (id.nextval,?,?,?)" );		
			ps.setString(1,name);
			ps.setInt(2,Integer.parseInt(age));
			ps.setInt(3,Integer.parseInt(sal));
			ps.executeUpdate();		
			res.sendRedirect("alllist");
		}catch(Exception e){
			e.printStackTrace();
			out.print("错了");		
		}finally{
			if(conn!=null){
				try {
					conn.close();
				} catch (SQLException e) {				
					e.printStackTrace();
				}
			}			
		}		
	}
}
此 上面页面的res.sendRedirect(url-pattern),,重定向,会清空之前获取的数据,跳转至url-pattern制定的页面。

接着就是跳转至制定页面,在这里是员工列表页面

public class ListAll extends HttpServlet {
	public void service(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
		res.setContentType("text/html;charset=utf-8");	
		PrintWriter out=res.getWriter();
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		try{
			Class.forName("oracle.jdbc.driver.OracleDriver");	
			conn=DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.202:1521:tarena", "jsd1505", "jsd1505");
			ps=conn.prepareStatement("select * from emp_dongruisu");
			rs=ps.executeQuery();
			out.println("<table width='60%' border='1' cellpadding='0' cellspacing='0'>");
			out.println("<tr><td>id</td><td>姓名</td><td>年龄</td><td>工资</td><td>操作</td></tr>");		
			while(rs.next()){
				int id=rs.getInt("id");
				String name=rs.getString("name");
				int age=rs.getInt("age");
				int sal=rs.getInt("sal");
				out.println("<tr><td>"+id+"</td><td>"+name+"</td><td>"+age+"</td><td>+"+sal+"</td>"
						+"<td><a href='alldel?id="+id+"'>删除</a>$nbsp;<a href='load?id="+id+"'>修改</a></td></tr>"
						);
			}
			out.println("</table>");
			out.print("<a href='MyHtml.html'>添加员工</a>");
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			if(conn!=null){
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}
}
在这个页面就可进行增,查,改,删这4个操作,根据所选不同,进行不同的操作

接下来是,修改和删除

修改:先要跳转到需要修改单条员工数据的页面,在进行操作修改

public class LoadEmp  extends HttpServlet{
    public void service(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException{
        res.setContentType("text/html;charset=utf-8");
        PrintWriter out=res.getWriter();
        int id=Integer.parseInt(req.getParameter("id"));
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        try{
            Class.forName("oracle.jdbc.driver.OracleDriver");      
            conn=DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.202:1521:tarena", "jsd1505", "jsd1505");              
            ps= conn.prepareStatement(    "select * from emp_dongruisu where id=?" );        
            ps.setInt(1, id);            
            rs=ps.executeQuery();    
            if(rs.next()){            
                String name=rs.getString("name");
                int age=rs.getInt("age");
                int sal=rs.getInt("sal");                
                out.println("<form action='modify' method='post'>");
                out.println("id:"+id+"<br>");
                out.println("姓名:<input name='name' value='"+name+"'><br>");
                out.println("年龄:<input name='age' value='"+age+"'><br>");
                out.println("工资:<input name='sal' value="+sal+"><br>");
                out.println("<input type='hidden'  name='id'  value='" + id + "'/>");
                out.println("<input type='submit' value='提交'>");
                out.println("</form>");  
            }   
        }catch(Exception e){
            
        }finally{
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
}
public class ModifyEmp extends HttpServlet {
    public void service(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException{
        res.setContentType("text/html;charset=utf-8");
        PrintWriter out=res.getWriter();    
        Connection conn=null;
        PreparedStatement ps=null;
        try{
            Class.forName("oracle.jdbc.driver.OracleDriver");      
            conn=DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.202:1521:tarena", "jsd1505", "jsd1505");   
            ps=conn.prepareStatement("update emp_dongruisu set name=?,age=?,sal=? where id=?");
            ps.setString(1, req.getParameter("name"));
            ps.setInt(2,Integer.parseInt(req.getParameter("age")));
            ps.setInt(3,Integer.parseInt(req.getParameter("sal")));
            ps.setInt(4, Integer.parseInt(req.getParameter("id")));
            ps.executeUpdate();          
            res.sendRedirect("alllist");         
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

删除

public class DelEmp extends HttpServlet {
	public void service(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException{
		res.setContentType("text/html;charset=utf-8");
		PrintWriter out=res.getWriter();
		int id=Integer.parseInt(req.getParameter("id"));
		Connection conn=null;
		PreparedStatement ps=null;
		try{
			Class.forName("oracle.jdbc.driver.OracleDriver");	
			conn=DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.202:1521:tarena", "jsd1505", "jsd1505");	
			ps = conn.prepareStatement("delete  from emp_dongruisu where id=?" );
			ps.setInt(1, id);
			ps.executeUpdate();
			res.sendRedirect("alllist");		
		}catch(Exception e){
			e.printStackTrace();
			out.print("wrong");
		}finally{
			if(conn!=null){
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮您实现一个Servlet来实现Emp表的增删改查操作并连接到Oracle数据库。 首先,您需要在您的项目中添加Oracle数据库的JDBC驱动程序,并将其添加到Web应用程序的类路径中。您可以在以下链接中下载Oracle的JDBC驱动程序:https://www.oracle.com/database/technologies/jdbcdriver-ucp-downloads.html 接下来,您需要创建一个Emp类,该类包含Emp表中的所有字段: ``` public class Emp { private int empno; private String ename; private String job; private int mgr; private Date hiredate; private double sal; private double comm; private int deptno; // getters and setters } ``` 然后,您需要创建一个EmpDAO类,该类包含所有与Emp表相关的数据库操作方法: ``` public class EmpDAO { private Connection conn; public EmpDAO(Connection conn) { this.conn = conn; } public List<Emp> getAllEmps() throws SQLException { List<Emp> emps = new ArrayList<>(); String sql = "SELECT * FROM emp"; try (PreparedStatement stmt = conn.prepareStatement(sql)) { try (ResultSet rs = stmt.executeQuery()) { while (rs.next()) { Emp emp = new Emp(); emp.setEmpno(rs.getInt("empno")); emp.setEname(rs.getString("ename")); emp.setJob(rs.getString("job")); emp.setMgr(rs.getInt("mgr")); emp.setHiredate(rs.getDate("hiredate")); emp.setSal(rs.getDouble("sal")); emp.setComm(rs.getDouble("comm")); emp.setDeptno(rs.getInt("deptno")); emps.add(emp); } } } return emps; } public Emp getEmpById(int empno) throws SQLException { String sql = "SELECT * FROM emp WHERE empno = ?"; try (PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setInt(1, empno); try (ResultSet rs = stmt.executeQuery()) { if (rs.next()) { Emp emp = new Emp(); emp.setEmpno(rs.getInt("empno")); emp.setEname(rs.getString("ename")); emp.setJob(rs.getString("job")); emp.setMgr(rs.getInt("mgr")); emp.setHiredate(rs.getDate("hiredate")); emp.setSal(rs.getDouble("sal")); emp.setComm(rs.getDouble("comm")); emp.setDeptno(rs.getInt("deptno")); return emp; } else { return null; } } } } public void addEmp(Emp emp) throws SQLException { String sql = "INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"; try (PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setInt(1, emp.getEmpno()); stmt.setString(2, emp.getEname()); stmt.setString(3, emp.getJob()); stmt.setInt(4, emp.getMgr()); stmt.setDate(5, emp.getHiredate()); stmt.setDouble(6, emp.getSal()); stmt.setDouble(7, emp.getComm()); stmt.setInt(8, emp.getDeptno()); stmt.executeUpdate(); } } public void updateEmp(Emp emp) throws SQLException { String sql = "UPDATE emp SET ename = ?, job = ?, mgr = ?, hiredate = ?, sal = ?, comm = ?, deptno = ? WHERE empno = ?"; try (PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setString(1, emp.getEname()); stmt.setString(2, emp.getJob()); stmt.setInt(3, emp.getMgr()); stmt.setDate(4, emp.getHiredate()); stmt.setDouble(5, emp.getSal()); stmt.setDouble(6, emp.getComm()); stmt.setInt(7, emp.getDeptno()); stmt.setInt(8, emp.getEmpno()); stmt.executeUpdate(); } } public void deleteEmp(int empno) throws SQLException { String sql = "DELETE FROM emp WHERE empno = ?"; try (PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setInt(1, empno); stmt.executeUpdate(); } } } ``` 最后,您需要创建一个EmpServlet类,该类处理所有与客户端的HTTP请求,并调用EmpDAO类中的方法来执行数据库操作: ``` public class EmpServlet extends HttpServlet { private EmpDAO dao; @Override public void init() throws ServletException { try { Class.forName("oracle.jdbc.driver.OracleDriver"); String url = "jdbc:oracle:thin:@//localhost:1521/orcl"; String username = "your_username"; String password = "your_password"; Connection conn = DriverManager.getConnection(url, username, password); dao = new EmpDAO(conn); } catch (ClassNotFoundException | SQLException e) { throw new ServletException(e); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getParameter("action"); if (action == null) { List<Emp> emps = dao.getAllEmps(); request.setAttribute("emps", emps); request.getRequestDispatcher("/WEB-INF/views/empList.jsp").forward(request, response); } else if (action.equals("add")) { request.getRequestDispatcher("/WEB-INF/views/addEmp.jsp").forward(request, response); } else if (action.equals("edit")) { int empno = Integer.parseInt(request.getParameter("empno")); Emp emp = dao.getEmpById(empno); request.setAttribute("emp", emp); request.getRequestDispatcher("/WEB-INF/views/editEmp.jsp").forward(request, response); } else if (action.equals("delete")) { int empno = Integer.parseInt(request.getParameter("empno")); dao.deleteEmp(empno); response.sendRedirect(request.getContextPath() + "/emp"); } } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getParameter("action"); if (action.equals("add")) { Emp emp = new Emp(); emp.setEmpno(Integer.parseInt(request.getParameter("empno"))); emp.setEname(request.getParameter("ename")); emp.setJob(request.getParameter("job")); emp.setMgr(Integer.parseInt(request.getParameter("mgr"))); emp.setHiredate(Date.valueOf(request.getParameter("hiredate"))); emp.setSal(Double.parseDouble(request.getParameter("sal"))); emp.setComm(Double.parseDouble(request.getParameter("comm"))); emp.setDeptno(Integer.parseInt(request.getParameter("deptno"))); dao.addEmp(emp); response.sendRedirect(request.getContextPath() + "/emp"); } else if (action.equals("edit")) { Emp emp = new Emp(); emp.setEmpno(Integer.parseInt(request.getParameter("empno"))); emp.setEname(request.getParameter("ename")); emp.setJob(request.getParameter("job")); emp.setMgr(Integer.parseInt(request.getParameter("mgr"))); emp.setHiredate(Date.valueOf(request.getParameter("hiredate"))); emp.setSal(Double.parseDouble(request.getParameter("sal"))); emp.setComm(Double.parseDouble(request.getParameter("comm"))); emp.setDeptno(Integer.parseInt(request.getParameter("deptno"))); dao.updateEmp(emp); response.sendRedirect(request.getContextPath() + "/emp"); } } } ``` 在这个例子中,EmpServlet类处理HTTP GET和POST请求。当收到HTTP GET请求时,它会根据参数“action”的值来调用不同的方法。如果“action”是null,则它将获取Emp表中的所有记录并将它们发送到JSP视图进行呈现。如果“action”是“add”,则它将发送一个包含Emp表中所有字段的表单,以便用户添加新记录。如果“action”是“edit”,则它将发送一个包含Emp表中所有字段的表单,以便用户编辑现有记录。如果“action”是“delete”,则它将从Emp表中删除指定的记录。当收到HTTP POST请求时,它将根据参数“action”的值来调用不同的方法。如果“action”是“add”,则它将从表单中获取所有字段的值并将它们插入到Emp表中。如果“action”是“edit”,则它将从表单中获取所有字段的值并将它们更新到Emp表中。 最后,您需要编写JSP视图来呈现Emp表中的数据和表单。您可以创建一个名为empList.jsp的JSP页面来呈现Emp表中的所有记录,一个名为addEmp.jsp的JSP页面来添加新记录,以及一个名为editEmp.jsp的JSP页面来编辑现有记录。这些JSP页面应该使用JSTL和EL表达式来呈现数据和动态生成HTML。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值