spring boot 项目实现简单的登录功能
首先我们来简单的了解一下 为了实现登录功能所需要的的模块 dao层 (数据访问层) bean层(这里面就是实体类) service层(服务层)controller层(控制页面的跳转)
首先我们先建立项目目录
1 bean层 (实体类)
2 dao 层 (数据访问层)
package com.example.xizi.dao;
import com.example.xizi.bean.UserBean;
public interface UserDao {
UserBean getInfo(String username, String password);
}
3 service 层(接口)
package com.example.xizi.service;
import com.example.xizi.bean.UserBean;
public interface UserService {
UserBean loginIn (String username, String password);
}
service 实现层,Service层业务实现类编写,注意要注解@Service,注入DAO:
package com.example.xizi.serviceImpl;
import com.example.xizi.bean.UserBean;
import com.example.xizi.dao.UserDao;
import com.example.xizi.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class UserServiceImpl implements UserService {
//将dao层注入到service层
@Resource
private UserDao userDao;
@Override
public UserBean loginIn(String username, String password) {
return userDao.getInfo(username,password);
}
}
4控制器层
package com.example.xizi.controller;
import com.example.xizi.bean.UserBean;
import com.example.xizi.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class LoginController {
//将service层注入到web层
@Autowired
UserService userService;
@RequestMapping("/login")
public String showLogin(){
return "login";
}
@RequestMapping("/loginIn")
public String showUser(String username,String password){
UserBean userBean = userService.loginIn(username,password);
if(userBean!=null){
return "success";
}else {
return "error";
}
}
}
控制器层对应着templates 下的login.html页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<form action="/loginIn" method="post">
用户名:<input type="text" id="username" name="username"></br>
   密码:<input type="password" id="password" name="password"></br>
<input type="submit" id="login" value="登录">
</form>
</body>
</html>
5这就是整个登录过程的层级关系 和具体代码 在启动项目的时候要再加上一个注解 如图所示
6 运行项目 打开浏览器 输入localhpst:8080/login
7在用户名和密码栏输入数据库中已经存在的用户名和密码
8 如果页面跳转成功 则大功告成
但是这里看到了控制台上却有着一个警告 原因就是MVC中的那个请求转发的问题
这个解决方法就是在application.yml 文件下的spring 中加上以下代码就可以了,因为在spring boot load-on-startup默认值是-1,项目启动时,默认不会初始化DispatcherServlet,也就是不会调用Servlet接口的init()方法
可以通过在application.yml配置文件中设置如下配置项指定启动时初始化
mvc:
servlet:
load-on-startup: 1