练手小项目 - 基于MVC架构的原生Javaweb快递管理项目(从零搭建,感受技术的迭代~)

文章目录一、项目介绍二、快速使用三、核心技术1.项目架构2.后端数据封装2.1 JSON2.2 BooStrapTableXxx类2.2 Message类3.分页实现3.1 前端调用实现3.2 后台逻辑实现4.二维码生成5.异常的统一处理6.用户权限处理7.阿里云短信发送四、拓展及展望一、项目介绍练手的一个小项目,能做 快递、快递员、用户、管理员 的管理(增删改查),支持多用户访问。技术选型系统环境:Java EE 8、Servlet 3.0、Apache Maven 3、Mysql。技术点:J
摘要由CSDN通过智能技术生成

一、项目介绍

练手的一个小项目,能做 快递、快递员、用户、管理员 的管理(增删改查),支持多用户访问。

技术选型

  1. 系统环境:Java EE 8、Servlet 3.0、Apache Maven 3、Mysql。
  2. 技术点:Java反射,Durid,HTML、Ajax,JSON,XML等等基础知识点。
  3. 所用框架:自己搭建的基于MVC架构的MVC框架(模拟SpringMVC框架)。MVC架构搭建详解点击我查看

前后台:

  1. 前台:使用手机端操作。
  2. 后台:使用pc浏览器操作。

文件结构

在这里插入图片描述


二、快速使用

这里我还没有部署到服务器,以后会部署到服务器,直接访问服务器即可体验到。

环境:jdk1.8+、mysql 5.7、maven 3.0+、Internet、浏览器。

项目地址:https://gitee.com/pdh_gitee/express-e.git

把此项目git clone到本地后,打开项目。

之后运行sql脚本,即sql包下的express_manager.sql文件。做出必要的数据库连接配置,修改druid.properties文件里面的username和password

username=root
password=

修改结束以后,启动项目。

  1. 访问前台:localhost:8080(验证码登陆,验证码会自动传送到输入框)
  2. 访问后台:localhost:8080/admin (账号admin,密码123)

三、核心技术

1.项目架构

此项目未使用任何现在留下的框架,而是自己手撸了一套以MVC架构为基础的自定义框架(参考SpringMVC,当然有很多不足),把 Controller类里的所有请求和请求对应的方法全部加载到一个map容器当中统一进行管理,新编写的Controller类只需要写入配置文件application.properties中即可实现容器加载和管理。

容器初始化加载所有的方法之后,每次接收到用户发起的请求,直接访问map容器,获取到对应的封装对象,执行相应的方法,返回结果。

这种MVC架构模式使得项目具有 低耦合、易管理、易扩展、层次清晰 等优点,我们的项目代码在搭建完MVC加架构,编写起来就变得非常的简单。

这里针对这一核心技术点就不在多说,精华干货都在这里面:MVC架构搭建详解点击我查看


2.后端数据封装

2.1 JSON

前端使用html页面,后端传递给前端的数据全部是的以JSON数据格式的,所以,就必须有一个工具类 JSONUtil 把后端待传输的数据全部转换为JSON的格式,这可以借助Gson工具类,具体代码实现如下:

public class JSONUtil {
   
    // 需要引入Gson依赖 项目中都已经实现
    private static Gson gson = new Gson依赖();
    public static String toJSON(Object obj){
   
        return gson.toJson(obj);
    }
}

2.2 BooStrapTableXxx类

如BooStrapTableExpress、BooStrapTableUser等。

封装数据查询到的数据,比如时间格式,从数据库查询到的时间是UTC格式,不符合国人的阅读习惯。状态码是数字,而展示到前端页面需要以文字的方式进行展示。

所有的数据全部封装为String和int格式,都符合国人的阅读习惯。这就要在合适的地方使用实体类转换为BooStrapTableXxx类,转换的结果得符合我们的预期。

2.2 Message类

后端与数据库交互后得到的数据结果集统一使用Message封装,这样在解析数据的时候,我们拥有统一的数据格式,方便很多。

Message

这里的状态码尚且这样处理,之后学习到更前言的技术,会有更好的解决方案。

public class Message {
   
    //数据:{status:0,result:"",data{}}

    //状态码 0表示成功 -1表示未知异常 -2表示快递code重复 -3表示快递单号重复 -4表示电话重复
    private int status;
    //消息内容
    private String result;
    //消息的数据 数据可能是任何类型的
    private Object data;
    
    // get,set,构造等方法
}

以为删除数据为例数据封装示例

后端的Service层的所有方法放回值类型都设置为了Message

public static Message delete(int id){
   
    Message msg =null;
    try {
   
        boolean flag = dao.delete(id);
        if(flag){
   
            msg = new Message(0,"删除成功");
        } else {
   
            msg = new Message(-1,"删除失败");
        }
    } catch (UnHandleException e) {
   
        msg = new Message(-1,"删除失败,未知异常");
    }
    return msg;
}
<
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值