基于IDEA创建Spring boot 项目实现登陆注册(Spring的学习之旅 二)
前言
说实话,小编写博客真的喜欢写的很详细的,这一篇文章小编带大家做一做如何完成登陆与注册操作,话不多说我们开始吧。
如何创建spring boot 项目以及配置Idea请访问
link.https://blog.csdn.net/weixin_43055096/article/details/87881113
主体内容
- 配置pom.xml,点击pom.xml,大家看到的controller dao entity这些文件夹,不要急后面会说。
这是小编的pox.xml配置的一部分,大家可以参考一下,如何大家的Meave配置成功我们的项目是可以自动导入jar包的(啊哈哈哈哈,这就meave的强大),如果大家不清楚,请点击右上角的那个复制。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
</dependencies>
此时我们在点击application.properties文件,这个文件非常重要,到底有多么重要呢,就像…
点击进入,以下就是里面的配置文件,在这里每个人前四行配置是不一样的,而spring.thymeleaf.cache=false,这里我们在项目调试的时候要设置成false。
spring.datasource.url = jdbc:mysql://localhost:3306/day01?serverTimezone=UTC
spring.datasource.username = root
spring.datasource.password = 1234
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.jpa.database = MYSQL
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = update
spring.thymeleaf.cache=false
我们做到这里,配置就算是完成了,咋们下面就按照小编的模式完成项目的主要类与接口
上面写完之后
咋们想创建实体类,也就是User,一定要注意小编的注解
package com.example.demo.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue
private int id;
private String username;
private String password;
public User(String username, String password) {
this.username = username;
this.password = password;
}
public User(){
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
@Id 表示主键
@GeneratedValue 表示自增长
@Entity 表示这是个实体类,强大的地方就在于他可以自动创建与实体类对应的表,
现在来到UserDao
package com.example.demo.dao;
import com.example.demo.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
@Repository
public interface UserDao extends JpaRepository<User,Integer> {
@Query(value = "select * from user where username=:username and password=:password",nativeQuery = true)
User findUserByUsernameAndPassword(String username,String password);
}
JpaRepository<User,Integer>,里面的两个参数第一个一定要是目前你要用到的实体类
@Query 就是我们主要的写sql的方式了
现在再来到 UserService 这是个接口,为了让项目规范,小编就不随意了
package com.example.demo.service;
import com.example.demo.entity.User;
public interface UserService {
User findUserByUsernameAndPassowrd(String username,String password);
boolean addUser(User u);
}
回到UserServiceImp这个类是一个实现类
package com.example.demo.service;
import com.example.demo.dao.UserDao;
import com.example.demo.entity.User;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class UserServiceImp implements UserService{
@Resource
private UserDao ud;
@Override
public User findUserByUsernameAndPassowrd(String username, String password) {
return ud.findUserByUsernameAndPassword(username,password);
}
@Override
public boolean addUser(User u) {
return ud.save(u)!=null;
}
}
@Resource
private UserDao ud; 这句话的意思是实现UserDao,说白了就是可以直接调用UserDao的所有方法。而且ud自带了一些方法,比如sava这个方法就是我们保存数据的一个主要方式。
现在就是controller了 我们先写UserController
package com.example.demo.controller;
import com.example.demo.entity.User;
import com.example.demo.service.UserServiceImp;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@RestController
public class UserController {
@Resource
private UserServiceImp usi;
//以下是登录
@RequestMapping(value = "/userLogin/submit",method = RequestMethod.POST)
public boolean userLogin(HttpServletRequest request){
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username);
if (usi.findUserByUsernameAndPassowrd(username,password)==null){
return false;
}
return true;
}
//以下是注册
@RequestMapping(value = "/userRegister/submit",method = RequestMethod.POST)
public boolean userRegister(HttpServletRequest request){
String username = request.getParameter("username");
String password = request.getParameter("password");
User u =new User(username,password);
return usi.addUser(u);
}
}
注意两点 通过映射来找到地址 @RequestMapping
value就是地址这里是自己写的,methed就是提交方式,之后小编会用from提交,当然ajax提交是最好的,不过我懒,,,,,,
还有别忘了写@RestController这个标签,一定要分清楚@RestController与@Controller的区别
好啦,现在就是UserNodeController,这里就用的是@Controller,因为这个类是为了返回结点。
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class UserNodeController {
@RequestMapping(value = "/index")
public String index(){
return "/index";
}
}
我们开始在这里创建index了
一下是Index的代码,大家注意看action 与我们上面的UserController里面的value。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
登陆
<form action="/userLogin/submit" method="post">
账号 <input type="text" name="username"/> <hr>
密码 <input type="password" name="password"/>
<input type="submit" value="提交">
</form>
<hr>
注册
<form action="/userRegister/submit" method="post">
账号 <input type="text" name="username"/> <hr>
密码 <input type="password" name="password"/>
<input type="submit" value="提交">
</form>
</body>
</html>
点击运行