本项目使用 jstl 实现, 执行数据库的单表 Emp的查询全部

要求:  用 封装 继承 多态的方式 ,实现该功能

分层开发:
entity   实体层
service  业务层接口及实现类
util  工具类

本项目采用 maven 方式创建, 在pom.xml 中需要引入

增加依赖

<dependencies>
        <!--  jsp servlet   -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <!-- jsp -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>

    </dependencies>

在地址栏 输入 http://localhost:9999/list 返回全部数据

实体层

package entity;

import java.util.Date;

public class Emp {

    private int eno;
    private String name;
    private String phone;
    private Date bornDate;
    private int deptId;





    public int getDeptId() {
        return deptId;
    }

    public void setDeptId(int deptId) {
        this.deptId = deptId;
    }

    public Emp() {
    }

    public Emp(int eno, String name, String phone, Date bornDate,int deptId) {
        this.eno = eno;
        this.name = name;
        this.phone = phone;
        this.bornDate = bornDate;
        this.deptId = deptId;
    }

    @Override
    public String toString() {
        return "Emp{" +
                "eno=" + eno +
                ", name='" + name + '\'' +
                ", phone='" + phone + '\'' +
                ", bornDate=" + bornDate +
                '}';
    }

    public int getEno() {
        return eno;
    }

    public void setEno(int eno) {
        this.eno = eno;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public Date getBornDate() {
        return bornDate;
    }

    public void setBornDate(Date bornDate) {
        this.bornDate = bornDate;
    }
}

工具类

package util;

import java.sql.*;

/**
 * 数据库连接的工具类
 */
public class DBUtils {

    // 数据库连接的4个属性
    public static final String USERNAME= "用户名"; //用户名
    public static final String PASSWORD = "密码";// 密码
    public static final String URL="jdbc:mysql://localhost:3306/数据库";// 数据库的连接地址
    public static final String DRIVER = "com.mysql.cj.jdbc.Driver";  //   注意 8-5.5 写法不同

    /**
     * 获得数据库的连接对象Connection
     * @return  Connection
     */
    public Connection getConn(){
        Connection connection = null;

        try{
            if(connection==null || connection.isClosed()){
                Class.forName(DRIVER); // 加载驱动
                connection = DriverManager.getConnection(URL,USERNAME,PASSWORD);
            }
        }catch (Exception e){
            System.out.println("-----数据库连接失败----"+e.getMessage());
        }
        return connection;
    }

    /**
     * 关闭所有的 连接对象
     * @param rs
     * @param st
     * @param conn
     */
    public void closeAll(ResultSet rs, Statement st,Connection conn){
        try{
            // 关闭连接
            if(rs !=null){
                rs.close();
            }
            if(st!=null){
                st.close();
            }
            if(conn !=null){
                conn.close(); //关闭连接
            }
        }catch (Exception e){
            System.out.println("--------关闭失败----"+e.getMessage());
        }


    }


    // insert delete update  均返回 受影响的行数

    /**
     * 增加, 删除, 修改 均需要调用本方法,
     * @param sql   执行 sql
     * @param params  sql 需要拼接的参数
     * @return    受影响的行数,  如果 行数>=1 表示 sql执行成功, 否则 就是执行 失败
     */
    public int execute(String sql,Object[] params){
        //获得数据库的连接
        Connection conn = this.getConn();
        PreparedStatement st = null;
        ResultSet rs = null;
        try{
            st =  conn.prepareStatement(sql);
            //组装sql
            for(int i =0;i< params.length;i++){
                  st.setObject(i+1,params[i]);
            }
            //返回受影响的行数
            return st.executeUpdate();

        }catch (Exception e){

            System.out.println("-----执行失败-----"+e.getMessage());
        }finally {
            this.closeAll(rs,st,conn);
        }

        return 0;
    }



}

业务层  接口及实现类

package service;

import entity.Emp;

import java.util.List;

public interface IEmpService {

    /**
     * 查询全部
     * @return
     */
    List<Emp> findAll();


}
package service.impl;

import entity.Emp;
import service.IEmpService;
import util.DBUtils;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class EmpServiceImpl implements IEmpService {

    @Override
    public List<Emp> findAll() {
        List<Emp> list = new ArrayList<>();
        String sql = " select * from emp "; //sql
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        DBUtils db = new DBUtils();
        try{
            conn = db.getConn(); //获得连接
            st = conn.createStatement();
            rs = st.executeQuery(sql);
            while(rs.next()){
                int eno = rs.getInt("eno");
                String name = rs.getString("ename");
                String phone = rs.getString("phone");
                Date date = rs.getDate("borndate");
                int deptId = rs.getInt("deptid");
                list.add(new Emp(eno,name,phone,date,deptId));
            }
            return list;
        }catch (Exception e){
            System.out.println("异常信息为"+ e.getMessage());
        }finally {
            db.closeAll(rs,st,conn);
        }
        return null;
    }
}

控制层-servlet

package control;

import entity.Emp;
import service.IEmpService;
import service.impl.EmpServiceImpl;

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.util.List;

public class QueryAllServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        // 执行查询全部员工信息
        IEmpService service = new EmpServiceImpl();
        List<Emp> list = service.findAll();

        req.setAttribute("empList",list); // 设置 属性,
        //跳转页面
        req.getRequestDispatcher("list.jsp").forward(req,resp);

    }
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">



    <servlet>
        <servlet-name>QueryAllServlet</servlet-name>
        <servlet-class>control.QueryAllServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>QueryAllServlet</servlet-name>
        <url-pattern>/list</url-pattern>
    </servlet-mapping>

</web-app>

list.jsp 


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>员工列表页面</title>
</head>
<body>

   <h1>员工信息列表</h1>

   <c:forEach items="${empList}" var="emp">
       <div>
           ${emp.eno} ----${emp.name}----${emp.phone}--${emp.deptId}----${emp.bornDate}
       </div>
   </c:forEach>

</body>
</html>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

射手座的程序媛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值