前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【每晚玩转一套ssm项目】jsp智能停车场管理系统

【每晚玩转一套ssm项目】jsp智能停车场管理系统

原创
作者头像
菜菜有点菜
发布2025-01-16 13:09:19
发布2025-01-16 13:09:19
2210
举报

一、前言

本文章教程手把手带你玩转ssm项目,曾经博主也是小白经过数个日夜终于将ssm玩透彻了。现在博主免费推出了【每晚玩转一套ssm项目】这一系列专栏,带你手把手上手ssm。请大家关注并监督我每晚更新哦~这个过程我也会从新人的角度总结出易错点并写道文章的最后。博主也是一枚在校大学生,现在带学弟学妹们入门ssm项目。在此之前你需要一定的计算机操作基础,现在我将带你,不需要写一行代码,从0到1搭建一个项目。

二、项目概览

前端

后台

三、使用的工具及运行环境

所谓工欲善其事必先利其器,首先你需要准备如下的工具。

IntelliJ IDEA 2023.2.2,Navicat Premium 15、微信开发者工具、HBuilderX、vscode等

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9

接着准备运行环境

我开发使用的电脑是笔记本,如下是我的配置哦~

这是我的java版本,建议搭建使用jdk8.0

mysql使用5.7x版本。到这里恭喜你运行环境就全部搭建完毕了。接下来可以畅快的开始跑jsp项目了

四、详细搭建步骤

导入数据库

首先导入数据库db.sql

右键数据库点击运行

好家伙,导入数据库报错了,,如下图所示。

错误代码

代码语言:txt
复制
[SQL] Query jspmn576i start
[ERR] 1046 - No database selected
[ERR] -- MySQL dump 10.13  Distrib 5.7.31, for Linux (x86_64)
--
-- Host: localhost    Database: jspmn576i
-- ------------------------------------------------------
-- Server version	5.7.31

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `chat`
--

DROP TABLE IF EXISTS `chat`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `chat` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `userid` bigint(20) NOT NULL COMMENT '用户id',
  `adminid` bigint(20) DEFAULT NULL COMMENT '管理员id',
  `ask` longtext COMMENT '提问',
  `reply` longtext COMMENT '回复',
  `isreply` int(11) DEFAULT NULL COMMENT '是否回复',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1615687365430 DEFAULT CHARSET=utf8 COMMENT='在线客服';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `chat`
--

LOCK TABLES `chat` WRITE;
/*!40000 ALTER TABLE `chat` DISABLE KEYS */;
INSERT INTO `chat` VALUES (61,'2021-03-14 01:00:27',1,1,'提问1','回复1',1),(62,'2021-03-14 01:00:27',2,2,'提问2','回复2',2),(63,'2021-03-14 01:00:27',3,3,'提问3','回复3',3),(64,'2021-03-14 01:00:27',4,4,'提问4','回复4',4),(65,'2021-03-14 01:00:27',5,5,'提问5','回复5',5),(66,'2021-03-14 01:00:27',6,6,'提问6','回复6',6),(1615684887226,'2021-03-14 01:21:26',11,NULL,'1',NULL,1),(1615687365429,'2021-03-14 02:02:44',1615687168826,NULL,'‍请问有地面停车场吗\r\n','没有\r\n',0);
/*!40000 ALTER TABLE `chat` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `cheweituizu`
--

DROP TABLE IF EXISTS `cheweituizu`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `cheweituizu` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `zuyongbianhao` varchar(200) DEFAULT NULL COMMENT '租用编号',
  `cheweiquyu` varchar(200) DEFAULT NULL COMMENT '车位区域',
  `cheweihao` varchar(200) DEFAULT NULL COMMENT '车位号',
  `cheweiweizhi` varchar(200) DEFAULT NULL COMMENT '车位位置',
  `tingfangshijia` int(11) DEFAULT NULL COMMENT '停放时价',
  `jinchangshijian` varchar(200) DEFAULT NULL COMMENT '进场时间',
  `likaishijian` datetime DEFAULT NULL COMMENT '离开时间',
  `tingfangshizhang` int(11) DEFAULT NULL COMMENT '停放时长',
  `zuyongjine` varchar(200) DEFAULT NULL COMMENT '租用金额',
  `yonghuming` varchar(200) DEFAULT NULL COMMENT '用户名',
  `chepaihao` varchar(200) DEFAULT NULL COMMENT '车牌号',
  `sfsh` varchar(200) DEFAULT '否' COMMENT '是否审核',
  `shhf` longtext COMMENT '审核回复',
  `ispay` varchar(200) DEFAULT '未支付' COMMENT '是否支付',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1615687461717 DEFAULT CHARSET=utf8 COMMENT='车位退租';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `cheweituizu`
--

LOCK TABLES `cheweituizu` WRITE;
/*!40000 ALTER TABLE `cheweituizu` DISABLE KEYS */;
INSERT INTO `cheweituizu` VALUES (41,'2021-03-14 01:00:27','租用编号1','车位区域1','车位号1','车位位置1',1,'进场时间1','2021-03-14 09:00:27',1,'租用金额1','用户名1','车牌号1','是','','未支付'),(42,'2021-03-14 01:00:27','租用编号2','车位区域2','车位号2','车位位置2',2,'进场时间2','2021-03-14 09:00:27',2,'租用金额2','用户名2','车牌号2','是','','未支付'),(43,'2021-03-14 01:00:27','租用编号3','车位区域3','车位号3','车位位置3',3,'进场时间3','2021-03-14 09:00:27',3,'租用金额3','用户名3','车牌号3','是','','未支付'),(44,'2021-03-14 01:00:27','租用编号4','车位区域4','车位号4','车位位置4',4,'进场时间4','2021-03-14 09:00:27',4,'租用金额4','用户名4','车牌号4','是','','未支付'),(45,'2021-03-14 01:00:27','租用编号5','车位区域5',
[SQL] Finished with error

不慌,分析以下原因。。手动先创建数据库。。

通过分析sql文件,我们可以看到数据库名称

代码语言:txt
复制
-- MySQL dump 10.13  Distrib 5.7.31, for Linux (x86_64)
--
-- Host: localhost    Database: jspmn576i
-- ------------------------------------------------------
-- Server version	5.7.31

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

新建数据库

执行sql脚本

出现以上信息,,说明数据库导入成功。

代码语言:txt
复制
[SQL] Query jspmn576i start
[SQL] Finished successfully

到这里说明数据库导入成功了。

idea导入项目

启动!qidon!!

点击open打开项目

选择项目

点ok,,点第一个。

等待加载依赖jar包。

项目导入完毕,,我们会发现猫死了。。。

导入tomcat小猫咪【重点】

点击Edit Configurations...

切换为我们电脑自带的tomcat小猫

切换完毕之后就看到小猫,,复活啦,,此时就能编译运行项目了

tomcat 启动!!!!!!!!!!

数据库配置与我的保持一致。。

代码语言:txt
复制
validationQuery=SELECT 1

jdbc_url=jdbc:mysql://127.0.0.1:3306/jspmn576i?useUnicode=true&characterEncoding=UTF-8&tinyInt1isBit=false
jdbc_username=root
jdbc_password=123456

#jdbc_url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=jspmn576i
#jdbc_username=sa
#jdbc_password=123456

编译运行项目

点击小三角运行项目,,然后点击锤子。。。可以看见正在构建项目

还需要配置

Project Default settings for all modules. Configure these parameters for each module on the Name: jspmn576i SDK:

13 java version "13.0.2"

显示以下s开的信息说明成功运行。

代码语言:txt
复制
2025-01-15 18:22:10 -6044 [RMI TCP Connection(2)-127.0.0.1] DEBUG   - Servlet 'SpringMVC' configured successfully
[2025-01-15 06:22:10,441] Artifact jspmn576i:war: Artifact is deployed successfully
[2025-01-15 06:22:10,442] Artifact jspmn576i:war: Deploy took 12,406 milliseconds
2025-01-15 18:22:12 -7885 [http-nio-8080-exec-1] DEBUG   - DispatcherServlet with name 'SpringMVC' processing GET request for [/jspmn576i/resources/fonts/themify.woff]
2025-01-15 18:22:12 -7889 [http-nio-8080-exec-1] DEBUG   - Looking up handler method for path /resources/fonts/themify.woff
2025-01-15 18:22:12 -7903 [http-nio-8080-exec-1] DEBUG   - Did not find handler method for [/resources/fonts/themify.woff]
2025-01-15 18:22:12 -7903 [http-nio-8080-exec-1] DEBUG   - Matching patterns for request [/resources/fonts/themify.woff] are [/resources/**]
2025-01-15 18:22:12 -7904 [http-nio-8080-exec-1] DEBUG   - URI Template variables for request [/resources/fonts/themify.woff] are {}
2025-01-15 18:22:12 -7906 [http-nio-8080-exec-1] DEBUG   - Mapping [/resources/fonts/themify.woff] to HandlerExecutionChain with handler [ResourceHttpRequestHandler [locations=[ServletContext resource [/resources/]], resolvers=[org.springframework.web.servlet.resource.PathResourceResolver@1d35b24]]] and 1 interceptor
2025-01-15 18:22:12 -7907 [http-nio-8080-exec-1] DEBUG   - Last-Modified value for [/jspmn576i/resources/fonts/themify.woff] is: -1
2025-01-15 18:22:12 -7915 [http-nio-8080-exec-1] DEBUG   - Skip CORS processing: response already contains "Access-Control-Allow-Origin" header
2025-01-15 18:22:12 -7938 [http-nio-8080-exec-1] DEBUG   - Null ModelAndView returned to DispatcherServlet with name 'SpringMVC': assuming HandlerAdapter completed request handling
2025-01-15 18:22:12 -7939 [http-nio-8080-exec-1] DEBUG   - Successfully completed request
2025-01-15 18:22:12 -7940 [http-nio-8080-exec-1] DEBUG   - Returning cached instance of singleton bean 'sqlSessionFactory'
2025-01-15 18:22:12 -8120 [http-nio-8080-exec-3] DEBUG   - DispatcherServlet with name 'SpringMVC' processing GET request for [/jspmn576i/resources/images/fav.png]
2025-01-15 18:22:12 -8120 [http-nio-8080-exec-3] DEBUG   - Looking up handler method for path /resources/images/fav.png
2025-01-15 18:22:12 -8125 [http-nio-8080-exec-3] DEBUG   - Did not find handler method for [/resources/images/fav.png]
2025-01-15 18:22:12 -8125 [http-nio-8080-exec-3] DEBUG   - Matching patterns for request [/resources/images/fav.png] are [/resources/**]
2025-01-15 18:22:12 -8125 [http-nio-8080-exec-3] DEBUG   - URI Template variables for request [/resources/images/fav.png] are {}
2025-01-15 18:22:12 -8125 [http-nio-8080-exec-3] DEBUG   - Mapping [/resources/images/fav.png] to HandlerExecutionChain with handler [ResourceHttpRequestHandler [locations=[ServletContext resource [/resources/]], resolvers=[org.springframework.web.servlet.resource.PathResourceResolver@1d35b24]]] and 1 interceptor
2025-01-15 18:22:12 -8125 [http-nio-8080-exec-3] DEBUG   - Last-Modified value for [/jspmn576i/resources/images/fav.png] is: -1
2025-01-15 18:22:12 -8128 [http-nio-8080-exec-3] DEBUG   - Null ModelAndView returned to DispatcherServlet with name 'SpringMVC': assuming HandlerAdapter completed request handling
2025-01-15 18:22:12 -8129 [http-nio-8080-exec-3] DEBUG   - Successfully completed request

访问网站后台

浏览器打开

代码语言:txt
复制
后台路径地址:localhost:8080/项目名称/jsp/login.jsp
前台路径地址:localhost:8080/项目名称/front/index.jsp (无前台不需要输入)

管理员账号:abo	
管理员密码:abo

可以直接复制我的这个网址:

代码语言:txt
复制
http://localhost:8080/jspmn576i/front/  首页
http://localhost:8080/jspmn576i/jsp/login.jsp 后台管理系统

五、代码功能片段讲解

登录功能实现

首先,@IgnoreAuth注解表示该接口不需要进行权限验证或身份认证,允许匿名访问。接着,@RequestMapping(value = "/login")定义了一个处理用户登录请求的方法。方法的参数包括username(用户名)、password(密码)、captcha(验证码)以及HttpServletRequest request(HTTP请求对象)。captcha用于防止恶意登录攻击,而request通常用来获取用户的IP等信息。方法体内,首先通过yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", username))查询数据库,检查是否存在该用户名对应的用户。如果没有找到用户或者密码与数据库中的密码不匹配,接口会返回一个错误提示“账号或密码不正确”。若用户名和密码验证通过,接下来调用tokenService.generateToken(user.getId(), username, "yonghu", "用户")生成一个Token。这个Token包含了用户的ID、用户名、用户类型等信息,是后续请求中进行身份验证的凭证。最后,接口通过R.ok().put("token", token)返回一个成功的响应,并将生成的Token包含在返回数据中,前端可以利用这个Token在之后的请求中进行身份验证。如果登录失败,则通过R.error("账号或密码不正确")返回错误信息。这个接口主要用于用户登录验证,并通过Token机制保障系统的安全性和用户身份的有效性。

代码语言:txt
复制
	/**
	 * 登录
	 */
	@IgnoreAuth
	@RequestMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", username));
		if(user==null || !user.getMima().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(), username,"yonghu",  "用户" );
		return R.ok().put("token", token);
	}

注册

注册实现通过@IgnoreAuth注解标识该接口不需要身份认证,允许匿名访问。@RequestMapping("/register")将该方法映射到注册请求的URL。当用户发送注册请求时,会通过@RequestBody YonghuEntity yonghu接收请求体中的用户信息,封装成YonghuEntity对象。接着,系统会检查数据库中是否已经存在相同用户名的用户,通过yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()))查询数据库中的用户。如果找到相同用户名的用户,接口返回错误信息"注册用户已存在"。如果用户名没有重复,生成一个新的用户ID(通过new Date().getTime()获取当前时间戳)并设置到yonghu对象中。然后,调用yonghuService.insert(yonghu)将新用户的信息插入数据库,完成用户注册。最后,返回一个成功的响应R.ok(),表示注册成功。

代码语言:txt
复制
	
	/**
     * 注册
     */
	@IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody YonghuEntity yonghu){
    	//ValidatorUtils.validateEntity(yonghu);
    	YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));
		if(user!=null) {
			return R.error("注册用户已存在");
		}
		Long uId = new Date().getTime();
		yonghu.setId(uId);
        yonghuService.insert(yonghu);
        return R.ok();
    }

前端登录页实现

  • <script>标签引入了jQuery库,文件路径是通过${pageContext.request.contextPath}动态获取的,这样可以确保在不同环境下正确加载文件。
  • <!--[if lt IE 9]><![endif]-->语法,添加了对IE6-8版本浏览器的HTML5元素支持的条件注释,确保较老版本的Internet Explorer能够正常渲染页面。
代码语言:txt
复制
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8">
<title>登陆</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">

<!-- Le styles -->
<script type="text/javascript"
	src="${pageContext.request.contextPath}/resources/assets2/js/jquery.min.js"></script>

<!--  <link rel="stylesheet" href="${pageContext.request.contextPath}/resources/assets2/css/style.css"> -->
<link rel="stylesheet"
	href="${pageContext.request.contextPath}/resources/assets2/css/loader-style.css">
<link rel="stylesheet"
	href="${pageContext.request.contextPath}/resources/assets2/css/bootstrap.css">
<link rel="stylesheet"
	href="${pageContext.request.contextPath}/resources/assets2/css/signin.css">

<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
        <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
<!-- Fav and touch icons -->
<link rel="shortcut icon"
	href="${pageContext.request.contextPath}/resources/assets2/ico/minus.png">
</head>

六、总结

在部署项目的过程中按照我的步骤来配置,并不会出错。我已经帮大家踩坑了。

大家放心按照教程操作~~~有需求咱评论区见。

各位社区同学可以按照我的教程来进行操作,,遇到问题请留言哦~~~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、项目概览
    • 前端
    • 后台
  • 三、使用的工具及运行环境
  • 四、详细搭建步骤
    • 导入数据库
    • idea导入项目
  • 导入tomcat小猫咪【重点】
    • 编译运行项目
    • 访问网站后台
  • 五、代码功能片段讲解
    • 登录功能实现
    • 注册
    • 前端登录页实现
    • 六、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档