本文章教程手把手带你玩转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
右键数据库点击运行
好家伙,导入数据库报错了,,如下图所示。
错误代码
[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文件,我们可以看到数据库名称
-- 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脚本
出现以上信息,,说明数据库导入成功。
[SQL] Query jspmn576i start
[SQL] Finished successfully
到这里说明数据库导入成功了。
启动!qidon!!
点击open打开项目
选择项目
点ok,,点第一个。
等待加载依赖jar包。
项目导入完毕,,我们会发现猫死了。。。
点击Edit Configurations...
切换为我们电脑自带的tomcat小猫
切换完毕之后就看到小猫,,复活啦,,此时就能编译运行项目了
tomcat 启动!!!!!!!!!!
数据库配置与我的保持一致。。
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开的信息说明成功运行。
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
浏览器打开
后台路径地址:localhost:8080/项目名称/jsp/login.jsp
前台路径地址:localhost:8080/项目名称/front/index.jsp (无前台不需要输入)
管理员账号:abo
管理员密码:abo
可以直接复制我的这个网址:
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机制保障系统的安全性和用户身份的有效性。
/**
* 登录
*/
@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()
,表示注册成功。
/**
* 注册
*/
@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能够正常渲染页面。<%@ 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 删除。