基于Spring Boot的网上租贸系统设计与实现(源码+lw+部署文档+讲解等)

news2024/9/25 19:22:41

文章目录

  • 前言
  • 具体实现截图
  • 论文参考
  • 详细视频演示
  • 代码参考
  • 源码获取

前言

💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗
👇🏻 精彩专栏 推荐订阅👇🏻
2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐✅

2023-2024年最值得选的Java毕业设计选题大全:500个热门选题推荐✅

Java精品实战案例《500套》

微信小程序项目精品案例《500套》

🌟文末获取源码+数据库🌟
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

在这里插入图片描述

具体实现截图

没有账号的用户可进入注册界面进行注册操作,用户注册界面的运行效果如图5-1所示.

在这里插入图片描述
用户要想实现商品购买、租赁等操作,必须进行登录操作,在登录界面输入正确的用户名和密码,选择登录类型,点击登录按钮进行登录,用户登录界面如图5-2所示。

在这里插入图片描述
用户登录后可对个人信息进行修改,个人信息界面的运行效果如图5-3所示.

在这里插入图片描述

用户可选择商品查看商品详情信息,登录后可进行加入购物车、租赁和购买操作,商品详情界面如图5-4所示。

在这里插入图片描述

论文参考

在这里插入图片描述

详细视频演示

请联系我获取更详细的演示视频

代码参考

@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
   UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().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);
}

	@Override
	public String generateToken(Long userid,String username, String tableName, String role) {
		TokenEntity tokenEntity = this.selectOne(new EntityWrapper<TokenEntity>().eq("userid", userid).eq("role", role));
		String token = CommonUtil.getRandomString(32);
		Calendar cal = Calendar.getInstance();   
    	cal.setTime(new Date());   
    	cal.add(Calendar.HOUR_OF_DAY, 1);
		if(tokenEntity!=null) {
			tokenEntity.setToken(token);
			tokenEntity.setExpiratedtime(cal.getTime());
			this.updateById(tokenEntity);
		} else {
			this.insert(new TokenEntity(userid,username, tableName, role, token, cal.getTime()));
		}
		return token;
	}



/**
 * 权限(Token)验证
 */
@Component
public class AuthorizationInterceptor implements HandlerInterceptor {

    public static final String LOGIN_TOKEN_KEY = "Token";

    @Autowired
    private TokenService tokenService;
    
	@Override
    public 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;
        }
        
        IgnoreAuth annotation;
        if (handler instanceof HandlerMethod) {
            annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);
        } else {
            return true;
        }

        //从header中获取token
        String token = request.getHeader(LOGIN_TOKEN_KEY);
        
        /**
         * 不需要验证权限的方法直接放过
         */
        if(annotation!=null) {
        	return true;
        }
        
        TokenEntity tokenEntity = null;
        if(StringUtils.isNotBlank(token)) {
        	tokenEntity = tokenService.getTokenEntity(token);
        }
        
        if(tokenEntity != null) {
        	request.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;
        }
        
		PrintWriter writer = null;
		response.setCharacterEncoding("UTF-8");
		response.setContentType("application/json; charset=utf-8");
		try {
		    writer = response.getWriter();
		    writer.print(JSONObject.toJSONString(R.error(401, "请先登录")));
		} finally {
		    if(writer != null){
		        writer.close();
		    }
		}
//				throw new EIException("请先登录", 401);
		return false;
    }
}

源码获取

文章下方名片联系我即可~
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻
精彩专栏推荐订阅:在下方专栏👇🏻
Java精品实战案例《500套》
微信小程序项目精品案例《500套》

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

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

相关文章

台灯什么材质的比较好?专家推荐的护眼台灯分享

台灯是现在普遍使用的家用照明灯具&#xff0c;不仅可以很好地装饰卧室房间&#xff0c;最主要的作用是可以给我我们补充室内灯源不足的部分&#xff0c;让我们工作、学习等保持极高的专注度&#xff0c;也可以在晚上娱乐休闲时&#xff0c;身心更加愉悦。更重要的是&#xff0…

git操作流程与清单

在团队中的git使用流程 git add git stash push -- src/index.js git pull origin master commit push git stash pop git commit和pull的先后顺序 前辈的原文链接 git stash 优质的原文链接 git stash 将本地部分文件暂存&#xff0c;而不提交到远程仓库 使用 git add …

Java——Math类

Java——Math类 Math类是数学操作类&#xff0c;提供了一系列用于数学运算的静态方法。 package com.yushifu.javaAPI; //Math类是数学操作类&#xff0c;提供了一系列用于数学运算的静态方法。 public class MathDemo01 {public static void main(String[] args) {//计算绝对…

淘宝网址链接采集(用 Python 实现淘宝商品信息抓取)

在网页抓取方面&#xff0c;可以使用 Python、Java 等编程语言编写程序&#xff0c;通过模拟 HTTP 请求&#xff0c;获取淘宝网站上的商品页面。在数据提取方面&#xff0c;可以使用正则表达式、XPath 等方式从 HTML 代码中提取出有用的信息。值得注意的是&#xff0c;淘宝网站…

crontab 定时任务详解

使用这个命令自动定时编译 crontab -e 然后输入ctrx 然后输入ctry保存 至此自动编译脚本就做好了。 设置完了之后可以使用crontab -l查看相关内容是不是做好了

基于若依ruoyi-nbcio支持flowable流程增加自定义业务表单(一)

因为需要支持自定义业务表单的相关流程&#xff0c;所以需要建立相应的关联表 1、首先先建表wf_custom_form -- ---------------------------- -- Table structure for wf_custom_form -- ---------------------------- DROP TABLE IF EXISTS wf_custom_form; CREATE TABLE wf…

[每日算法 - 阿里机试] leetcode19. 删除链表的倒数第 N 个结点 「 详细图释一看就懂!」

入口 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能&#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/remove-nth-node-from-end…

孙哥Spring源码第28集

第28集 事务基础概念 【视频来源于&#xff1a;B站up主孙帅suns Spring源码视频】【微信号&#xff1a;suns45】 1、什么是事务 保证业务操作完整性的一种数据库机制 &#xff08;driver 驱动&#xff09; 2、事务特点 ACID ​ A 原子性 &#xff08;多次操作 要不一起成功…

【狐妖小红娘】真人剧,王权篇主演定下,二搭情侣,网友:别魔改

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析国漫资讯。 近几年【改编】基本成为国内影视剧创作的主流风向&#xff0c;有不少电视剧都是由网文改编而成&#xff0c;尽管国内网文市场庞大&#xff0c;也有不少优质的网文小说&#xff0c;但也耐不住大批量地改编&…

基于Dockerfile搭建LNMP环境

准备工作 #关闭防火墙和防护机制 systemctl stop firewalld systemctl disable firewalld setenforce 0 docker network create --subnet172.18.0.0/16 --opt "com.docker.network.bridge.name""docker1" mynetwork#设置自定义网络模式&#xff0c;模…

海外ASO优化之提高应用下载量的策略有哪些

ASO也被称为应用商店优化&#xff0c;是优化软件使其排名变得更高一个的过程&#xff0c;这提高了应用的可见度&#xff0c;并增加了下载量。ASO并不像看上去那么容易&#xff0c;它需要多次A/B测试和观察&#xff0c;才能确定哪种策略更有效。 1、应用的界面和用户体验。 如果…

泛微OA与ERP集成的关键要点

泛微OA办公系统与ERP系统的集成是为了实现企业内部各个系统之间的数据共享和协同工作&#xff0c;提高工作效率和管理水平。下面将详细介绍泛微OA办公系统如何与ERP系统集成以及轻易云数据集成平台在该过程中发挥的重要作用。 集成方式 泛微OA办公系统与ERP系统的集成可以采用…

Stable Diffusion 最新Ebsynth Utility脚本生成AI动画视频

早期的EbSynth制作的AI视频闪烁能闪瞎人的双眼,可以通过【temporalkit+ebsynth+controlnet】让视频变得丝滑不闪烁,现在又多了一个新的方法,在最新版本的Ebsynth Utility中可以通过脚本进行操作设置,更加简单方便。 插件安装 在你已经安装好Ebsynth之后,如果还没有安装好…

iPad平板哪种电容笔更好用?apple pencil的平替

Ipad平板是很有必要买一支电容笔的。我们究竟要不要购买苹果的原装电容笔呢&#xff1f;事实上&#xff0c;如果只是单纯的记录和记录&#xff0c;并不需要花费太多的金钱选择原装电容笔。平替电容笔不单品质优良&#xff0c;用于书写上笔迹流畅&#xff0c;是极佳的学习与工作…

uni-app:实现view元素强制换行(解决长字符和英文字符不换行问题)

效果 换行前 换行后 核心代码 word-wrap: break-word; 或 word-break: break-all; 完整代码demo <template><view><view class"all_style"><view class"line1">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</view>…

浅谈制造业数仓建设

制造业一直是国民经济的支柱产业&#xff0c;而随着全球市场竞争的加剧和客户需求的不断变化&#xff0c;制造业企业面临着诸多挑战。为了应对这些挑战&#xff0c;制造业企业需要借助先进的信息技术手段&#xff0c;提高生产效率、降低成本、提供个性化的产品和服务。在这个背…

开源联合、聚力共赢丨2023 CCF中国开源大会会议通知(第二轮)

会议简介 2023 CCF中国开源大会&#xff08;CCF ChinaOSC&#xff09;拟于2023年10月21日至22日在湖南省长沙市北辰国际会议中心召开。大会由中国计算机学会&#xff08;CCF&#xff09;与开放原子开源基金会主办&#xff0c;CCF开源发展委员会、湖南先进技术研究院承办&#…

靶场上新:PigCMS任意文件上传漏洞

本文由掌控安全学院-江月投稿 封神台新上线漏洞复现靶场&#xff1a;PigCMS action_flashUpload 任意文件上传漏洞。 漏洞详情&#xff1a; PigCms&#xff08;又称小猪CMS&#xff09;是一个基于phpmysql的多用户微信营销系统&#xff0c;是国内使用较多、功能强大、性能稳定…

【20】c++设计模式——>组合模式

组合模式定义 C组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;他允许将对象组合成树形结构来表示“部分-整体”的层次结构&#xff1b;在组合模式中有两种基本类型的对象&#xff1a;叶子对象和组合对象&#xff0c;叶子对象时没有子对象…

【ARM Coresight 系列文章19 -- Performance Monitoring Unit(性能监测单元)

文章目录 1.1 PMU 介绍1.2 PMU 寄存器1.2.1 PMU 管理寄存器1.2.2 PMU 外设识别寄存器1.2.3 PMU 组件识别寄存器1.3 性能监控事件1.3.1 Cortex-A9 特定事件1.1 PMU 介绍 许多体系结构都包含 PMU(Performance Monitoring Unit)硬件,用于跟踪、计数系统内部的一些底层硬件事件…