JavaWeb 日程管理项目

创建数据库

sql 复制代码
# 新建一个数据库
CREATE DATABASE IF NOT EXISTS schedule_system CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs;

# 创建日程表
DROP TABLE IF EXISTS `sys_schedule`;
CREATE TABLE sys_schedule (
  sid INT PRIMARY KEY AUTO_INCREMENT,
  uid INT NOT NULL,
  title VARCHAR(50) NOT NULL,
  # 是否完成
  completed TINYINT(1) NOT NULL DEFAULT 0,
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

# 创建用户表
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE sys_user (
  uid INT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR(50) NOT NULL UNIQUE,
  user_pwd VARCHAR(255) NOT NULL,
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

# 插入用户数据
INSERT INTO sys_user (username, user_pwd) VALUES ('zhangsan', 'e10adc3949ba59abbe56e057f20f883e');
INSERT INTO sys_user (username, user_pwd) VALUES ('lisi', 'e10adc3949ba59abbe56e057f20f883e');

创建 JavaWeb 项目

  • 创建项目

  • 为项目增加 Tomcat 依赖

  • 项目增加 Web 资源组件

  1. 选择File-->Project Structure 菜单
  2. Project Structure 中,左侧选中Modules ,右侧点击 + 号;
  3. 在Add弹出框的下方Framework,选中相应的框架支持。

连接数据库

  1. 新建数据源
  2. 测试连接

创建数据库实体类

  1. 创建一个包,专门放实体类
  2. 新建实体类
  3. 使用 Lombok 生成类中的 getter setter 等等...
    导入 Lombok 的 jar 包。
    添加注解,就不用手动去写 getter setter equals hashcode toString
java 复制代码
package com.atguigu.schedule.pojo;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.Data;

import java.time.LocalDateTime;
/*
 * 1 实体类的类名和表格名称应该对应  (对应不是一致)
 * 2 实体类的属性名和表格的列名应该对应
 * 3 每个属性都必须是私有的
 * 4 每个属性都应该具备 getter setter
 * 5 必须具备无参构造器
 * 6 应该实现序列化接口( 缓存  分布式项目数据传递  可能会将对象序列化 )
 * 7 应该重写类的hashcode和equals方法
 * 8 toString是否重写都可以
 */
@AllArgsConstructor // 添加全参构造
@NoArgsConstructor // 添加无参构造
@Data // getter setter equals hashcode toString
public class SysUser {
    private Integer uid;
    private String username;
    private String userPwd;
    private LocalDateTime createTime;
}

创建数据访问对象 DAO

  1. 定义接口 SysScheduleDao
java 复制代码
package com.atguigu.schedule.dao;
import com.atguigu.schedule.pojo.SysSchedule;
public interface SysScheduleDao {
    int addSchedule(SysSchedule schedule);
}
  1. 实现接口
    创建 impl 文件夹,创建 SysScheduleDaoImplSysUserDaoImpl
java 复制代码
package com.atguigu.schedule.dao.impl;

import com.atguigu.schedule.dao.SysScheduleDao;
import com.atguigu.schedule.pojo.SysSchedule;

public class SysScheduleDaoImpl implements SysScheduleDao {
    @Override
    public int addSchedule(SysSchedule schedule) {
        return 0;
    }
}
java 复制代码
package com.atguigu.schedule.dao.impl;

import com.atguigu.schedule.dao.SysUserDao;
import com.atguigu.schedule.pojo.SysUser;

public class SysUserDaoImpl implements SysUserDao {

    @Override
    public int addUser(SysUser user) {
        return 0;
    }
}

JDBC使用

  1. 导入 druid-1.1.21.jar 包 和 mysql 驱动
  2. 创建jdbc.properties配置文件
    创建 resources 文件夹
    创建配置文件 jdbc.properties
properties 复制代码
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/schedule_system
username=root
password=root
initialSize=5
maxActive=10
maxWait=1000

标记 resources 目录,使得能与 src 打包到一块

  • 创建 BaseDao 类,对增删改查进行封装
java 复制代码
public class BaseDao {
    // 公共的查询方法  返回的是单个对象
    public <T> T baseQueryObject(Class<T> clazz, String sql, Object ... args) {...}
    // 公共的查询方法  返回的是对象的集合
    public <T> List<T> baseQuery(Class clazz, String sql, Object ... args){...}
    // 通用的增删改方法
    public int baseUpdate(String sql, Object ... args){...}
}
  • SysScheduleDaoImpl、SysUserDaoImpl 使用了 BaseDao 提供的数据库操作函数,实现了接口 SysScheduleDao、SysUserDao。

service 包处理

定义了以 sys_user、sys_schedule 表格为核心的业务处理 分别定义 SysScheduleService、SysUserService 接口,并且创建实现类:

java 复制代码
public interface SysScheduleService {}

public interface SysUserService {}


package com.atguigu.schedule.service.impl;
import com.atguigu.schedule.service.SysUserService;
public class SysUserServiceImpl implements SysUserService {}

package com.atguigu.schedule.service.impl;
import com.atguigu.schedule.service.SysScheduleService;
public class SysScheduleServiceImpl implements SysScheduleService {
}

controller 包处理

写一个公共路径处理类:

java 复制代码
public class BaseController extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String requestURI = req.getRequestURI();
        String[] split = requestURI.split("/");
        String methodName = split[split.length - 1];
        // 通过反射获取要执行的方法
        Class clazz = this.getClass();
        try {
            Method method = clazz.getDeclaredMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
            // 设置方法可以访问
            method.setAccessible(true);
            // 通过反射执行代码
            method.invoke(this, req, resp);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

用户类/日程类 继承 公共路径处理类

java 复制代码
package com.atguigu.schedule.controller;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

@WebServlet("/schedule/*")
public class SysScheduleController extends BaseController {
    protected void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("add");
    }
}

tomcat 部署项目操作

相关推荐
遇见你...2 小时前
A01-Spring概述
java·后端·spring
代码匠心3 小时前
从零开始学Flink:TopN 榜单
大数据·后端·flink·flink sql·大数据处理
lizhongxuan4 小时前
Claude Code 防上下文爆炸:源码级深度解析
前端·后端
Warson_L6 小时前
Python 流程控制与逻辑
后端·python
糖炒栗子03266 小时前
架构笔记:应用配置无状态化 (Statelessness)
后端
Warson_L6 小时前
Python 四大组合数据类型 (Collection Types)
后端·python
查古穆6 小时前
大白话讲ReAct:大模型的“边想边干”
后端
于先生吖6 小时前
SpringBoot+MQTT 无人健身房智能管控系统源码实战
java·spring boot·后端
毕设源码-小云学姐6 小时前
计算机毕业设计springboot网上招聘系统 基于SpringBoot的在线人才对接平台设计与实现 SpringBoot框架下的数字化求职招聘服务系统开发
spring boot·后端·课程设计
weyyhdke8 小时前
springboot和springframework版本依赖关系
java·spring boot·后端