prop.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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.baizhi</groupId>
<artifactId>springBoot-01</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.4</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.13</version>
</dependency>
</dependencies>
</project>
Application.class可以代替tomcat 启动服务器;执行main函数,就启动服务器
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.baizhi.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
唯一的配置文件
application.yml
server:
port: 8989
servlet:
context-path: /spring-day01
spring:
datasource:
url: jdbc:mysql://localhost:3306/videoshare?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
jackson:
date-format: yyyy-MM-dd
time-zone: GMT+8
resources:
static-locations: file:${imgPath}
servlet:
multipart:
max-request-size: 3MB #设置总的请求大小
max-file-size: 2MB #设置单个文件上传的大小
imgPath: F:\myImg #文件上传后保存的地址
#contoller可以通过@Value("${imgPath}") private String path;获取该地址
mybatis:
type-aliases-package: com.baizhi.entity
mapper-locations: com/baizhi/mapper/*.Mapper.xml
前后端分离技术:解决跨域问题 添加一个过滤器
AccessControlAllowFilter.class
package com.baizhi.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class AccessControlAllowFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException { }
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("................");
HttpServletRequest httpServletRequest = (HttpServletRequest)request;
HttpServletResponse httpServletResponse = (HttpServletResponse)response;
httpServletResponse.setHeader("Access-Control-Allow-Origin",httpServletRequest.getHeader("Origin"));
httpServletResponse.setHeader("Access-Control-Allow-Credentials","true");
httpServletResponse.setHeader("P3P","CP=CAO PSA OUR");
httpServletResponse.setHeader("Access-Control-Allow-Credentials", "true");//允许携带cookie
if("OPTIONS".equalsIgnoreCase(httpServletRequest.getMethod())) {
httpServletResponse.setHeader("Access-Control-Allow-Headers", "Content-Type,Origin,Accept");
httpServletResponse.setHeader("Access-Control-Allow-Methods", "POST,GET,HEAD,PUT,DELETE,TRACE,OPTIONS");
httpServletResponse.setHeader("Access-Control-Max-Age","18000");
}
chain.doFilter(request,response);
}
@Override
public void destroy() { }
}
配置过滤器
MywebConfig.class
@Configuration
public class MywebConfig implements WebMvcConfigurer {
@Bean
public FilterRegistrationBean filterRegist() {
FilterRegistrationBean frBean = new FilterRegistrationBean();
frBean.setFilter(new AccessControlAllowFilter());
frBean.addUrlPatterns("/*");
return frBean;
}
}
在vue脚手架中项目中下载axios 在vue项目中执行
>
//初始化项目 vue init webpack 项目名
vue init webpack vue-cli-test
//下载axios
npm install --save axios vue-axios qs
//下载vuex
npm install vuex --save
在main.js中
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import qs from 'qs'
import axios from 'axios'
import VueAxios from 'vue-axios'
import store from './store'
//在所有的Vue组件中可以通过this.$qs使用qs库
Vue.prototype.$qs = qs
//配置后端服务地址
axios.defaults.baseURL="http://localhost:8989/test"
//在Vue中配置axios,在所有的Vue组件中就可以通过this.axios使用axios库
Vue.use(VueAxios,axios)
Vue.config.productionTip = false
//添加的配置
axios.defaults.withCredentials = true
//引入ElementUI
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
//配置使用ElementUI
Vue.use(ElementUI)
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
store,
components: { App },
template: '<App/>'
})
vuex store包下的 index.js
import Vuex from 'vuex'
import Vue from 'vue'
Vue.use(Vuex)
export default new Vuex.Store({
state:{
categoryId:-1
},
actions:{
changeCategoryId(context,id){
context.commit("changeCategoryId",id);
}
},
mutations:{
changeCategoryId(state,id){
state.categoryId = id;
}
}
})