4_4.springboot之Web开发登录和拦截器
1、登录处理
1)、禁用模板引擎的缓存
# 禁用缓存
spring.thymeleaf.cache=false
2)、页面修改完用ctrl+f9:重新编译;
LoginController
@Controller
public class LoginController {
@PostMapping(value = "/user/login")
//@RequestMapping(value = "/user/login",method = RequestMethod.POST)
public String login(@RequestParam(value = "username") String username,
@RequestParam(value = "password") String password,
Map<String,Object> map, HttpSession session){
if(!StringUtils.isEmpty(username)&&"123456".equals(password)){
//防止表单重复提交,可以重定向
session.setAttribute("loginUser",username);
return "redirect:/main.html";
}else{
map.put("msg","用户密码错误");
return "login";
}
}
/*
* spring Web MVC 提供Model、Map或ModelMap让我们能去暴露渲染视图需要的模型数据。
* ModelAndViews是它的实现类,
* */
}
登陆错误消息的显示
<p style="color: red" th:text="${msg}" th:if="${not #strings.isEmpty(msg)}"></p>
2、拦截器进行登陆检查
1、新建LoginInterceptor:登录拦截器,进行登录检查,未登录的用户不能访问
package com.spboot.springboot04.component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Description:登录拦截器,进行登录检查,未登录的用户不能访问
* User: jiatp
* Date: 2019/9/23 0023 下午 7:21
*/
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object loginUser = request.getSession().getAttribute("loginUser");
//判断是否为空
if(loginUser==null){
//未登录返回主页面,并且提示登录
request.setAttribute("msg","没有权限请先登录!");
request.getRequestDispatcher("/index.html").forward(request,response);
return false;
}else{
//已经登录放行请求
return true;
}
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
2、配置拦截器
在springmvc配置类中添加:
@Configuration//扩展springmvc功能
public class MyMvcConfig implements WebMvcConfigurer {
/*
* 注册拦截器
* */
@Override
public void addInterceptors(InterceptorRegistry registry) {
//添加拦截请求
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**")
// 排除的配置(登录页面。。) .excludePathPatterns("/index.html","/","/user/login","/asserts/**","/webjars/**");
}
}
注意:
此处排除的"/assters/“的静态资源文件夹,也就是在springboot项目的类路径下的static文件夹下的文件夹,不能写成”/static/“因为在springboot2.0+之后springboot的自动配置的静态资源的映射路径中不在有static,所以在这里排除”/static/**"不会起作用。
静态文件路径:resources/static/asserts ,如果html中有引入webjar 拦截器中还得过滤webjar的路径
前台html页面可以通过th标签,获取msg
<p style="color:red;" th:text="${msg}" th:if="${not #strings.isEmpty(msg)}"></p>
测试:

4_4.springboot之Web开发登录和拦截器的更多相关文章
- SpringBoot:Web开发
西部开源-秦疆老师:基于SpringBoot 2.1.6 的博客教程 , 基于atguigu 1.5.x 视频优化 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处 ...
- 系统开发中使用拦截器校验是否登录并使用MD5对用户登录密码进行加密
项目名称:客户管理系统 项目描述: 项目基于javaEE平台,B/S模式开发.使用Struts2.Hibernate/Spring进行项目框架搭建.使用Struts中的Action 控制器进行用户访问 ...
- SpringBoot学习(七)-->SpringBoot在web开发中的配置
SpringBoot在web开发中的配置 Web开发的自动配置类:在Maven Dependencies-->spring-boot-1.5.2.RELEASE.jar-->org.spr ...
- SpringBoot整合Mybatis完整详细版二:注册、登录、拦截器配置
接着上个章节来,上章节搭建好框架,并且测试也在页面取到数据.接下来实现web端,实现前后端交互,在前台进行注册登录以及后端拦截器配置.实现简单的未登录拦截跳转到登录页面 上一节传送门:SpringBo ...
- SpringBoot之WEB开发-专题二
SpringBoot之WEB开发-专题二 三.Web开发 3.1.静态资源访问 在我们开发Web应用的时候,需要引用大量的js.css.图片等静态资源. 默认配置 Spring Boot默认提供静态资 ...
- SpringBoot日记——登录与拦截器篇
之前的文章我们把登录页写了出来,但是想要让登录现实他的基本功能,要如何做呢?本篇文章就来帮你实现第一步,让登录页对账号密码做校验,并且完成登录跳转. LoginController 1. 要实现登录, ...
- springboot java web开发工程师效率
基础好工具 idea iterm2 和 oh-my-zsh git 热加载 java web项目每次重启时间成本太大. 编程有一个过程很重要, 就是试验, 在一次次试验中探索, 积累素材优化调整程序模 ...
- springBoot(6)---过滤器,监听器,拦截器
过滤器,监听器,拦截器 一.理解它们 看里十几篇博客,总算有点小明白,总的来讲,两张图可以让我看明白点. 通过两幅图我们可以理解拦截器和过滤器的特点 1.过滤器 过滤器是在请求进入tomcat容器后, ...
- taotao用户登录springMVC拦截器的实现
在springMVC中写拦截器,只需要两步: 一.写 java 拦截器类,实现 interceptor 拦截器接口. 二.在 springMVC 的xml配置文件中,配置我们创建的拦截器对象及其拦截目 ...
随机推荐
- 使用canvas绘制6X6调色盘
<canvas id="canvas" height="150" width="150"></canvas> var ...
- SQL SERVER中[dbo]的解释
1.作用: (1)DBO是每个数据库的默认用户,具有所有者权限,即DbOwner:通过用DBO作为所有者来定义对象,能够使数据库中的任何用户引用而不必提供所有者名称.(2)至于为什么要使用所有者进行限 ...
- NX二次开发-UFUN将目录与文件名组合在一起uc4575
NX11+VS2013 #include <uf.h> #include <uf_ui.h> #include <uf_cfi.h> UF_initialize() ...
- LeetCode 24. Swap Nodes in Pairs (两两交换链表中的节点)
题目标签:Linked List 题目给了我们一组 linked list,让我们把每对nodes 互换位置. 新键一个dummy node,然后遍历list,每次建立 s1 和 s2 记录两个点,然 ...
- adb shell 查看内存信息
1.根据包名来查看指定的APP指定数据adb shell "top | grep com.xxx.xxx" 由于这样打印出来的数据没有参数名,可以参考这个命令来看:adb shel ...
- DRF的请求响应组件
目录 DRF的请求响应组件 请求模块(request) 概念 request源码简单分析 响应模块(response) 概念 使用方法 response源码简单分析: 解析模块(parse) 概念 使 ...
- 天道神诀---DHCP服务(下篇)
DHCP作用域详解 subnet 定义一个作用域 netmask 定义作用域的掩码 range 允许发放的IP范围 option routers 指定网关地址 option domain-nam ...
- 312. 戳气球【困难】【区间DP】
题目链接 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中. 现在要求你戳破所有的气球.每当你戳破一个气球 i 时,你可以获得 nums[left] * ...
- 【POJ】2253 Frogger
= =.请用C++提交.. 如果有朋友能告诉我G++和C++交题什么机制..我感激不尽.G++杀我. 题目链接:http://poj.org/problem?id=2253 题意:青蛙A要去找B约会, ...
- linux mysql主从复制配置
1.设置主库master的servie-id值并且开启bin-log功能参数vi /etc/my.cnf修改my.cnf的参数:[mysqld]server-id=1 //每一个库的server-id ...