https://maven.apache.org/download.cgi
下载解压,修改conf下的setting.xml,优先从阿里云镜像拉取关联包
<mirrors>
<mirror>
<id>alimavenid>
<name>aliyun mavenname>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
<mirrorOf>centralmirrorOf>
mirror>
<mirror>
<id>maven.net.cnid>
<name>oneof the central mirrors in chinaname>
<url>http://maven.net.cn/content/groups/public/url>
<mirrorOf>centralmirrorOf>
mirror>
<mirror>
<id>centralid>
<name>Maven Repository Switchboardname>
<url>http://repo1.maven.org/maven2/url>
<mirrorOf>centralmirrorOf>
mirror>
mirrors>
修改本地maven库路径
d:\localRepository
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
地址:http://localhost:8080/hello
1、在class或method上加上【@CrossOrigin(“*”)】,解决跨域问题
新建【config】package,添加自定义的跨域java文件
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedHeaders("*")
.allowedMethods("*")
.maxAge(1800)
.allowedOrigins("*");
}
}
前端访问路径:http://127.0.0.1/user/login?userName=zs&pwd=123
后端Java代码:
@RequestMapping("/login")
public Map login(HttpServletRequest request , HttpServletResponse response) {
// URL: http://127.0.0.1/user/login?userName=zs&pwd=123
Map map = new HashMap();
map.put("code" , 200);
map.put("msg" , "success");
//第一种方式接收入参
String userName = request.getParameter("userName");
String pwd = request.getParameter("pwd");
return map;
}
前端访问路径:http://127.0.0.1/user/login?userName=zs&pwd=123
后端Java代码:
@RequestMapping("/login")
public Map login(@RequestParam(value="name" ,required=true) String userName,
@RequestParam(value="pwd" ,required=true) String password,
HttpServletResponse response) {
// @RequestParam(value="name" ,required=true) required=true传入的值不允许为空
// URL: http://127.0.0.1/user/login?userName=zs&pwd=123
//第二种方式接收入参
System.out.println(userName + "||" + password);
Map map = new HashMap();
map.put("code" , 200);
map.put("msg" , "success");
return map;
}
前端访问路径:http://127.0.0.1/user/logintwo/zs/123
后端Java代码:
@RequestMapping("/logintwo/{userName}/{pwd}")
public Map loginTwo(@PathVariable String userName,
@PathVariable String pwd) {
// URL: http://127.0.0.1/user/logintwo/zs/123
//第三种方式接收入参
System.out.println(userName + "||" + pwd);
Map map = new HashMap();
map.put("code" , 200);
map.put("msg" , "success");
return map;
}
前端JavaScript代码:
//针对@RequestBody 接收入参的前端ajax请求
$.ajax({
url: "http://localhost:8089/api/Home",
data: JSON.stringify(obj),
method: "post",
dataType: "json",
contentType: 'application/json',
success: function (data) {
console.log(data)
if (data.code == 200) {
alert("登录成功");
} else {
alert("登录失败:" + data.msg);
}
}
后端Java代码:
@PostMapping("/register")
public Map register(@RequestBody User user) {
// URL: http://127.0.0.1/user/register/
// {userName:xxx,pwd:xxx}
//第四种方式接收入参
System.out.println(new Gson().toJson(user) );
Map map = new HashMap();
map.put("code" , 200);
map.put("msg" , "success");
return map;
}
starter 中整合了该场景下各种可能用到的依赖,用户只需要在 Maven 中引入 starter 依赖,SpringBoot 就能自动扫描到要加载的信息并启动相应的默认配置
比如:
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.6.13version>
<relativePath/>
parent>
Spring Boot 项目可以通过继承 spring-boot-starter-parent 来获得一些合理的默认配置,它主要提供了以下特性:
springBoot 默认使用以下 2 种全局的配置文件,其文件名是固定的。
server.port= 8081
server:
port: 8081
YAML 全称 YAML Ain’t Markup Language,比xml更适合做配置文件
YAML 的语法如下:
比如:
server:
port: 8081
spring:
profiles: dev
datasource:
url: xxxxxxxxx
使用缩进表示对象与属性的层级关系
user:
name: Kelvin
gender: 男
行内写法:
user: {name: Kelvin,gender: 男}
使用-表示集合元素
hobbyList:
- run
- badminton
- mountain climb
或
hobbyList: [run,badminton,mountain climb]
使用,表示数组元素
hobbies:run,badminton,mountain climb
数值、日期、字符串等
YAML组织结构:一个文件可有多个文档组成,文档之间用“—”分隔
SpringBoot 提供了以下 2 种方式进行配置绑定:
定义JavaBean
user:
userName: Kelvin
gender: 男
# 对应的Bean文件里的数组
hobbies: run, badminton, mountainclimb
# 对应的Bean文件里的List
hobbyList:
- run
- badminton
- mountainclimb
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 用户实体类
*/
@Data
@Component
@ConfigurationProperties(prefix = "user")
public class User {
/**
* 名字
*/
// @Value("${user.userName}")
private String userName;
/**
* 性别
*/
// @Value("${user.gender}")
private String gender;
/**
* 爱好
*/
// @Value("${user.hobbies}")
private String[] hobbies;
/**
* 爱好
*/
private List<String> hobbyList;
public User() {
}
}
@SpringBootTest
class SpringbootApplicationTests {
/**
* 用户实体类对象
*/
@Autowired
private User user;
@Test
void contextLoads() {
System.out.println("#############user: " + user);
}
}
打印日志:#############user: User{name=‘Kelvin’, gender=‘男’, hobbies=[run, badminton, mountainclimb]}
/**
* 用户实体类
*/
@Component
public class User {
/**
* 名字
*/
@Value("${user.userName}")
private String userName;
/**
* 性别
*/
@Value("${user.gender}")
private String gender;
/**
* 爱好
*/
private String[] hobbies;
}
@Value 和 @ConfigurationProperties 两个注解之间,并没有明显的优劣之分,它们只是适合的应用场景不同而已。
@PropertySource(value =“classpath:userinfo.properties”)
定义配置文件
user.userName=Tiger
user.gender=男
user.hobbies=run,badminton,mountainclimb