servlet练手小项目

一个servlet练手的小项目,对相关的知识进行巩固

项目结构

数据库:

1.使用jdbc连接数据库配置

首先配置jdbc.properties的基本

创建util类,使用jdbc连接池连接

package util;
import org.apache.commons.dbcp.BasicDataSource;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;

//连接池
public class DBUtil3 {
    private static BasicDataSource ds;
    static {
        //先获得数据库连接信息
        InputStream is=DBUtil3.class.getClassLoader().getResourceAsStream("jdbc.properties");
        Properties p=new Properties();

        try {
            p.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        }

        String driver=p.getProperty("driver");
        String url=p.getProperty("url");
        String user=p.getProperty("user");
        String pwd= p.getProperty("password");

        ds=new BasicDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(user);
        ds.setPassword(pwd);

        ds.setInitialSize(3);
        ds.setMaxActive(5);
        ds.setMaxIdle(3);

    }
    //获得连接
    public static Connection getConn() throws Exception{
        Connection conn= ds.getConnection();
        System.out.println(conn);
        return conn;
    }
}

2.创建实体类  Emp

      属性与数据库的内容对应

package entity;

public class Emp {
    private Integer empno;
    private String ename;
    private Double sal;

    public Emp(Integer empno, String ename, Double sal) {
        this.empno = empno;
        this.ename = ename;
        this.sal = sal;
    }

    public Emp() {
    }

    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 Double getSal() {
        return sal;
    }

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

    @Override
    public String toString() {
        return "emp{" +
                "empno=" + empno +
                ", ename='" + ename + '\'' +
                ", sal=" + sal +
                '}';
    }
}

3.创建Dao层

DAO层是数据库操作相关的类,使用util工具类连接并设置相关的sql语句
package dao;

import entity.Emp;
import util.DBUtil3;

import javax.xml.transform.Result;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/*
* DAO层是数据库操作相关的类
* */
public class EmpDao {
    //对数据库中emp表进行数据添加操作
    public void insert(Emp emp){
        //数据库连接
        try {
            Connection conn= DBUtil3.getConn();
            String sql="insert into emp(empno,ename,sal) values(?,?,?);";
            PreparedStatement ps=conn.prepareStatement(sql);
            ps.setInt(1,emp.getEmpno());
            ps.setString(2, emp.getEname());
            ps.setDouble(3,emp.getSal());
            ps.executeUpdate();
            System.out.println("新增数据成功");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    //查询所有员工
    public List<Emp> getAll(){
        List<Emp> list=new ArrayList<Emp>();
        try {
            Connection conn= DBUtil3.getConn();
            String sql="select  empno,ename,sal from emp";
            PreparedStatement ps=conn.prepareStatement(sql);
            ResultSet rs= ps.executeQuery();
            while (rs.next()){
                //实例化Emp对象
                Emp e=new Emp();
                //为这个对象的各个属性赋值
                e.setEmpno(rs.getInt(1));
                e.setEname(rs.getString(2));
                e.setSal(rs.getDouble(3));
                //对查询到结果集进行遍历
                //的empty对象,并将这次对象添加到list集合中
                list.add(e);
            }
            System.out.println("新增数据成功");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return list;
    }
    //删除员工
    public void deleteEmpById(Integer empno){
        //数据库连接
        try {
            Connection conn= DBUtil3.getConn();
            String sql="delete from emp where empno=?;";
            PreparedStatement ps=conn.prepareStatement(sql);
            ps.setInt(1,empno);
            ps.executeUpdate();
            System.out.println("删除数据成功");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    //定义只查询需要修改数据的用户
    //根据用户的id查询
    public Emp getEmpById(Integer empno){
        Emp emp=null;
        try {
            Connection conn= DBUtil3.getConn();
            String sql="select empno,ename,sal from emp where empno=?";
            PreparedStatement ps=conn.prepareStatement(sql);
            ps.setInt(1,empno);
            ResultSet rs=ps.executeQuery();
            while (rs.next()){
                Integer en= rs.getInt(1);
                String ename=rs.getString(2);
                Double sal= rs.getDouble(3);
                emp=new Emp(en,ename,sal);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return emp;
    }
    //修改员工信息的方法
    public void update(Emp emp){
        try {
            Connection conn= DBUtil3.getConn();
            String sql="update emp set ename=?,sal=? where empno=?";
            PreparedStatement ps=conn.prepareStatement(sql);
            ps.setString(1,emp.getEname());
            ps.setDouble(2,emp.getSal());
            ps.setInt(3,emp.getEmpno());
            ps.executeUpdate();
            System.out.println("修改成功");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

4.创建servlet层

    创建,增,删,改查的servlet,继承HttpServlet并且重写其中的方法

      1.addservlet

package servlet;

import dao.EmpDao;
import entity.Emp;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class AddServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获得表单中的所有信息
        //设置请求中的中文字符集
        req.setCharacterEncoding("utf-8");
        Integer empno=Integer.parseInt(req.getParameter("empno"));
        String ename=req.getParameter("ename");
        Double sal=Double.parseDouble(req.getParameter("sal"));
        //实例化empty对象
        Emp emp=new Emp(empno,ename,sal);
        //实例化emptyDao对象
        EmpDao empDao=new EmpDao();
        empDao.insert(emp);
        //通过页面重定向,发送find请求到findAllServlet
        System.out.println(req.getContextPath());
        resp.sendRedirect(req.getContextPath()+"/find");
    }
}

2.DeleteServlet

package servlet;

import dao.EmpDao;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class DeleteServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //得到编号
        String enoString= req.getParameter("empno");
        Integer empno=Integer.parseInt(enoString);
        //开始删除员工
        EmpDao d=new EmpDao();
        d.deleteEmpById(empno);
        //重定向,查询删除员工之后的所有员工信息
        resp.sendRedirect(req.getContextPath()+"/find");
    }
}

3.FindAllServlet

package servlet;

import dao.EmpDao;
import entity.Emp;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

public class FindAllServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        EmpDao d=new EmpDao();
        List<Emp> list=d.getAll();
        //设置响应中文字符集
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out=resp.getWriter();
        out.println("<table border='1' width='600'>");
          out.print("<tr><th>编号</th>  <th>姓名</th> <th>工资</th><th>操作</th></tr>");
          for (Emp e:list){
              out.print("<tr>" +
                      "<th>"+e.getEmpno()+"</th>" +
                      "<th>"+e.getEname()+"</th>" +
                      "<th>"+e.getSal()+"</th>" +
                      "<th><a href='delete?empno="+e.getEmpno()+"'>删除内容</a>/" +
                      "<a href='update?empno="+e.getEmpno()+"'>修改</a></th>" +
                      "</tr>");
          }
        out.println("</table>");
    }
}

4.updateServlet

     updateServlet

package servlet;

import dao.EmpDao;
import entity.Emp;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class updateServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Integer empno=
                Integer.parseInt(req.getParameter("empno")) ;

        EmpDao d=new EmpDao();
        Emp e= d.getEmpById(empno);
        //获取到一个员工信息,现在输出一个页面,包含一个表单
        //并且包含当前员工的所有属性值
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out= resp.getWriter();
        out.println("<form action='updateActive' method='post'>");
        out.println("<input type='text' readonly='readonly' name='empno' value='"+e.getEmpno()+"'><br>");
        out.println("<input type='text' name='ename' value='"+e.getEname()+"'><br>");
        out.println("<input type='text' name='sal' value='"+e.getSal()+"'><br>");
        out.println("<input type='submit' value='修改提交'><br>");
        out.println("</form>");

    }
}

  updateActive

package servlet;

import dao.EmpDao;
import entity.Emp;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class updateActive extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        Integer empno=
                Integer.parseInt(req.getParameter("empno"));
        String ename=req.getParameter("ename");
        Double sal=Double.parseDouble(req.getParameter("sal"));
        Emp emp=new Emp(empno,ename,sal);
        EmpDao d=new EmpDao();
        d.update(emp);
        resp.sendRedirect(req.getContextPath()+"/find");
    }
}

5.在web.xml中将servlet层的配置进行编写

<?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_2_5.xsd" version="2.5">

  <display-name>Archetype Created Web Application</display-name>
  <!--AddServlet的配置-->
  <servlet>
    <servlet-name>AddServlet</servlet-name>
    <servlet-class>servlet.AddServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>AddServlet</servlet-name>
    <url-pattern>/add</url-pattern>
  </servlet-mapping>
  <!--FindAllServlet的配置-->
  <servlet>
    <servlet-name>FindAllServlet</servlet-name>
    <servlet-class>servlet.FindAllServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>FindAllServlet</servlet-name>
    <url-pattern>/find</url-pattern>
  </servlet-mapping>


  <servlet>
    <servlet-name>DeleteServlet</servlet-name>
    <servlet-class>servlet.DeleteServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>DeleteServlet</servlet-name>
    <url-pattern>/delete</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>updateServlet</servlet-name>
    <servlet-class>servlet.updateServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>updateServlet</servlet-name>
    <url-pattern>/update</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>updateActive</servlet-name>
    <servlet-class>servlet.updateActive</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>updateActive</servlet-name>
    <url-pattern>/updateActive</url-pattern>
  </servlet-mapping>
</web-app>

6.最后写一个add.html文件就好了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加用户</title>
</head>
<body>
<center>
  <h3>新增员工信息</h3>
  <form action="add" method="post">
    编号:<input type="text" name="empno" ><br>
    姓名:<input type="text" name="ename"><br>
    工资:<input type="text" name="sal"><br>
    <input type="submit" value="添加">
  </form>
    <a href="find">查询员工</a>
    <a href="update">修改</a>
</center>
</body>
</html>

结果:

使用 Tomcat,启动!

一个简单的servlet小项目就完成了,其中运用了相关知识,并对其进行了练习和巩固

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值