JAVA实战基于SSM的网上书店管理系统

news2024/12/23 23:08:35

目录

一、前言

二、技术介绍代码

三、项目实现流程

四、论文流程参考

五、核心代码截图


专注于大学生实战开发、讲解和毕业答疑等辅导,获取源码后台

一、前言

针对当前网络实际需求,我们深入剖析了过往系统的弊端,并依托计算机系统的先进架构、理念与技术,采用流行的B/S架构与SSM框架,结合Eclipse编辑器与MySQL数据库,精心打造了一款集用户管理、图书信息、订单处理、新闻发布及登录退出等功能于一体的综合性网上系统。该系统不仅实现了管理的信息化与网络化,还通过实测验证了其设计目标的有效达成。相比传统模式,本系统显著优化了资源配置,降低了运营成本,极大地提升了网络环境下的工作效率与管理效能。

二、技术介绍

末尾获取源码
开发语言:Java
Java开发工具:JDK1.8
后端框架:SSM
前端:Vue、HTML
数据库:MySQL5.7和Navicat管理工具结合
服务器:Tomcat8.5
开发软件:IDEA / Eclipse
是否Maven项目:是

三、项目实现截图

首页是网站的入口,主要包含了:图书信息、图书信息、用户注册、以及留言反馈等功能

用户点击某个图书进入图书详细页,点击购买按钮进入购买页,提交订单信息,成功购买后,管理员管理用户的订单信息,审核订单信息。

系统用户管理主要是对新用户的添加和旧用户的删除。新用户的添加主要是指添加用户名称并确定其密码;旧用户的删除也是从下拉菜单中找到对应的用户名称将其删除。不论是新用户添加还是旧用户的删除,这个权限只有管理员具有。

四、系统流程图参考

x

五、核心代码截图

* 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

public interface UserService extends IService<UserEntity> {
 	PageUtils queryPage(Map<String, Object> params);
    
   	List<UserEntity> selectListView(Wrapper<UserEntity> wrapper);
   	
   	PageUtils queryPage(Map<String, Object> params,Wrapper<UserEntity> wrapper);
	   	
}

六、源码获取

感谢大家收藏点赞评论,获取源码后台私

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1970318.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hiredis_安装_重要API

目录 一 安装HiRedis 二 HiRedis的重要API 2.1 连接redis数据库 2.2 发送请求命令 2.3 释放资源 三 封装一个C版本的HiRedis 一 安装HiRedis 1.下载hiredis软件包 git clone https://github.com/redis/hiredis.git 2.进行解压与安装&#xff0c;步骤如下 cd hiredi…

2000-2022年 上市公司-投融资期限错配、短债长用、短贷长投(原始数据、计算代码、参考文献和最终计算结果)

上市公司在投融资过程中的管理决策对企业的财务稳定性和长期发展至关重要。投融资期限错配、短债长用和短贷长投是企业在资本运作中可能出现的问题&#xff0c;它们影响着企业的财务结构和风险管理。 投融资问题概述 投融资期限错配 指企业资产与债务的期限不匹配&#xff0…

ESG泡沫下的伊利:能否重拾消费者信任?

北京时间7月27日&#xff0c;第33届夏季奥林匹克运动会开幕式在法国巴黎举行&#xff0c;伊利作为中国体育代表团的主要赞助商&#xff0c;再次站在了聚光灯下。然而&#xff0c;在光鲜亮丽的营销背后&#xff0c;伊利正面临着前所未有的信任危机与业绩挑战。 近年来&#xff0…

关于IDEA git push 提交代码报committer 的邮件不是GitLab中的邮箱处理

1、报错截图 2、处理办法&#xff1a; 首先&#xff0c;‌需要检查GitLab的设置&#xff0c;‌确认登记的邮箱地址是否正确。‌ 如果发现邮箱不一致&#xff0c;‌需要更新Git的全局用户邮箱设置&#xff0c;‌以确保与GitLab中登记的邮箱保持一致。‌ 使用命令git config --g…

测试的基础概念

需求 需求的定义 用户需求&#xff1a;可以简单理解为甲方提出的需求&#xff0c;如果没有甲方&#xff0c;那么就是终端用户使用产品时必须要完成的任务。该需求一般比较简略。 软件需求&#xff1a;产品经理会把用户需求转化为软件需求&#xff08;写成一个文档&#xff09;…

软件技术(游戏软件开发方向)实训室解决方案

一、引言 随着数字娱乐产业的快速发展&#xff0c;游戏软件开发成为了一个热门领域。为满足市场对高质量游戏开发人才的需求&#xff0c;构建一套先进、全面、实战化的软件技术&#xff08;游戏软件开发方向&#xff09;实训室解决方案显得尤为重要。本方案旨在通过集成先进硬…

【守卫你的安全】基于高通QCS6490之AI智慧电子围篱展示方案

高通QCS6490是一款专为工业和商业物联网应用而设计的系统单芯片(SoC)&#xff0c;支援高阶物联网装置的Wi-Fi 6E连线&#xff0c;以及先进的摄像头、人工智能和计算功能&#xff0c;以实现低功耗下的强大性能。这款芯片结合高通Kryo™ 670 CPU和高通Hexagon处理器&#xff0c;具…

Redis——哈希

哈希 是一个字符类型的字段和值的映射表&#xff0c;简单来说就是一个键值对的集合&#xff0c;特别适合存储对象&#xff1b; 哈希的命令有 H 有关&#xff1b; 1. 添加键值对 HSET 2. 获取键值对 HGET 3. 判断键值对是否存在 HEXISTS 4. 获取所有键 HKEYS

python-----------MRO知识点笔记

视频来源&#xff1a;【【python】B站最细致的super()详解&#xff0c;一定有你不知道的知识&#xff01;】 https://www.bilibili.com/video/BV1FL4y1E7xK/?share_sourcecopy_web&vd_sourced59dcee6044af8fc880b46b581c3f58a MRO&#xff1a;方法解析顺序-------------M…

FastAPI 结合 JWT

文章目录 FastAPI 结合 JWT步骤安装步骤导入必要的模块设置配置和初始化应用创建数据模型实现辅助函数生成 JWT Token获取用户数据验证密码获取当前用户 用户登录获取 Token受保护的路由示例 所有代码测试获取 Token访问受保护的路由token正确token错误 总结注意 FastAPI 结合 …

【中项】系统集成项目管理工程师-第9章 项目管理概论-9.5 项目立项管理

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

RAGCache多级动态缓存管理系统,让RAG推理更高效|RAG论文分享

今天为大家分享北京大学和字节跳动联合发表的一篇关于加速RAG推理的论文&#xff1a; RAGCache: Efficient Knowledge Caching for Retrieval-Augmented Generation 论文地址&#xff1a;https://arxiv.org/abs/2404.12457 1.论文概述 Retrieval-Augmented Generation (RAG) …

聊聊Netty中几个重要的生命周期

写在文章开头 Netty内置了各种开箱即用的处理器&#xff0c;把握好处理器中几个比较重要的生命周期回调用助于我们编写出强大的网络通信程序&#xff0c;所以本文将基于一个简单的示例和源码介绍一下Netty中几个比较重要的生命周期函数&#xff0c;希望对你有帮助。 Hi&#x…

九州未来参编,《边缘计算产业发展研究报告》正式发布

日前&#xff0c;由中国通信标准化协会主办的第四届“云边协同”大会暨首届分布式算力论坛在北京成功举办。大会聚焦云边端分布式算力领域技术新突破、应用新场景以及发展新价值&#xff0c;搭建政产学研用交流对接平台&#xff0c;深化产业链协同开放合作。 会上&#xff0c;由…

Cookie-Monster:一款针对Web浏览器的安全分析与数据提取工具

关于Cookie-Monster Cookie-Monster是一款针对常见Web浏览器的安全分析与数据提取工具&#xff0c;该工具可以帮助广大研究人员提取并分析Edge、Chrome和Firefox浏览器中的Cookie数据。 Cookie-Monster适用于红队和蓝队成员&#xff0c;能够提取WebKit主密钥&#xff0c;找到具…

无监督学习与强化学习基础

就是训练数据无标签&#xff0c;算法自动对数据进行分类&#xff0c;听着很神奇&#xff0c;但学了机器学习以后&#xff0c;除了神经网络比较悬&#xff0c;对人像是个黑盒&#xff0c;别的都是基于数学的分类算法&#xff0c;无监督学习也不例外。 聚类—K-means算法 坐标轴…

Postman下载安装~用于springboot控制层测试

第一步&#xff1a;下载安装 方法1&#xff1a;在线下载 Postman API Platform 方法2&#xff1a;百度网盘 通过百度网盘分享的文件&#xff1a;Postman-win64-Setup 链接&#xff1a;https://pan.baidu.com/s/16nNfKvuNfM8z4kP1Ad-K2Q?pwdotxe 提取码&#xff1a;otxe -…

见证中国数据库的崛起:从追赶到引领的壮丽征程《三》

见证中国数据库的崛起&#xff1a;从追赶到引领的壮丽征程《三》 三、深度思考&#xff1a;中国数据库发展的经验与启示产学研用结合的创新模式应用驱动的创新路径人才培养的关键作用 【纪录片】中国数据库前世今生 在数字化潮流席卷全球的今天&#xff0c;数据库作为IT技术领域…

Java高级流

高级流 java将IO分为了两类 节点流:又称为"低级流" 特点:直接链接程序与另一端的"管道"&#xff0c;是真实读写数据的流IO一定是建立在节点流的基础上进行的。文件流就是典型的节点流(低级流) 处理流:又称为"高级流" 特点:不能独立存在&#x…

开源项目的发展趋势,以及参与开源项目可以获得的经验和成果,以及涉及到的注意事项

目录 一、当前开源项目的发展趋势 1. 全球化协作与社区增长 2. 多领域技术创新与迭代加速 3. 开放协作模式 4. 商业化与产业融合 5. 安全性与隐私保护 6. 跨界融合与生态构建 7. 政策支持 二、参与开源项目的经验和收获 1. 技术能力提升 2. 团队协作与沟通能力 3.领…