Spring框架的导入
想要使用Spring框架需要导入Spring的插件
选择对应的插件位置,然后再重启IDEA即可
创建spring项目时选择spring,选择
之后的操作是设置自己项目的名称,之后选择web项目
之后就创建该项目即可
进入到项目中之后,该项目的底层还是一个maven项目,等待其自动加载maven所需要的依赖包,若等待其下载时间过长或者下载失败,则需要进入setting中搜索maven检查maven的路径配置是否出现问题,若maven配置没有问题,但依然失败,则可以刷新maven,或者删除maven存放下载包的文件夹repository中的所有内容,刷新让其重新下载。
SpringBoot的使用
spring项目下的src中有两个文件夹java和resources
Java:用于存放书写的的代码内容,其中有一个自动生成的Java文件Application,这是用于启动spring项目的Java文件,运行该文件就表示启动了一个spring项目,该项目不会自动停止,需要手动停止具体的项目内容需要自己去重新创建Java文件书写
resources:这是用来存放设计前端页面代码和配置文件的目录
Spring boot自动实现前后端的交互
实现方式:使用注解的方式实现前后端的交互
后端的数据传给前端,前端的数据返回给后端
spring会自动扫描包下面的所有类,如果这个类上有注解,Spring会通过反射创建当前类的对象(即做一个实例化的创建),同理若是方法上有注解则会将该方法绑定到一个地址上
@RestController:默认该类映射数据
@Controller:返回值默认只能映射页面,使用ResponseBody可以返回数据
@ResponseBody:表示方法返回的是数据,而不是一个页面
使用上述三种注解简单做一个登录页面:
首先简单设置前端的代码
关于前端代码需要在resources文件夹中的tempplates中创建一个login.html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登陆</title>
</head>
<body>
<form action="/user/login" method="get">
用户名:<input type="text" name="username"> <br>
密码:<input type="password" name="password">
<input type="submit" value="登录">
</form>
</body>
</html>
上述代码中创建了两个文本框和一个按钮
form行表示当点击登录按钮后跳转到所绑定地址的页面中
设置跳转页面的代码在Java中创建一个文件HtmlController
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class UserController {
public UserController() {
System.out.println("UserController已经在执行");
}
@GetMapping("/user/loginInfo")
public String loginInfo() {
return "login";
}
@GetMapping("/user/login")
@ResponseBody
public String login(String username,String password){
if(username.equals("root") && password.equals("123456")) {
// 这里设置用户名为root,密码为123456
return "登录成功,接收到数据为:" + username + "-----" + password;
}else{
return "登录失败,用户名或密码填写错误:" + username + "-----" + password;
}
}
}
代码解析:
构造方法:使得更明确地显示该类已经成功执行,加入一个构造方法,由于springboot会自动通过反射创建该类的实例化对象,而对象的创建又是通过构造方法来创建的,所以在创建该对象时会自动使用该构造方法从而执行其中的内容
loginInfo方法:该方法有一个标识为/user/loginInfo,使得在运行后,输入该标识可以执行其中的内容使其返回一个login,但是该方法中的内容只是返回一个字符串login
想要让其返回刚设计的前端页面login.xml,需要在resources中的application.properties配置文件中配置两个变量
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
这两个变量的设置完成之后会使得在执行loginInfo方法时,返回值不会再返回一个字符串,而是在当前项目中寻找一个页面,名称为login
@Controller:该注解所绑定该类的地址为localhost
login方法:上述前端页面点击登录后所跳转到的页面,使用@GetMapping为该方法添加一个标识使前端代码中所跳转的地址与该地址相同,但是由于只是做一个简单的反馈,所以这里输出的是一串数据而不是一个页面,所以方法上设置为@ResponseBody表示返回一个数据,返回登录成功和登录失败。
运行结果:运行Application文件后,在IDEA中可以看到该类已经成功执行
进入到浏览器中,输入localhost:8080/user/loginInfo,按下回车,会出现所设计的前端页面
输入一个成功的用户名和密码,按下回车
输入一个错误的用户名和密码
注意:由于Controller和RestController之间的区别,一般情况下使用Controller,因为使用Controller可以实现返回数据和页面,只不过在实现返回数据时在所要返回数据的方法上加入一个ResponseBody注解即可,而RestController只能返回数据,不能返回页面