分享一个我学习springboot自己写的一个登录案例,初学者可以参考用,因为自己不语言表达能力不是很好,所以只是源码+简单的描述,不过如果初学者们碰到了什么问题的话可以留言问我。
首先老套路,我先将我的项目目录结构展示出来,朋友们可以按照我的结构来创建,争取一次性成功理解后,再按照你们的思路自己来。
OK,首先我先将pom.xml文件里面的配置信息展示出来
<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.jsb</groupId>
<artifactId>Test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent >
<groupId> org.springframework.boot </groupId>
<artifactId> spring-boot-starter-parent </artifactId>
<version> 1.3.0.RELEASE </version>
</parent >
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<!-- 添加 web 应用的依赖 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</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-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!-- thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
<!-- 把项目打成jar包运行 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
需要配置thymeleaf模板,springBoot默认访问thymeleaf文件下的页面。
Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用。
Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。Thymeleaf的可扩展性也非常棒。你可以使用它定义自己的模板属性集合,这样就可以计算自定义表达式并使用自定义逻辑。这意味着Thymeleaf还可以作为模板引擎框架。
忘了说,这里我用的是mySql数据库,看依赖包应该也可以看出来的。
我们来看数据库的信息
application.properties的配置信息:
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=wzdsg
spring.datasource.password=1234
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jpa.database = mysql
mybatis.mapper-locations=classpath*:mapper/*.xml
mybatis.type-aliases-package=com.jsb.domain
实体类:
package com.jsb.domain;
/**
* @Title: User.java
* @Package com.jsb.domain
* @Description: 用户的实体类
* @author twelve
* @date 2018年1月19日 上午9:03:48
*
* @version V1.0
*/
public class User {
// id
private int id;
// 用户名
private String username;
// 密码
private String password;
public User() {
super();
}
public User(String username, String password, int id) {
super();
this.id = id;
this.username = username;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
}
mapper接口:
package com.jsb.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import com.jsb.domain.User;
/**
* @Title: UserMapper.java
* @Package com.jsb.mapper
* @Description: mapper映射
* @author twelve
* @date 2018年1月19日 上午10:33:53
*
* @version V1.0
*/
@Mapper
@Repository
public interface UserMapper {
public User getUserByName(String username);
}
DAO接口与实现类:
package com.jsb.dao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.jsb.domain.User;
import com.jsb.mapper.UserMapper;
/**
* @Title: UserDaoImpl.java
* @Package com.jsb.dao
* @Description: 持久层实现类
* @author twelve
* @date 2018年1月19日 上午10:35:53
*
* @version V1.0
*/
@Repository
public class UserDaoImpl implements UserDao{
// 注入mapper资源
@Autowired
private UserMapper userMapper;
@Override
public User findUserByName(String username) {
return userMapper.getUserByName(username);
}
}
service接口与实现类:
package com.jsb.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.jsb.dao.UserDao;
import com.jsb.domain.User;
/**
* @Title: UserServiceImpl.java
* @Package com.jsb.service
* @Description: 业务实现层
* @author twelve
* @date 2018年1月19日 上午9:57:55
*
* @version V1.0
*/
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserDao userDao;
@Override
public User login(String username, String password) {
// 根据用户名实例化用户对象
User user = userDao.findUserByName(username);
// 判断密码是否正确,如果正确返回user对象
if (null != user && user.getPassword().equals(password)) {
return user;
}
return null;
}
}
controller:
package com.jsb.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.jsb.domain.User;
import com.jsb.service.UserService;
/**
* @Title: UserController.java
* @Package com.jsb.controller
* @Description: 用户信息的控制层
* @author twelve
* @date 2018年1月19日 上午10:34:24
*
* @version V1.0
*/
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/")
public String index(){
return "index";
}
@RequestMapping("/login")
public String login(User user,Model model){
user = userService.login(user.getUsername(), user.getPassword());
if (null != user) {
return "success";
}
return "index";
}
}
Thymeleaf文件夹下的页面信息:
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>主界面</title>
</head>
<body>
<form method="post" action="../../login">
用户名:<input type="text" name="username" />
密码: <input type="password" name="password" />
<input type="submit" value="登录" />
</form>
</body>
</html>
success.html
登录成功就行,随便写。
启动application类: localhost:8080 就OK,测试成功。