SSM+HTML搭建(小白教学)

news2024/10/3 0:26:49

最近做项目,觉得还是有意义记录以下前后端框架是怎么搭建的,今天给大家介绍介绍

SSM:SpringBoot+SpringMVC+MyBatis

后端搭建:

  • SpringBoot快速搭建的网站(Spring Initializr)

选择创建之后,会下载到一个zip压缩包,对压缩包进行解压(包地址一般选择后端项目的放的文件夹中)

  • 用idea打开项目,并配置依赖

在项目中会用到SpringBoot、SpringMvc、mysql、lombok、MyBatis、maven

在pom.xml中导入依赖:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.6</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>meeting</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>meeting</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.8.2</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

在Springboot中如果出现出现编译错误,记得在Maven中进行清除和重新编译

  • Springboot配置

在resources文件中创建application.xml文件夹,然后在这个文件中对Spriongoot进行配置

#定义后端端口号
server:
  port: 8080
#spring
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/meet?serverTimezone=Asia/Shanghai#数据库地址
    username: root#数据库账号
    password: root#数据库密码
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 5  #初始化时建立物理连接的个数   数据库连接池相关的配置
    minIdle: 1 #最小连接池数量
    maxActive: 20#最大活跃量
 main:
    allow-circular-references: true #循环依赖开启
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher
  #jackson:
    #date-format: yyyy-MM-dd HH:mm:ss
    #time-zone: GMT+8
    #和实体类中的注解功能相同 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
#mybatis
mybatis:
  type-aliases-package: com.example.meeting.model#mapper文件中的全类名
  mapper-locations: classpath:mappers/*Mappers.xml#扫描映射mappers的地址
  configuration: #mybatis settings配置
    map-underscore-to-camel-case: true #开启自动映射
    cache-enabled: true
  • 三层架构

  1. Dao层(对数据库操作的方法 接口 )

注解:@Repository

  1. Service层(对业务进行操作)

注解:@Service

@Transactional

  1. Crotroller层(前后端进行数据交互)

注解:@RestController

@RequestMapping("地址")

  1. model类(自己定义的实体类)

注解:@Component

@Data

@Setter

@Getter

  1. 启动类(启动项目)

@MapperScan(“扫描dao层的地址”)

@SpringBootApplication

后端编码格式:

  • 在resources文件中创建一个mapper目录,在里面写../Mappers.xml文件,用于启动类启动时进行扫描,对数据库进行操作

前端搭建:

  • 搭建一个前端项目

  • 安装组件

  1. npm i vue-router@3.5.3 //路由管理器组件

  1. npm i element -ui S//桌面端组件库

  1. npm install axios//HTTP网络端的请求库

  • 配置index.js

import Vue from 'vue';
import router from 'vue-router';/* 导入路由 */
import Login from '../Login.vue';/* 导入其他组件 */
import Main from '../Main.vue';/* 导入其他组件 */

Vue.use(router);
var rout = new router({
routes: [
{
path: '/login',//路由地址
name: 'Login',
component: Login//组件名
},
{
path: '/main',
name: 'Main',
component: Main,
children:[
   //子组件 
},
]
}
);

//添加路由导航守卫,每次发生路由时触发,to.path你要去的页面
rout.beforeEach((to,from,next)=>{
if(to.path=="/login"||to.path=="/userlogin"||to.path=="/userrigin"){//如果用户访问的登录页,直接放行
return next();
}else{
//给浏览器缓存account
var account =sessionStorage.getItem("account");
if(account==null){
return next("/userlogin");
}else{
 return next();//已经登录
}
}
})
//导出路由对象
export default rout;
  • 配置main.js

//main.js是项目核心配置文件
//导入vue.js
import Vue from 'vue'
//导入一个默认的组件
import App from './App.vue'

Vue.config.productionTip = false

 //导入路由组件   ./表示当前目录
import router from "./router/index.js";
Vue.use(router);

//导入ElementUI框架, 会导入ElementUI中所有的组件
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);

//导入 axios
import axios from 'axios';
//设置访问后台服务器地址
axios.defaults.baseURL="http://localhost:8080/";//前端响应后端设置的URL
//将 axios 挂载到 vue 全局对象中,使用 this 可以直接访问
Vue.prototype.$http=axios;
//axios 请求拦截
axios.interceptors.request.use(config =>{
//为请求头对象,添加 Token 验证的 token 字段
config.headers.adminToken =sessionStorage.getItem('adminToken');//接收adminToken
config.headers.userToken =sessionStorage.getItem('userToken');//接收userToken
return config;
})
// 添加响应拦截器
axios.interceptors.response.use((resp) =>{//正常响应拦截
if(resp.data.code==500){
ElementUI.Message({message:resp.data.message,type:"error"})
}
if(resp.data.code==202){
sessionStorage.clear();
router.replace("/userlogin");
}
return resp;
});

//创建项目中唯一的一个vue对象
new Vue({
  render: h => h(App),  //默认将app.vue组件加载到唯一的index.html中的<div id="app">div上面,
  router,
}).$mount('#app')
  • 配置App.vue

<<template>
  <div id="app">
      <!-- router-view就是用来显示不同组件的,就向一个画布-->
      <router-view></router-view>
  </div>
</template>

<script>

/* 导出组件,并为组件定义数据,函数,生命周期函数 */
 export default{
     data(){
         return{
        
         }
     }
 }
</script>

<style>

</style>

在前端向后端申请请求的时候,会出现跨域的问题,以至于前端和后端不能正常连接,在这里的话,我们就有必要在后端进行设置一个过滤器,代码如下:

package com.example.meeting.config;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

import java.util.Collections;

@Configuration
public class CorsConfig {

    @Bean
    public CorsFilter corsFilter() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        //1,允许任何来源
        corsConfiguration.setAllowedOriginPatterns(Collections.singletonList("*"));
        //2,允许任何请求头
        corsConfiguration.addAllowedHeader(CorsConfiguration.ALL);
        //3,允许任何方法
        corsConfiguration.addAllowedMethod(CorsConfiguration.ALL);
        //4,允许凭证
        corsConfiguration.setAllowCredentials(true);

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", corsConfiguration);
        return new CorsFilter(source);
    }
}

下面提供以下最近做的一个签到项目,供大家参考(代码稍微有点多!!!!):

本次项目的(后端代码),(前端代码)

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

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

相关文章

每日学术速递2.24

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.LG 1.BUAA_BIGSCity: Spatial-Temporal Graph Neural Network for Wind Power Forecasting in Baidu KDD CUP 2022 标题&#xff1a;BUAA_BIGSCity&#xff1a;百度KDD CUP 2022风电预测…

警惕!黑客正疯狂实施网络攻击,网站该如何防范?

自2021年以来&#xff0c;ATW组织宣称披露涉我国重要信息系统源代码、数据库等敏感信息70余次&#xff0c;涉及国家重要政府部门、航空、基础设施等100余家单位的300余个信息系统&#xff0c;尤其2022年以来&#xff0c;ATW组织滋扰势头加剧&#xff0c;持续对中国的网络目标实…

数据结构预算法之买股票最好时机动态规划(可买卖多次)

一.题目二.思路在动规五部曲中&#xff0c;这个区别主要是体现在递推公式上&#xff0c;其他都和上一篇文章思路是一样的。所以我们重点讲一讲递推公式。这里重申一下dp数组的含义&#xff1a;dp[i][0] 表示第i天持有股票所得现金。dp[i][1] 表示第i天不持有股票所得最多现金如…

【Http1.0和Http1.1的区别?Http1.1和Http2.0的区别?】

计算机网络面试的相关知识你可不能不知道呀&#xff01;Http1.0和Http1.1的区别&#xff1f;Http1.1和Http2.0的区别&#xff1f; Http1.0和Http1.1的区别&#xff1f; 连接方式 : HTTP 1.0 为短连接&#xff0c;HTTP 1.1 支持长连接。状态响应码 : HTTP/1.1中新加入了大量的状…

小型水库大坝安全监测的主要对象

一、监测背景 大坝监测的目的分成两个大的方面&#xff0c;一方面是为了验证设计、指导施工、为科研提供必要的资料&#xff1b;另一方面&#xff0c;也可以说是更重要的方面&#xff0c;就是为了长期监视大坝的安全运行。因此&#xff0c;一个成功的监测设计者不仅要能充分领会…

Vmware 虚拟机无法联通主机

问题描述&#xff1a;今天使用Vmware Workstation 创建CentOS-7 虚拟机&#xff0c;基于CentOS-7 搭建Hadoop3 伪分布式版本&#xff0c;CentOS-7 测试Hadoop 3 服务正常启动&#xff0c;通过主机连接Hadoop 3的管理平台&#xff0c;提示如下错误信息&#xff1a;尝试解决办法&…

Android---Handler 源码解析

在 android 开发中&#xff0c;经常会在子线程中进行一些操作&#xff0c;当操作完后会通过 handler 发送一些数据给主线程&#xff0c;通知主线程做响应的操作。原理&#xff1a;子线程 handler 主线程&#xff0c;其实构成了线程模型中的经典问题&#xff0c;生产者-消费者模…

HHDESK文本对比功能

对比文件夹和图片而言&#xff0c;文本的更改更加频繁且琐碎&#xff1b;个别词语的更改更是让人“健忘”。 如果有一款工具能够直观的对文本进行对比&#xff0c;并且清晰的划分显示&#xff0c;那么便可以大量节约办公人员的精力和时间。 1 文本对比功能简介 版本更新&…

Ubuntu20.04配置深度学习环境

Ubuntu20.04配置深度学习环境 对于一台新Ubuntu20.04主机&#xff0c;想要直接进行深度学习模型的训练&#xff0c;需要进行一些常规配置。本文针对的情况包括物理机和虚拟机。安装部分本文不介绍&#xff0c;只介绍配置环境部分。 1. 安装中文输入法 参考如下博客&#xff…

Web安全最详细学习路线指南,从入门到入职(含书籍、工具包)

在这个圈子技术门类中&#xff0c;工作岗位主要有以下三个方向&#xff1a; 安全研发 安全研究&#xff1a;二进制方向 安全研究&#xff1a;网络渗透方向 下面逐一说明一下. 第一个方向&#xff1a;安全研发 你可以把网络安全理解成电商行业、教育行业等其他行业一样&#x…

《卓有成效的管理者》系列-总结篇

作者【美】彼得-德鲁克简介书中提到&#xff0c;每一位知识工作者其实都是管理者&#xff0c;而且卓有成效是每个管理者必须做到的事。书中认为所有负责行动和决策而且能够提高机构工作效率的人&#xff0c;都应该像管理者一样工作和思考。而且&#xff0c;一位卓有成效的管理者…

自考都有哪些科目?怎么搭配报考?

第一次自考科目搭配 先报理论课&#xff0c;熟悉学习和考试套路 参考搭配模式&#xff1a; 一、全报考公共课 公共课难度较低&#xff0c;通过率高&#xff0c;复习起来比较轻松。对于不确定考什么专业&#xff0c;后期想换专业的同学&#xff0c;考过公共课&#xff0c…

记一次Binder内存不足导致的应用被杀

每个进程的可用Binder内存大小是 1M-8KB 也就是900多KB 事情的起因的QA压测过程发生进程号变更&#xff0c;怀疑APP被杀掉过&#xff0c;于是开始看日志&#xff08;实际后来模拟的时候可以发现app确实被杀掉了&#xff09; APP的压测平台会上报进程号变更时间点&#xff0c;发…

基于C++环境的gRPC安装配置:vcpkg+CMake+VS2022

前言gRPC 是 Google 提供的一个 RPC 框架&#xff0c;用于在网络上实现多个应用程序之间的通信。gRPC的优点是支持多种语言&#xff0c;因此可以轻松使用C应用程序与Go或Python应用程序进行通信。尽管CSDN、知乎有很多讲解gRPC在C环境安装的文章&#xff0c;其中最常见的是使用…

LaneAF论文解读和代码讲解

论文地址&#xff1a;https://arxiv.org/abs/2103.12040 一、论文简介 LaneAF是一个语义分割聚类后处理的一种方法。相对于之前的用聚类算法对embedding分支聚类的方法&#xff0c;该论文提出了水平和垂直两个向量场&#xff0c;用来取缔之前的普通聚类。根据向量场就可以完成…

HashMap红黑树源码解读

链表转换为红黑树节点当往hashMap中添加元素&#xff0c;在同一个hash槽位挂载的元素超过8个后&#xff0c;执行treeifyBin方法。在treeifyBin方法中&#xff0c;只有当tab数组&#xff08;hash槽位&#xff09;的长度不小于MIN_TREEIFY_CAPACITY&#xff08;默认64&#xff09…

modbus协议

1 MODBUS 应用层报文传输协议 ADU应用数据单元PDU协议数据单元MBMODBUS协议MBAPMODBUS协议 ADU&#xff1a;地址域 PDU 差错校验PDU&#xff1a;功能码数据 串行链路&#xff1a; 最大RS485 ADU 256 字节PDU 256 - 服务器地址&#xff08;1字节&#xff09;- CRC&#xf…

Linux学习(7)文件权限与目录配置

目录 1. 使用者与群组 1&#xff0c;文件拥有者 2&#xff0c;群组概念 3&#xff0c;其他人 Linux 用户身份与群组记录的文件 2.Linux 文件权限概念 Linux的文件属性 第一栏代表这个文件的类型与权限(permission)&#xff1a; 第二栏表示有多少档名连结到此节点(i-no…

linux CUDAtoolkit+cudnn+tensorrt 的安装

windows上 CUDAtoolkitcudnn的安装 CUDAtoolkitcudnn的安装 须知 use command ubuntu-drivers devices查看你的显卡类型和推荐的驱动版本百度 nvidia-driver-*** 支持的 cuda 或 去文档查找驱动(比如450&#xff0c;460)匹配的cuda版本 下载 网盘下载 https://www.aliyundr…

Python实现贝叶斯优化器(Bayes_opt)优化Catboost回归模型(CatBoostRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。1.项目背景贝叶斯优化器 (BayesianOptimization) 是一种黑盒子优化器&#xff0c;用来寻找最优参数。贝叶斯优化器是…