简单的食堂消费系统(sqlserver+servlet+jsp+dao)----新手练习


上班后,来了这样一个任务:需要将公司数据库中食堂的消费信息,在网页上按部门呈现来,不在需要到数据库中通过写SQL语句进行查询。(上学时不好好学习,几乎算是一片白纸,许多是通过不断试BUG、百度做出来的。如果有现在还在学习同学,请务必好好学习,代码虽然枯燥,但是也是最最真实的存在,对就是对,错就是错。)
好了,废话不多说了,直接开始。

在此感谢落尘曦大神的参考资料。这是链接https://blog.csdn.net/qq_23994787/article/details/73612870

本案例使用Servlet+jsp制作,编写工具是IDEA+sqlserver数据库。下面是详细的过程与一部分知识点。

使用到的知识点:
1、JDBC
2、Servlet
3、过滤器
4、EL与JSTL表达式

一、整体思路

我在最开始写这个系统时,可以说是完全没有思路的。一开始就是一直在网上找资料,准备下载别人已经写好的系统,学习一下,然后改改数据库与页面代码,就可以了。当我最后写完后,才发现一个好的思路对于整个系统的编写多么重要。(想要什么样的结果—>得到这个结果需要获取到什么样的数据—>得到这个数据,我们需要提前准备好什么样的数据。大致就是这样,一层一层去逆推,最后获得想要的结果。)
本系统的思路如下:首先要有数据库来存储数据,再要写实体类来实例数据,再要写dao层来对数据进行增删改查。然后就是页面部分,要将通过dao层得到的数据传入页面,就需要用servlet从页面获取数据库查询条件,传递给dao,然后将dao的结果集传输给页面。

1、编写数据库部分代码

这个部分较为简单,不展开

2、编写实体类部分代码

一般做系统,数据库部分是自己设计的,所以将你所用到的数据库表在实体类中get、set出来,备用即可。
我在做系统时,数据库已经存在,所以这里是我遇到的第一个难题。我一共用到了4个表,而且只是取得每个表中的一部分数据作为最后的结果集,此时我将所有用到的表格中的每一个字段get、set出来,然后将最后的结果集单独做了一个实体类。

3、编写dao层部分代码

这里采用了分层结构,有些同学会问,我就是分不清这些层次有什么用,我可不可不用?当然可以,但是,你的代码不用这种分层结构,会让人看着很难受,而且使用dao层是为了规范开发(吐槽一下,之前看过有些人写的系统代码,乱七八糟,一份好的代码对于学习很重要,这里请同学们学习一下阿里出的《阿里巴巴java开发手册》,免费的文档,希望大家有所帮助)。
采用dao层,实现数据操作的接口。然后使用daoImpl,实现dao层的操作。dao层主要就是对数据库进行增删改查。

4、编写网页部分代码

网页部分也不赘述,就是你想做成什么页面。能力高的做的好看一些,用上css、js等,也可以做的很简单,就是最后的一个表格呈现数据即可。具体用到的EL与JSTL表达式在后面讲述。

4、编写Servlet部分代码

通过整体思路部分就知道,servlet其实起到的是一个传递功能。将页面请求传递到dao,将dao的结果集传递回页面。

5、编写过滤器部分代码

经常有同学页面结果明明是对的,但是就是各种乱码,这里通过过滤器一并解决。

二、代码

项目的目录结构
在这里插入图片描述

1、数据库创建代码

这部分略,这部分实在是没啥好说的,要是有同学不太会,可以先学习一下数据库方面知识。

数据库连接代码DBconn.java

package Util;

import java.sql.*;

public class DBconn {
   
    static String url = "jdbc:sqlserver://数据库名;databaseName=表名";
    static String username = "数据库登录名";
    static String password = "数据库密码";
    static Connection conn = null;
    static ResultSet rs = null;
    static PreparedStatement ps = null;

    public static void init() {
   
        try {
   
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            conn = DriverManager.getConnection(url,username,password);
        }catch (Exception e) {
   
            System.out.println("init [SQL驱动程序初始化失败!]");
            e.printStackTrace();
        }
    }

    public static ResultSet selectSql(String sql) {
   
        try {
   
            ps =  conn.prepareStatement(sql);
            rs =  ps.executeQuery();
        } catch (SQLException e) {
   
            System.out.println("sql数据库查询异常");
            e.printStackTrace();
        }
        return rs;
    }

    public static void closeConn(){
   
        try {
   
            conn.close();
        } catch (SQLException e) {
   
            System.out.println("sql数据库关闭异常");
            e.printStackTrace();
        }
    }
}

2、实体类代码

新建实体类Consume.java

package Model;

public class Consume {
   
    private String cost_DateTime;
    private String cost_GroupName;
    private String cost_ItemName;
    private int cost_Times;

    public String getCost_DateTime() {
   
        return cost_DateTime;
    }

    public void setCost_DateTime(String cost_DateTime) {
   
        this.cost_DateTime = cost_DateTime;
    }

    public String getCost_GroupName() {
   
        return cost_GroupName;
    }

    public void setCost_GroupName(String cost_GroupName) {
   
        this.cost_GroupName = cost_GroupName;
    }

    public String getCost_ItemName() {
   
        return cost_ItemName;
    }

    public void setCost_ItemName(String cost_ItemName) {
   
        this.cost_ItemName = cost_ItemName;
    }

    public int getCost_Times() {
   
        return cost_Times;
    }

    public void setCost_Times(int cost_Times) {
   
        this.cost_Times = cost_Times;
    }

}

这是最后需要的结果的实体类,相比于之前的版本,增加到了四个字段,一个消费时间,一个部门名称,一个餐次(早餐中餐晚餐),一个该部门消费次数。根据自己的情况,将这几个字段替换即可。

3、dao类代码

新建接口类ConsumeDao.java

package Dao;

import Model.Consume;

import java.util.List;

public interface ConsumeDao {
   
    public List<Consume> getConsumeAll(String[] department,String year,String month);

}

因为我这个项目只需要查数据,所以增删改步骤没有,其实学会了查,增删改也就是依样画葫芦了。这里我传入的字段是从页面获取到的部门、月份、就餐时间,换成自己需要从界面获取到的数据即可。

这里仅仅是接口,继续在同一个目录下新建接口实现类ConsumeDaoImpl.java

package Dao;

import Model.Consume;
import Util.DBconn;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class ConsumeDaoImpl implements ConsumeDao{
   
    public List<Consume> getConsumeAll(String[] department,String year,String month) {
   
        //StringBuffer base_GroupID = new StringBuffer();
        //for(int i = 0; i < department.length; i++){
   
        //    base_GroupID.append(department[i]);
        //}

        System.out.println("department: " + department);
        System.out.println("year: " + year);
        System.out.println("month: " + month);

        List<Consume> list = new ArrayList<Consume>();
        try {
   
            DBconn.init(
  • 4
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值