在之前的博客中我写了一篇基于SSM框架的登陆系统,SSM框架虽然让开发变得更加简单,但是太多的配置文件使得整体结构依旧不太简洁。在学习了SpringBoot之后,我想实现在尽可能不改变原来代码的情况下使用SpringBoot框架开发登陆注册系统,如果大家有兴趣也可以综合两篇博客看看SSM框架开发和SpingBoot框架开发出来的系统有什么样的区别。
创建SpringBoot项目的方法可参考我之前一篇博客,建完项目后新建在项目路径下新建四个包:controller:控制层用于控制转发;
service:服务层用于存放执行的服务,通过接口+实现类的形式
本项目的数据库操作依旧使用Mybatis,因此在resource包下新建一个mapper包,里面存放mapper.xml等映射文件。
配置文件的精简是SpringBoot的一个优势,在resources包下有application.properties,配置文件就在这里配置,因为要实现的功能比较简单,这里的配置文件也很简单
spring.datasource.url=jdbc:mysql://localhost:3306/mybatistest?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
mybatis.mapper-locations=classpath:mapper/*.xml
这里配置了数据库、SpringMvc的简单配置:说明jsp文件在/WEB-INF/jsp/路径下,以.jsp为后缀,还有Mybatis的mapper文件路径。这里没有写Mybatis的配置文件,在SpringbootApplication这个启动文件中加上dao层扫描接口,实现对dao层的扫描:
这里的代码我大部分直接从前面的SSM项目中拿了过来,首先编写实体类User:
public class User {
private String username;
private String password;
public User(String username, String password){
this.username=username;
this.password=password;
}
//省略getter and setter
}
编写UserDao接口:
public interface UserDao {
User select(User user);
}
在mapper包下创建mapper.xml,用于实现上面这个接口,查找该用户是否存在,mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sdxb.springbootexample.dao.UserDao">
<select id="select" parameterType="com.sdxb.springbootexample.entity.User" resultType="com.sdxb.springbootexample.entity.User">
select * from t_user where username = #{username} and password = #{password}
</select>
</mapper>
接下来编写服务相关代码,这里的UserService实现了查找用户的服务,如果用户名和密码正确,则返回用户信息,否则返回null,用接口+Impl实现类的方式呈现:UserService:
public interface UserService {
User get(User user);
}
UserServiceImpl,这里注意不要忘了Service注解
@Service("userService")
public class UserServiceImpl implements UserService {
@Resource
private UserDao userDao;
@Override
public User get(User user) {
// 通过Mapper的select方法查询用户
return userDao.select(user);
}
}
最后编写UserController的代码,首先进入login.jsp界面,如果用户名密码正确,跳转到user.jsp,否则继续保持login.jsp
@Controller
public class UserController {
// 注入UserService
@Resource
private UserService userService;
@RequestMapping(value = "/login")
public String login(User user) {
ModelAndView mv = new ModelAndView();
user = userService.get(user);
if (user != null) {
mv.addObject("user", user);
return "user";
} else {
return "login";
}
}
}
最后附上login.jsp和user.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>login</title>
</head>
<body>
<h1>用户登录界面</h1>
<br>
<form id="form" action="/login" method="post">
<table>
<tr>
<td>用户名</td>
<td><input id="username" name="username" value="" /></td>
</tr>
<tr>
<td>密码</td>
<td><input id="password-always-checkbox" name="password" /></td>
</tr>
<tr>
<td></td>
<td align="right"><input type="submit" value="提交"></td>
</tr>
</table>
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>User</title>
</head>
<body>
<h1>用户登录成功</h1>
<br>
欢迎您: ${user.username}
</body>
</html>
第四步:启动项目
SpringBoot项目的启动程序为创建项目后自动生成的SpringbootApplication,直接运行即可。如果控制台没有出现报错信息,则表示启动成功,在浏览器输入http://localhost:8080/login即可。
最后附上github源码:点击进入github