1:构建登录javaBean

com\springboot\vo\LoginUser.java

package com.springboot.vo;
import lombok.Data; @Data
public class LoginUser {
//登录用户名
private String username; //登录密码
private String password;
}

2:构建登录controller

com\springboot\controller\LoginController.java

package com.springboot.controller;

import com.springboot.vo.LoginUser;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import javax.servlet.http.HttpSession; @Controller
public class LoginController { @PostMapping("/login.html")
public String login(LoginUser user, Model model, HttpSession session){ //如果用户名不为空且密码等于123456 登录成功
if(!StringUtils.isEmpty(user.getUsername())&&"123456".equals(user.getPassword())){ //登录成功后把用户名放到session中用于登录拦截验证
session.setAttribute("loginUser",user.getUsername()); //main.html请求定义在自定义的视图解析器中
//重定向的意义在于让浏览器的URL路径更加真实
return "redirect:/main.html";
}else {
// 用于登录界面回显错误信息
model.addAttribute("msg","用户名或者密码错误");
return "index";
}
}
}

3:构建登录拦截器

package com.springboot.config;

import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /*登录拦截器*/
public class LoginHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception { //从session中获取用户名
String username = (String)request.getSession().getAttribute("loginUser");
//如果用户名为空则不放行
if(StringUtils.isEmpty(username)){
//登录界面回显的错误信息
request.setAttribute("msg","请先登录");
//转发到登录页
request.getRequestDispatcher("/index.html").forward(request,response);
//不放行
return false;
}
//放行
return true;
}
}

4:把登录拦截器添加到spring以及添加主页视图解析器

package com.springboot.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration //配置类注解
public class MyConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
/*访问首页视图解析器*/
registry.addViewController("/").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
/*访问主页视图解析器*/
registry.addViewController("main.html").setViewName("dashboard");
} //把国际化配置加入到容器中,使其生效
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
} //登录拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor()).
//拦截所有请求
addPathPatterns("/**").
//排除以下请求不拦截
excludePathPatterns("/","/index.html","/login.html",
"/css/**","/js/**","/img/**");
}
}

5:改造index.html

6:测试

输入错误的用户名、密码:

直接访问主页:http://localhost/main.html

输入正确的用户名、密码:

Springboot:员工管理之登录、拦截器(十(4))的更多相关文章

  1. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-10.Springboot2.x用户登录拦截器开发实战

    笔记 10.Springboot2.x用户登录拦截器开发实战     简介:实战开发用户登录拦截器拦截器 LoginInterceptor                  1.实现接口 LoginI ...

  2. SpringBoot 之 实现登录功能及登录拦截器

    增加登录退出控制器: # src/main/java/com/wu/controller/LoginController.java @Controller public class LoginCont ...

  3. nodejs+express中设置登录拦截器

    在nodejs+express中,采用nodejs后端路由控制用户登录后,为了加强前端的安全性控制,阻止用户通过在浏览器地址栏中输入地址访问后台接口,在app.js中需要加入拦截器进行拦截: /*** ...

  4. Spring mvc登录拦截器

    自己实现的第一个Spring mvc登录拦截器 题目要求:拒绝未登录用户进入系统,只要发现用户未登录,则将用户请求转发到/login.do要求用户登录 实现步骤: 1.在spring的配置文件中添加登 ...

  5. sessionStorage记录返回前端的数据,用于解决登录拦截器刷新页面的问题

    1.问题出现的场景与解决 实现一个登录拦截器,重写doFilter方法,判断用户的登录状态,在用户长时间未操作或者异地登录时前端进行提示,完整代码如下 public class LoginValida ...

  6. springMvc基于注解登录拦截器

    1.首先先定义一个拦截器注解 @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) p ...

  7. 大型运输行业实战_day05_1_登录+注销+表单重复提交+登录拦截器

    1.登录 登录实现如下步骤: 1.在首页中添加登录按钮 html代码如下: <%@ page contentType="text/html;charset=UTF-8" la ...

  8. 用户登录拦截器查询到登录用户后如何将用户信息传递到后面的Controller

    taotao创建订单代码中之前忘了加入用户信息,那么加上呢? 分析:用户创建订单的时候,我们会强制要求用户先登录,也就是说,创建订单的Controller执行时,一定是用户已经登录了的,而用户只要登录 ...

  9. struts2自定义登录拦截器

    版权声明:本文为博主原创文章,未经博主允许不得转载. (1)配置web.xml,让xml加载struts2框架 <?xml version="1.0" encoding=&q ...

随机推荐

  1. C# 基础知识系列-7 Linq详解

    前言 在上一篇中简单介绍了Linq的入门级用法,这一篇尝试讲解一些更加深入的使用方法,与前一篇的结构不一样的地方是,这一篇我会先介绍Linq里的支持方法,然后以实际需求为引导,分别以方法链的形式和类S ...

  2. Reactor模式和Proactor模式

    Reactor 主线程往epoll内核事件表中注册socket上的读就绪事件 主线程调用epoll_wait等待socket上有数据可读 当socket上有数据可读时,epoll_wait通知主线程, ...

  3. 如何理解EventLoop--浏览器篇

    前言 最近在准备春招,刷到了JS中的主要运行机制--Event Loop,觉得它的实现思路有必要整理一下,以防忘记.关于它在浏览器上的实现,我结合了自己的理解以及示例代码,想用最通俗的语言表达出来.如 ...

  4. 树莓派中Docker部署.Net Core 3.1 (一)

    一.背景 受疫情影响,已经在家强制事假一个月了,除了刷简历外就是在家学习,闲来无事,最近买了几个树莓派4B的板子回来,准备用树莓派搭建个自动部署的平台和微服务示例,长话短说,节约时间,直接进入正题吧 ...

  5. C 怪兽游戏

    时间限制 : - MS   空间限制 : - KB  评测说明 : 1s,256m 问题描述 何老板在玩一款怪兽游戏.游戏虽然简单,何老板仍旧乐此不疲.游戏一开始有N只怪兽,编号1到N.其中第i只怪兽 ...

  6. 面试刷题32:你对tomcat做了哪些性能调优?

    背景 java程序员的开发的java应用程序,一般都会选择使用tomcat发布,但是: 如何充分的掌控tomcat,并让它发挥最优性能呢? 这也是面试的热点问题,结合多年的工作实践,我是李福春,今天总 ...

  7. Educational Codeforces Round 84 (Rated for Div. 2)

    A. Sum of Odd Integers(思维) 思路 这一题看完ans之后觉得是真简单,不过有一些地方还是要理解的. 这一题输出YES,有两个条件 kk%2 == n%2k,这个条件的意思是 k ...

  8. 使用git上传代码到GitHub

    1.安装git git在Windows上安装很简单,在官网下载git的安装包后打开,然后一路next就好.安装完git之后,在文件夹中右击鼠标,出现Git Bash Here就表示安装完成了. 选择G ...

  9. gitlab问题

    1.gitclone前http://10.10.11.4:9999/SZRDC/I`````````.git改为http://git.berchina.com:9999/~~~~``` 2.Cloni ...

  10. Python等同于PHP的 strip_tags?

    我感觉目前最好的方式 from django.utils.html import strip_tags