# website **Repository Path**: sunsleet/website ## Basic Information - **Project Name**: website - **Description**: 网页公告项目 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-05-13 - **Last Updated**: 2023-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 普通文档放置于项目中document目录下,database.sql为数据库初始化文件。 1. 运行环境 - npm: 6.9.0 - node: v10.15.1 - mysql: 5.6 - express: 4.18.2 - 需要安装模块 ``` npm install express --save npm install body-parser --save npm install cookie-parser --save npm install multer --save npm install swig --save npm install sync-mysql --save ``` 2. 启动 源码启动: 1、 创建website数据库,执行database.sql文件初始化数据库结构 2、 修改config下的mysql.json配置 3、 启动main.js 4、 访问 http://宿主机IP:8080 docker镜像启动: 1、 创建website数据库,执行database.sql文件初始化数据库结构 2、 修改config下的mysql.json配置 3、 打包docker镜像到docker仓库,启动容器 ```docker run -d -p 8080:8080 website:v1``` 4、 访问 http://宿主机IP:8080 docker-compose启动: 1、 创建website数据库,执行database.sql文件初始化数据库结构 2、 修改config下的mysql.json配置 3、 使用docker-compose部署项目,或者配置idea插件启动 ```docker-compos -f docker-compose.yml up -d --build web``` 3. 架构说明 程序采用MVC模式设计,结构清晰,便于扩展。 - -src: 源代码 - --config: 配置文件 - ---mysql.config: mysql配置 - --dao: 数据访问 - ---UserDao.js: 用户数据访问接口 - ---RoleDao.js: 角色、权限访问接口 - ---MessageDao.js: 公告数据访问接口 - --exception: 异常类 - ---PasswordNotCorrectException.js: 密码错误异常 - ---UserExistException.js: 用户已存在异常 - ---UserNotExistException.js: 用户不存在异常 - --filter: 过滤器 - ---loginFilter.js: 登陆过滤器,用于过滤非法登陆 - --static: 静态资源文件 - ---home.html:首页 - ---login.html:登陆页 - ---message.html:详细消息页 - ---register.html:注册页 - --template: 数据访问模板,可扩展不同底层访问方式,适配不同类型数据库 - ---jdbcTemplate.js:jdbc访问模板 - --test: 单元测试 - ---JdbcTemplateTest.js:jdbc模板单元测试 - ---UserDaoTest.js:用户dao单元测试 - --utils: 工具集 - ---commonUtils.js:常用工具集 - --AuthService.js: 权限服务 - --router.js: 路由 - --service.js: 服务层,登陆、消息发送,正式项目可以拆分成多个服务 - -document: 文档说明 - -main.js: 程序入口 项目流程:express监听请求,收到请求之后通过router路由到对应的接口, service负责实现业务逻辑,dao负责提供service需要的访问数据库接口, jdbcTemplate封装底层数据库连接细节,业务代码执行完毕之后由router返回执行结果给请求方。 4. 测试流程 - 超级管理员 admin:123456 - 管理员 manager:123456 - 普通用户 lj:123456 系统默认内置3个用户,分别对应不同角色。 单元测试:分别测试每一个类对应的方法是否合理,因为时间关系只实现了一点单元测试 黑盒测试: 登陆admin用户:测试登陆,发布,读取消息、退出登陆功能正常 登陆manager用户:测试登陆,发布,读取消息、退出登陆功能正常 登陆lj用户:测试登陆,读取消息、退出登陆功能正常 登陆admin账户,输错密码,显示密码错误消息,需要重新登录 登陆不存在账户,输错密码,显示用户不存在,跳转注册界面,注册成功跳转首页 注册已存在账户,跳转登陆界面,显示用户已存在,请登录 任意账户已登录,点击退出,返回登陆页面,用户已退出 5. 问题记录 - 目前token算法简陋,后期可以更换计算逻辑 - 超级管理员新增用户功能未实现,后期可以扩展 - 目前未实现分页功能,数据都是取的最近TOP10 - 未对数据进行校验 - 从router到service层应该对数据进行转换,后期需要优化,不传原生的req和res。