SpringMVC-登录验证判断

简介: `SpringMVC`登录验证实现:创建`LoginInterceptor`拦截器检查`session`中的`LoginInfo`,未登录则重定向至登录页。配置拦截器,路径为`/**`和`/user/**`。`LoginController`处理登录、注销请求,登录成功后将用户信息存入`session`。未登录访问受限页面时,显示登录页面。

SpringMVC-登录验证判断

1.拦截器

package com.kuang.config;

import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class LoginInterceptor implements HandlerInterceptor {
   
   
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
   
   

        HttpSession session=request.getSession();

        //登录页面要放行
        if (request.getRequestURI().contains("goLogin")){
   
   
            return true;
        }
        //提交登录
        if (request.getRequestURI().contains("login")){
   
   
            return true;
        }
        //什么情况下登录了
        if (session.getAttribute("LoginInfo")!=null){
   
   
            return true;
        }

        //判断什么情况下没有登录
        request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request,response);
        return false;
    }
}

2.拦截器文件配置

 <!--拦截器配置-->
    <mvc:interceptors>
        <mvc:interceptor>
            <!--拦截该目录下的所有请求-->
            <mvc:mapping path="/**"/>
            <bean class="com.kuang.config.MyInterceptor"/>
        </mvc:interceptor>
        <mvc:interceptor>
            <mvc:mapping path="/user/**"/>
            <bean class="com.kuang.config.LoginInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

3.controller

package com.kuang.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpSession;

@Controller
@RequestMapping("/user")
public class LoginController {
   
   

   //登录
    @RequestMapping("/login")
    public String login(HttpSession session, String username, String password, Model model){
   
   

        //将用户信息存放在session中
        session.setAttribute("LoginInfo",username);
        model.addAttribute("username",username);
       return "main";
    }

    @RequestMapping("/main")
    public  String main(){
   
   
        return "main";
    }

    @RequestMapping("/goLogin")
    public  String goLogin(){
   
   
        return "login";
    }

    //注销
    @RequestMapping("/goOut")
    public String goOut(HttpSession session){
   
   
        session.removeAttribute("LoginInfo");
        return "main";
    }
}

4.效果
image.png

当用户没有登录时,就进行拦截跳转到登录页面。
好了,今天的分享就到这里了。

目录
相关文章
|
1月前
|
设计模式 前端开发 JavaScript
Spring MVC(一)【什么是Spring MVC】
Spring MVC(一)【什么是Spring MVC】
|
1月前
|
Java Apache vr&ar
springmvc报错 nested exception is org.mybatis.spring.MyBatisSystemException:
springmvc报错 nested exception is org.mybatis.spring.MyBatisSystemException:
20 0
|
8月前
|
前端开发 Java Go
Spring MVC 和 Spring Boot 的区别
Spring MVC 和 Spring Boot 的区别
131 0
|
11月前
|
Java Spring
springmvc中spring提供的中文乱码解决问题
可以解决浏览器的乱码问题
51 0
|
11月前
|
JSON 前端开发 Java
"《图书管理系统》利用SpringMvc$Spring$MyBatis (实操九)(一) "
"《图书管理系统》利用SpringMvc$Spring$MyBatis (实操九)(一) "
68 0
|
1月前
|
设计模式 前端开发 Java
Spring Boot之Spring MVC的工作原理 以及使用eclipse开发Spring MVC的Web应用实战(附源码)
Spring Boot之Spring MVC的工作原理 以及使用eclipse开发Spring MVC的Web应用实战(附源码)
56 0
|
1月前
|
设计模式 前端开发 Java
8:Spring MVC-Java Spring
8:Spring MVC-Java Spring
79 0
|
10月前
|
前端开发 Java 应用服务中间件
SpringMVC(基于Spring 的Web 层MVC 框架)--SpingMVC 执行流程--@RequestMapping的使用
SpringMVC(基于Spring 的Web 层MVC 框架)--SpingMVC 执行流程--@RequestMapping的使用
101 0
|
11月前
|
SQL JSON 前端开发
SpringMvc+Spring+MyBatis+Maven+Ajax+Json注解开发 利用Maven的依赖导入不使用架包模式 (实操十二)
SpringMvc+Spring+MyBatis+Maven+Ajax+Json注解开发 利用Maven的依赖导入不使用架包模式 (实操十二)
50 0
|
11月前
|
Java 数据库连接 数据库
《图书管理系统》利用SpringMvc$Spring$MyBatis (实操九)(二)
《图书管理系统》利用SpringMvc$Spring$MyBatis (实操九)(二)
50 0