Java项目:75 springboot房产销售系统

news2024/11/10 22:32:05
作者主页:舒克日记

简介:Java领域优质创作者、Java项目、学习资料、技术互助

文中获取源码

项目介绍

使用房产销售系统分为管理员和用户、销售经理三个角色的权限子模块。

管理员所能使用的功能主要有:首页、个人中心、用户管理、销售经理管理、房源信息管理、房源类型管理、房子户型管理、交易订单管理、预约看房管理、评价管理、我的收藏管理、系统管理等。

用户可以实现首页、个人中心、房源信息管理、交易订单管理、预约看房管理、评价管理、我的收藏管理等。

销售经理可以实现首页、个人中心、房源信息管理、交易订单管理、预约看房管理、评价管理等。

环境要求

1.运行环境:最好是java jdk1.8,我们在这个平台上运行的。其他版本理论上也可以。

2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;

3.tomcat环境:Tomcat7.x,8.X,9.x版本均可

4.硬件环境:windows7/8/10 4G内存以上;或者Mac OS;

5.是否Maven项目:是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven.项目

6.数据库:MySql5.7/8.0等版本均可;

技术栈

运行环境:jdk8 + tomcat9 + mysql5.7 + windows10

服务端技术:SpringBoot + MyBatis + Vue + Bootstrap + jQuery

使用说明

1.使用Navicati或者其它工具,在mysql中创建对应sq文件名称的数据库,并导入项目的sql文件;

2.使用IDEA/Eclipse/MyEclipse导入项目,修改配置,运行项目;

3.将项目中config-propertiesi配置文件中的数据库配置改为自己的配置,然后运行;

运行指导

idea导入源码空间站顶目教程说明(Vindows版)-ssm篇:

http://mtw.so/5MHvZq

源码地址:http://codegym.top

运行截图

文档截图

img

项目截图

前台

springboot016房产销售系统0

springboot016房产销售系统1

springboot016房产销售系统2

springboot016房产销售系统3

后台

springboot016房产销售系统4

springboot016房产销售系统5

springboot016房产销售系统6

springboot016房产销售系统7

代码

package com.lyyzoo.gpss.web;

import com.lyyzoo.gpss.entity.system.User;
import com.lyyzoo.gpss.service.system.UserService;
import com.lyyzoo.gpss.util.VCodeGenerator;
import com.lyyzoo.util.Cryptos;
import com.lyyzoo.util.Strings;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.image.BufferedImage;
import java.io.IOException;

/**
 * <p>
 *
 * @author bojiangzhou
 * @date 2017-03-29
 */
@Controller
@RequestMapping("")
public class HomeController extends BaseController {

    @Autowired
    private UserService userService;

    /**
     * 到首页/登录页面
     */
    @RequestMapping(value = {"", "/", "/index", "/login"})
    public String index(){
        return "/index";
    }

    /**
     * 管理员主页
     */
    @RequestMapping("/admin/home")
    public String toHome(){
        return "/home/home";
    }

    /**
     * 登录
     */
        @RequestMapping(value = "/login", method = RequestMethod.POST)
        public String login(String account, String password, String vcode, HttpSession session){
            String redirect = REDIRECT("/login");
            //基本验证
            if(Strings.isNullOrEmpty(account)){
                session.setAttribute("errorMsg", "账号必须填写!");
                return redirect;
            }
            if(Strings.isNullOrEmpty(password)){
                session.setAttribute("errorMsg", "密码必须填写!");
                return redirect;
            }
            if(Strings.isNullOrEmpty(vcode)){
                session.setAttribute("errorMsg", "验证码必须填写!");
                return redirect;
            }
            //验证码
            String sessionVcode = (String) session.getAttribute("vcode");
            if(!vcode.equalsIgnoreCase(sessionVcode)){
                session.setAttribute("errorMsg", "验证码错误!");
                return redirect;
            }
            //验证用户名和密码
            password = Cryptos.encryptMd5(password);
            User loginUser = userService.login(account, password);
            if(loginUser == null){
                session.setAttribute("errorMsg", "账号或密码错误!");
                return redirect;
            }
            if(loginUser.getIsLocked() == User.IsLocked.YES){
                session.setAttribute("errorMsg", "账号已锁定,不能登录!");
                return redirect;
            }

            //保存到session的时候清除密码
            User currentUser = new User();
            BeanUtils.copyProperties(loginUser, currentUser);
            currentUser.setPassword(null);

            //登录成功
            session.setAttribute("currentUser", currentUser);

            return REDIRECT("/admin/home");
        }

    /**
     * 获取验证码
     */
    @RequestMapping("/vcode")
    public void getVCode(HttpSession session, HttpServletResponse response) throws IOException {
        //创建验证码生成器对象
        VCodeGenerator vcGenerator = new VCodeGenerator();
        //生成验证码
        String vcode = vcGenerator.generatorVCode();
        //将验证码保存在session域中,以便判断验证码是否正确
        session.setAttribute("vcode", vcode);
        //生成验证码图片
        BufferedImage vImg = vcGenerator.generatorRotateVCodeImage(vcode, true);
        //输出图像
        ImageIO.write(vImg, "gif", response.getOutputStream());
    }

    /**
     * 退出系统
     */
    @RequestMapping("/logoff")
    public String logoff(HttpSession session){
        session.invalidate();
        return REDIRECT("/");
    }

    @RequestMapping("/function")
    public String function(){
        return "/home/function";
    }

    @RequestMapping("/welcome")
    public String welcome(){
        return "/home/welcome";
    }

    /**
     * 错误页面
     * @param code
     * @return
     */
    @RequestMapping("/error/{code}")
    public String error(@PathVariable String code) {
        return "/error/" + code;
    }



}

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

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

相关文章

MRC是谁?- 媒体评级委员会 Media Rating Council

在在线广告的世界里&#xff0c;有许多不同的技术和实践用于提供和衡量广告。对于广告商、出版商和营销人员来说&#xff0c;了解这些技术是如何工作的以及如何有效使用这些技术很重要。在这方面发挥关键作用的一个组织是媒体评级委员会&#xff08;MRC&#xff09;。 1. 了解…

OpenCV 形态学处理函数

四、形态学处理&#xff08;膨胀&#xff0c;腐蚀&#xff0c;开闭运算&#xff09;_getstructuringelement()函数作用-CSDN博客 数字图像处理(c opencv)&#xff1a;形态学图像处理-morphologyEx函数实现腐蚀膨胀、开闭运算、击中-击不中变换、形态学梯度、顶帽黑帽变换 - 知乎…

Java代码基础算法练习-搬砖问题-2024.03.25

任务描述&#xff1a; m块砖&#xff0c;n人搬&#xff0c;男搬4&#xff0c;女搬3&#xff0c;两个小孩抬一砖&#xff0c;要求一次全搬完&#xff0c;问男、 女、小孩各若干&#xff1f; 任务要求&#xff1a; 代码示例&#xff1a; package M0317_0331;import java.util.S…

leetcode刷题日记-外观数组

题目描述 解题思路 初始化字符串 init 为 “1”&#xff0c;作为外观数列的第一项。 通过循环迭代生成外观数列的下一项&#xff0c;循环次数为 n-1&#xff0c;因为已经初始化了第一项。 在每次迭代中&#xff0c;通过两个指针 pos 和 start 来遍历当前项 init&#xff0c;po…

联合体/共用体

一、联合体类型的声明 联合体是由一个或多个成员构成&#xff0c;这些成员可以是不同的类型。 编译器只会为最大的成员分配足够的内存空间。 联合体的特点是全体成员共用一块内存空间&#xff0c;故联合体也叫共用体。 联合体中&#xff0c;给一个成员赋值&#xff0c;那么其他…

Spring Boot + MyBatis

一、配置依赖 <!-- MyBatis --> <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.5.3</version> </dependency> <!-- junit测试依赖 --&g…

套娃式大小AI群体导致AI觉醒吗?

一、“套娃式”AI训练 目前&#xff0c;我们所讨论的人工智能&#xff08;AI&#xff09;主要是基于机器学习和深度学习技术的算法系统。它们通过不断学习、优化和改进以完成特定任务&#xff0c;但并不具备自我意识或者独立的创造性思考能力&#xff0c;即“觉醒”。 “套娃式…

代码随想录算法训练营第33天|1005.K次取反后最大化的数组和|134. 加油站|135. 分发糖果

代码随想录算法训练营第33天|1005.K次取反后最大化的数组和|134. 加油站|135. 分发糖果 1005.K次取反后最大化的数组和 本题简单一些&#xff0c;估计大家不用想着贪心 &#xff0c;用自己直觉也会有思路。 https://programmercarl.com/1005.K%E6%AC%A1%E5%8F%96%E5%8F%8D%E5%…

c++翁恺

1、面向对象 Data&#xff1a;杯子的属性 Opera&#xff1a;杯子提供的服务 老师上课&#xff1a; C&#xff1a;按流程执行 C&#xff1a;定一个教室&#xff0c;有很多学生&#xff0c;投影仪&#xff0c;灯&#xff0c;每个学生反映不一样。 这个场景有什么东西&#xff0c…

Android开发 --- Android12外部存储权限问题

1.问题 Android12使用如下权限&#xff0c;将不会获得读写文件的权限 <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE" /> 2.解决 if (!Environment.isExternalStorageManager()) {Intent intent new Intent(Settings.ACTION_M…

Excel 打开后提示:MicrosoftExcel无法计算某个公式。在打开的工作簿中有一个循环引用...

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 MicrosoftExcel无法计算某个公式。在打开的工作簿中有一个循环引用&#xff0c;但无法列出导致循环的引I用。请尝试编辑上次输入的公式&#xff0c;或利用“撤消”命令删除该公式&#xff0c;如下图&…

人工智能(Educoder)-- 搜索技术 -- 启发式搜索

任务描述 本关任务&#xff1a;八数码问题是在一个33的棋盘上有1−8位数字随机分布&#xff0c;以及一个空格&#xff0c;与空格相连的棋子可以滑动到空格中&#xff0c;问题的解是通过空格滑动&#xff0c;使得棋盘转化为目标状态&#xff0c;如下图所示。 为了简化问题的输…

解决Dev-C++读取输入直到文件结束 while (scanf(“%s“, str[num]) != EOF)没反应的情况

问题描述&#xff1a; Dev-C编译cpp文件读取输入直到文件结束 while (scanf("%s", str[num]) ! EOF)没反应 如图&#xff1a; 下列代码要实现的功能是从标准输入中读取一系列字符串&#xff0c;然后将这些字符串以相反的顺序输出到标准输出中。 #include <bit…

Java项目:74 ssm基于Java的超市管理系统+jsp

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 功能包括:商品分类&#xff0c;供货商管理&#xff0c;库存管理&#xff0c;销售统计&#xff0c;用户及角色管理&#xff0c;等等功能。项目采用mave…

Visual Basic6.0零基础教学(4)—编码基础,数据类型与变量

编码基础,数据类型与变量 文章目录 编码基础,数据类型与变量前言一、VB中的编程基础二、VB的基本字符集和词汇集1、字符集2、词汇集 VB中的数据类型VB中的变量与常量一.变量和常量的命名规则二.变量声明1.用Dim语句显式声明变量三. 常量 运算符和表达式一. 运算符 1. 算术运算符…

Kotlin协程CoroutineScope命名空间CoroutineName,Kotlin

Kotlin协程CoroutineScope命名空间CoroutineName&#xff0c;Kotlin import kotlinx.coroutines.*fun main(args: Array<String>) {val myName CoroutineName("fly")runBlocking {CoroutineScope(Dispatchers.IO).launch {repeat(3) {val name coroutineCont…

代码随想录训练营Day32:● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II

122.买卖股票的最佳时机II 题目链接 https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/ 题目描述 思路 看完视频讲解之后豁然开朗啊简直了&#xff01;&#xff01;&#xff01; 统计后一天减去前一天&#xff0c;差值为正数的&#xff0c;再…

Java前缀和

一维前缀和&#xff1a; public class Main {private static final int N 100010;public static void main(String[] args) {int[] s new int[N];int[] a new int[N];int n 10;// 定义10个数for (int i 1; i < n; i) {a[i] (int) (Math.random() * 10);}for (int i 1…

小白如何兼职赚得第一桶金?六大网络赚钱方式让你轻松开启副业之旅

小白如何兼职赚得第一桶金&#xff1f;六大网络赚钱方式让你轻松开启副业之旅 无需担忧&#xff0c;以下是一些精心挑选的线上兼职建议&#xff0c;将助你迅速开启赚钱之旅。 1&#xff0c;参与网络调查&#xff1a;各大市场调研公司及品牌商常常需要了解消费者心声&#xff0c…

【QA】MySQL导出某数据库的所有数据为sql文件,包含建库命令、建表命令。

文章目录 前言Windows系统下 | mysqldump导出数据库数据Docker中导入初始化数据【补充】通过命令行&#xff0c;执行sql文件&#xff0c;将数据导入到数据库在MySQL外面执行在MySQL中执行 前言 我们在用docker部署mysql项目的时候&#xff0c;往往需要对数据库进行数据初始化。…