山东东方路桥建设总公司官方网站,想做网络推广的公司,企业做年度公示在哪个网站,wordpress采集文章后定时发布文章目录 前言详细视频演示具体实现截图核心技术介绍后端框架SSM前端框架Vue持久层框架MyBaits 为什么选择我代码参考数据库参考测试用例参考源码获取 前言
#x1f31e;博主介绍#xff1a;✌CSDN特邀作者、资深全栈开发程序员#xff0c;曾在互联网大厂担任高级职位、码云… 文章目录 前言详细视频演示具体实现截图核心技术介绍后端框架SSM前端框架Vue持久层框架MyBaits 为什么选择我代码参考数据库参考测试用例参考源码获取 前言
博主介绍✌CSDN特邀作者、资深全栈开发程序员曾在互联网大厂担任高级职位、码云/掘金/华为云/阿里云/InfoQ/StackOverflow/github等平台优质作者、专注于Java、小程序、前端、python等技术领域毕业项目实战以及程序定制化开发、全栈讲解、就业辅导、面试辅导、简历修改。✌ 精彩专栏 推荐订阅 2024-2025年最值得选的微信小程序毕业设计选题大全100个热门选题推荐✅ 2024-2025年最值得选的Java毕业设计选题大全100个热门选题推荐✅ 2024-2025年最值得选的Python毕业设计选题大全100个热门选题推荐✅ 2024-2025年最值得选的PHP毕业设计选题大全100个热门选题推荐✅ 2024-2025年最值得选的nodejs毕业设计选题大全100个热门选题推荐✅ Java精品实战案例《3000套》 微信小程序项目精品案例《2000套》 Java核心技术精选 文末获取源码数据库 感兴趣的可以先收藏起来还有大家在毕设选题项目以及论文编写等相关问题都可以找我咨询希望帮助更多的人 详细视频演示
请联系我获取更详细的演示视频
具体实现截图 核心技术介绍
后端框架SSM
SSM框架是一种基于Spring、Spring MVC和MyBatis的开发框架它们分别负责不同的功能模块共同构建了一个完整的Java Web应用程序。下面是对SSM框架的三个组成部分的简要介绍 Spring框架Spring是一个轻量级的Java开发框架提供了广泛的功能包括依赖注入、面向切面编程AOP、事务管理等。Spring的核心容器管理了应用程序中的对象使得对象之间的依赖关系更加清晰并且降低了耦合度。 Spring MVC框架Spring MVC是Spring框架的一部分用于构建Web应用程序。它基于MVCModel-View-Controller设计模式将应用程序分为模型Model、视图View和控制器Controller三层。模型负责处理业务逻辑视图负责展示数据控制器负责处理用户请求和调度逻辑。 MyBatis框架MyBatis是一个持久层框架它简化了与数据库的交互过程。通过配置映射文件开发人员可以将Java对象映射到数据库表中并且可以通过SQL语句进行数据库操作。MyBatis提供了一种优雅的方式来管理数据库访问代码并且能够很好地与Spring集成。
前端框架Vue
Vue.js是一种流行的JavaScript框架它具有许多优势。其中Vue.js的核心优势之一是虚拟DOM技术。虚拟DOM是一个内存中的数据结构它在实现高效的DOM操作方面发挥了重要作用。
Vue.js采用了响应式数据绑定、虚拟DOM、组件化等现代化技术为开发者提供了一种灵活、高效、易于维护的开发模式。当数据发生变化时Vue.js能够自动更新UI开发者无需手动更新UI从而能够更加专注于数据处理。
持久层框架MyBaits
MyBatis是一个开源的持久层框架它可以帮助开发者简化数据库操作的编写和管理。MyBatis的核心思想是将SQL语句和Java代码分离通过XML或注解的方式来描述数据库操作从而实现了数据访问层的解耦和灵活性。
MyBatis的优势主要包括以下几点 简化数据库操作MyBatis通过提供强大的SQL映射功能可以将Java对象与数据库表进行映射开发者无需手动编写繁琐的SQL语句大大简化了数据库操作的编写和维护。 灵活的SQL控制MyBatis支持动态SQL可以根据不同的条件和逻辑来动态生成SQL语句使得查询、更新等操作更加灵活和可控。 缓存支持MyBatis提供了一级缓存和二级缓存的支持可以有效减少数据库的访问次数提高系统性能。 可扩展性强MyBatis采用插件机制可以方便地扩展和定制自己的功能满足各种不同的业务需求。
为什么选择我 博主提供的项目均为博主自己收集和开发的所有的源码都经由博主检验过能过正常启动并且功能都没有问题同学们拿到后就能使用且博主自身就是高级开发可以将所有的代码都清晰讲解出来。 多个成功系统案例 代码参考
// 忽略权限验证的注解
IgnoreAuth
PostMapping(value /login)
public R login(String username, String password, String captcha, HttpServletRequest request) {// 查询用户信息UsersEntity user userService.selectOne(new EntityWrapperUsersEntity().eq(username, username));// 判断用户是否存在或密码是否正确if(usernull || !user.getPassword().equals(password)) {return R.error(账号或密码不正确);}// 生成tokenString token tokenService.generateToken(user.getId(),username, users, user.getRole());return R.ok().put(token, token);
}// 生成token
Override
public String generateToken(Long userid,String username, String tableName, String role) {// 查询是否存在已有tokenTokenEntity tokenEntity this.selectOne(new EntityWrapperTokenEntity().eq(userid, userid).eq(role, role));// 生成随机token字符串String token CommonUtil.getRandomString(32);// 设置token过期时间为1小时后Calendar cal Calendar.getInstance(); cal.setTime(new Date()); cal.add(Calendar.HOUR_OF_DAY, 1);if(tokenEntity!null) {// 更新token信息tokenEntity.setToken(token);tokenEntity.setExpiratedtime(cal.getTime());this.updateById(tokenEntity);} else {// 新建token记录this.insert(new TokenEntity(userid,username, tableName, role, token, cal.getTime()));}return token;
}/*** 权限(Token)验证拦截器*/
Component
public class AuthorizationInterceptor implements HandlerInterceptor {// 定义Token在请求Header中的键名public static final String LOGIN_TOKEN_KEY Token;Autowiredprivate TokenService tokenService;Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 支持跨域请求response.setHeader(Access-Control-Allow-Methods, POST, GET, OPTIONS, DELETE);response.setHeader(Access-Control-Max-Age, 3600);response.setHeader(Access-Control-Allow-Credentials, true);response.setHeader(Access-Control-Allow-Headers, x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization);response.setHeader(Access-Control-Allow-Origin, request.getHeader(Origin));// 跨域时会首先发送一个OPTIONS请求这里我们给OPTIONS请求直接返回正常状态if (request.getMethod().equals(RequestMethod.OPTIONS.name())) {response.setStatus(HttpStatus.OK.value());return false;}// 获取HandlerMethod注解IgnoreAuth annotation;if (handler instanceof HandlerMethod) {annotation ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);} else {return true;}// 从header中获取tokenString token request.getHeader(LOGIN_TOKEN_KEY);/*** 不需要验证权限的方法直接放过*/if(annotation!null) {return true;}// 根据token获取token实体TokenEntity tokenEntity null;if(StringUtils.isNotBlank(token)) {tokenEntity tokenService.getTokenEntity(token);}if(tokenEntity ! null) {// 将用户信息存入sessionrequest.getSession().setAttribute(userId, tokenEntity.getUserid());request.getSession().setAttribute(role, tokenEntity.getRole());request.getSession().setAttribute(tableName, tokenEntity.getTablename());request.getSession().setAttribute(username, tokenEntity.getUsername());return true;}// 验证失败返回401错误和提示信息PrintWriter writer null;response.setCharacterEncoding(UTF-8);response.setContentType(application/json; charsetutf-8);try {writer response.getWriter();writer.print(JSONObject.toJSONString(R.error(401, 请先登录)));} finally {if(writer ! null){writer.close();}}return false;}
}数据库参考
DROP TABLE IF EXISTS address;
/*!40101 SET saved_cs_client character_set_client */;
/*!40101 SET character_set_client utf8 */;
CREATE TABLE address (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 主键,addtime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间,userid bigint(20) NOT NULL COMMENT 用户id,address varchar(200) NOT NULL COMMENT 地址,name varchar(200) NOT NULL COMMENT 收货人,phone varchar(200) NOT NULL COMMENT 电话,isdefault varchar(200) NOT NULL COMMENT 是否默认地址[是/否],PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT9 DEFAULT CHARSETutf8 COMMENT地址;DROP TABLE IF EXISTS forum;
/*!40101 SET saved_cs_client character_set_client */;
/*!40101 SET character_set_client utf8 */;
CREATE TABLE forum (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 主键,addtime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间,title varchar(200) DEFAULT NULL COMMENT 帖子标题,content longtext NOT NULL COMMENT 帖子内容,parentid bigint(20) DEFAULT NULL COMMENT 父节点id,userid bigint(20) NOT NULL COMMENT 用户id,username varchar(200) DEFAULT NULL COMMENT 用户名,avatarurl longtext COMMENT 头像,isdone varchar(200) DEFAULT NULL COMMENT 状态,istop int(11) DEFAULT 0 COMMENT 是否置顶,toptime datetime DEFAULT NULL COMMENT 置顶时间,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT79 DEFAULT CHARSETutf8 COMMENT交流论坛;DROP TABLE IF EXISTS yonghu;
/*!40101 SET saved_cs_client character_set_client */;
/*!40101 SET character_set_client utf8 */;
CREATE TABLE yonghu (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 主键,addtime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间,zhanghao varchar(200) NOT NULL COMMENT 账号,mima varchar(200) NOT NULL COMMENT 密码,xingming varchar(200) NOT NULL COMMENT 姓名,xingbie varchar(200) DEFAULT NULL COMMENT 性别,shouji varchar(200) DEFAULT NULL COMMENT 手机,touxiang longtext COMMENT 头像,jf double DEFAULT 0 COMMENT 积分,money double DEFAULT 0 COMMENT 余额,PRIMARY KEY (id),UNIQUE KEY zhanghao (zhanghao)
) ENGINEInnoDB AUTO_INCREMENT19 DEFAULT CHARSETutf8 COMMENT用户;– 向数据库插入数据示例
INSERT INTO product (name, price, description, stock)
VALUES (iPhone 13, 999.99, A powerful and advanced smartphone, 100);INSERT INTO product (name, price, description, stock)
VALUES (Samsung Galaxy S21, 899.99, A flagship Android smartphone, 150);INSERT INTO product (name, price, description, stock)
VALUES (Sony PlayStation 5, 499.99, Next-gen gaming console, 50);测试用例参考
输入数据预期结果实际结果结果分析用户名guanliyuan 密码123456 验证码正确输入登录系统成功登录系统结果一致用户名guanliyuan 密码111111 验证码正确输入密码错误密码错误请重新输入密码结果一致用户名guanliyuan 密码123456 验证码错误输入验证码错误验证码信息错误结果一致用户名空 密码123456 验证码正确输入用户名必填请输入用户名结果一致用户名guanliyuan 密码空 验证码正确输入密码错误密码错误请重新输入密码结果一致
另外本系统还进行了用户管理功能的测试。用户管理包括添加、编辑、删除和查找用户等功能。本系统测试了以下各项功能的测试用例
添加用户功能测试用例
输入数据预期结果实际结果结果分析用户名user1 密码123456 角色普通用户添加成功并在用户列表中显示用户列表中出现用户1结果一致用户名user2 密码111111 角色普通用户添加成功并在用户列表中显示用户列表中出现用户2结果一致用户名user1 密码123456 角色普通用户添加失败提示用户名已存在添加失败提示用户名已存在结果一致用户名空 密码123456 角色普通用户添加失败提示用户名不能为空添加失败提示用户名不能为空结果一致
编辑用户功能测试用例
输入数据预期结果实际结果结果分析选择用户1修改密码为654321编辑成功密码修改成功用户1密码已修改为654321结果一致选择用户2修改角色为管理员编辑成功角色修改成功用户2角色已修改为管理员结果一致选择用户1清空用户名编辑失败提示用户名不能为空编辑失败提示用户名不能为空结果一致
删除用户功能测试用例
输入数据预期结果实际结果结果分析选择用户1进行删除操作系统询问是否删除用户确认后用户被删除用户1已成功删除结果一致选择用户2进行删除操作系统询问是否删除用户取消删除操作用户2未被删除结果一致
通过系统功能测试确保系统的功能完备性系统能够按照需求规格说明书的定义正常运行。我们将继续进行测试工作发现并修复潜在问题为用户提供功能完善的系统体验。
源码获取
文章下方名片联系我即可~ 大家点赞、收藏、关注、评论啦 、查看获取联系方式 精彩专栏推荐订阅在下方专栏 2024-2025年最值得选的微信小程序毕业设计选题大全100个热门选题推荐✅ 2024-2025年最值得选的Java毕业设计选题大全100个热门选题推荐✅ 2024-2025年最值得选的Python毕业设计选题大全100个热门选题推荐✅ 2024-2025年最值得选的PHP毕业设计选题大全100个热门选题推荐✅ 2024-2025年最值得选的nodejs毕业设计选题大全100个热门选题推荐✅ Java精品实战案例《3000套》 微信小程序项目精品案例《1000套》 Java核心技术精选