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 小时前
Redis在Spring Boot中的应用
java·后端
_OP_CHEN2 小时前
【Linux系统编程】(三十四)初识进程信号:Linux 软中断的核心奥秘
linux·后端·操作系统·进程·信号·终端信号
晔子yy2 小时前
AI编程时代:发挥Rules约束在Vibe-Coding的重要作用
开发语言·人工智能·后端
夏乌_Wx2 小时前
从零开始实现一个自己的 Shell:mybash 项目实战
linux·c语言·后端
kong79069282 小时前
SpringBoot原理
java·spring boot·后端
那我掉的头发算什么2 小时前
【图书管理系统】基于Spring全家桶的图书管理系统(下)
java·数据库·spring boot·后端·spring·mybatis
毅炼13 小时前
Java 集合常见问题总结(3)
java·开发语言·后端
笨蛋不要掉眼泪16 小时前
Nacos配置中心详解:核心用法、动态刷新与经典面试题解析
java·数据库·后端
REDcker16 小时前
DNS技术详解
服务器·后端·计算机网络·互联网·dns·服务端