今天无聊学习springboot 顺带整合了一下mybatis 做了一个登录功能
我用的编码工具是IDEA,首先创建项目
前面的项目创建过程就直接带过了,直接上干货
首先看springboot启动类,这个类一定的放在一级目录下(意思就是他所在的目录与其他包所在的目录平级,详细可见下面的目录图)
@SpringBootApplication @MapperScan("com.example.demo.dao") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
@SpringBootApplication是该类的必备注解,我就不解释了,MapperScan注解对应的是Mapper.xml对应的接口层,如下
import com.example.demo.entity.Users; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; @Mapper @Repository public interface UsersDao { public Users login(String username, String password); }我这里用的参数,其实也可以用对象的
@Mapper则是对应mybatis的mapper.xml
xml version="1.0" encoding="UTF-8"?> mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.demo.dao.UsersDao"> <select id="login" resultType="com.example.demo.entity.Users"> select * from users where username=#{param1} and password=#{param2} select> mapper>
这是我的mapper文件,而实体类是Users 类(项目结构图最后会奉上)
public class Users { private Integer id; private String username; private String password; private Integer age;
}后面的get set tostring 方法自动补全,我就不贴上去了,这里对应的是数据库的字段
然后是我的service层
@Service public class UsersService { @Autowired private UsersDao usersDao; public Users dologin(Users users) { users=this.usersDao.login(users.getUsername(), users.getPassword()); return users; } }这里吧DAO层依赖注入进来
再后是Controller层
@Controller public class InitController { @Autowired private UsersService userservice; @RequestMapping("/tologin.action") public String index() { return "login"; } @RequestMapping(value = "login.action") public ModelAndView login(Users users, HttpServletRequest request, HttpSession session) { ModelAndView mav = new ModelAndView(); String username = request.getParameter("username"); String password = request.getParameter("password"); users.setUsername(username); users.setPassword(password); users = this.userservice.dologin(users); if (users != null) { session.setAttribute("users", users); mav.setViewName("detail"); return mav; } else { session.setAttribute("errormsg", "账号或密码错误!请重新输入"); } mav.setViewName("login"); return mav; } }输入localhost:8080/tologin.action就可以访问到登录页,login.action则是对登录的操作
好了一连串的逻辑代码好像走完了,但是有些配置好像还没奉上
大家可以从这看到我的项目的目录结构;从这里可以看到Application启动类是直接放在com.example.demo下的
然后还有几点要注意
1.mapper文件要放在resources文件下,别问我为啥,因为这是IDEA,好像是java那边不支持解析xml
2.springboot也不是很提倡JSP,所以我写的是html页面但是里面也有个很重要的点,那就是
thymeleaf,他的写法和平常的是不同的 如下
html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>登录title>
<script th:src="@{/js/time.js}">script>
head>
<body>
<div id="regLogin" class="wrap" >
<div class="dialog">
<div class="box">
<h4><center>用户登录center>h4>
<form id="login.action" name="login.action" action="login.action" method="post">
<div class="infos" style="text-align:center;">
<table class="field"style="text-align:center;" >
<tr>
<td colspan="2" style="text-align:center; color:red">td>
tr>
<tr style="text-align:center ;margin-left:300px;">
<td class="field" style="color:black;"><center>用 户 名:center>td>
<td>
<input type="text" name="username" value="" id="username" class="text" required="true"/>
td>
tr>
<tr>
<td class="field">密 码:td>
<td>
<input type="password" name="password" id="password" class="text" required="true"/>
td>
tr>
table>
<div class="buttons">
<input type="submit" id="User_login_action_0" value="立即登录"/>
div>
div>
form>
<div id="result"><p th:text="${session.errormsg}">[]p>div>
div>
div>
div>
<h1>租房系统h1>
body>
html>
这里有几个地方要注意:1.第二行
<html xmlns:th="http://www.thymeleaf.org">这是引用thymeleaf的方式
2.因为的用的request.getParamenter方法取参数的方式,所以你们得登录名和密码的name属性一定要和controller里的相同(最好和数据库字段也相同)
3.第三点就是thymeleaf怎么从session,request中取值
<p th:text="${session.errormsg}">[]p>就是这样的
4.还有就是静态资源的引入
<script th:src="@{/js/time.js}">script>
然后就是detail页面了
html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
<p th:text="${session.users.id}">[]p>
<p th:text="${session.users.username}">p>
<p th:text="${session.users.password}">p>
<p th:text="${session.users.age}">p>
body>
html>
所有代码差不多来齐了,还有几个配置文件,我是配置了application.properties 和
application.yml两个混合
application.properties:
spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix=.html
这两个配置的意思是返回的视图在这个目录下,然后是以.html结尾的
application.yml
server: port: 8080 //对应端口号 spring: profiles: active: prod //spring默认配置 datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/springboot username: root password: a //数据库的驱动和账号密码 mybatis: mapper-locations: classpath:mapper/*.xml //mybatis的mapper文件所在路径 type-aliases-package: com.example.demo.entity //实体类路径
所有的配置和代码全来齐了,然后就准备运行了
如果这个图标出现了,那么恭喜你,已经成功了第一步,然后就访问http://localhost:8080/tologin.action
如果出现下面这个登录界面,那么恭喜你,你的返回视图也是没问题的
最后一步啦,输入账号密码咯,我的是 账号 wp 密码 a 如果账号密码错误它会打印出错误信息显示在页面,如图
如果你登录成功,则返回的是detail页面,如下,如果不成功则检查后台代码是否正确
好了,到此已经全部结束了,希望对大家有所帮助