千家信息网

基于SpringMVC如何实现网页登录拦截

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,基于SpringMVC如何实现网页登录拦截,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.简介SpringMVC的处理器拦截器类似
千家信息网最后更新 2026年11月01日基于SpringMVC如何实现网页登录拦截

基于SpringMVC如何实现网页登录拦截,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1.简介

SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。

拦截器和过滤器的区别在于拦截器使AOP思想的具体应用

过滤器

  • servlet规范中的一部分,任何java web工程都可以使用

  • 在url-pattern中配置了/*之后,可以对所有要访问的资源进行拦截

  • 需要重写方法

拦截器

  • SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用

  • 拦截器只会拦截访问的控制器方法, 如果访问的是jsp/html/css/image/js是不会进行拦截的

  • 不需要重写方法

2.自定义拦截器

−−>新建一个Module,添加web支持

−−>配置web.xml,applicationContext.xml,添加一个controller的包

−−>编写测试

@RestControllerpublic class TestController {    @GetMapping("/t1")    public String test(){        System.out.println("TestController-->test()执行了");        return "ok";    }}

添加Artifact中的lib,以及配置Tomcat,启动测试出现,证明Spring配置好了

−−>编写拦截器

package com.hxl.config;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class MyInterceptor implements HandlerInterceptor {    //在请求处理的方法之前执行    //return true;执行下一个拦截器    //如果返回false就不执行下一个拦截器    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {        System.out.println("------------处理前------------");        return true;    }    //在请求处理方法执行之后执行    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {        System.out.println("------------处理后------------");    }    //在dispatcherServlet处理后执行,做清理工作.    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {        System.out.println("------------清理------------");    }}

−−>在applicationContext.xml中配置拦截器

                                                        

前面的我们都不动,运行,我们可以看到效果

那么接下来就用一个实例来体验一下拦截器(登录)

在WEB-INF下的所有页面或者资源,只能通过controller或者servlet进行访问

3. 登录拦截

3.1 先做一个页面

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>      $Title$      登录  首页  

main.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    Title

首页

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    登录

登录页面

用户名: 密码:

LoginController

package com.hxl.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpSession;@Controllerpublic class LoginController {    @RequestMapping("/goMain")    public String goMain(){        return "main";    }    @RequestMapping("/goLogin")    public String goLogin(){        return "login";    }    @RequestMapping("/login")    public String login(HttpSession session,String username,String password){        // 向session记录用户身份信息        System.out.println("接收前端==="+username);        session.setAttribute("user", username);        return "main";    }}

测试

因为在WEB-INF下的 页面我们不能直接访问,所以在index中进行跳转,然后请求到login.jsp。此时我们在这里输入,就会在session中携带账号密码。

但此时是不符合的,因为我们还没有登录就可以去首页,所以我们需要写一个拦截器的功能

3.2 登录拦截

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>      $Title$      登录  首页  

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    登录

登录页面

用户名: 密码:

main.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    Title

首页

${username}

注销

LoginInterceptor

此时我们去写一个登录的拦截器,来判断它到底什么时候进行拦截

package com.hxl.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;        }        //用户已登录,第一次登录的时候也是没有session的。        if(session.getAttribute("user") != null){            return true;        }        //判断什么情况下没有登录        request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);        return false;    }}

LoginController

这里面我们有一个类url,下面的请求都需要加上/user,在配置拦截器的时候可以加一个,只拦截user请求下的。以及注销功能

package com.hxl.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("/goMain")    public String goMain(){        return "main";    }    @RequestMapping("/goLogin")    public String goLogin(){        return "login";    }    @RequestMapping("/login")    public String login(HttpSession session, String username, String password, Model model){        // 向session记录用户身份信息        System.out.println("接收前端==="+username);        session.setAttribute("user", username);        model.addAttribute("username",username);        return "main";    }    @RequestMapping("/goOut")    public String goOut(HttpSession session){        /*//销毁,下面的好        session.invalidate();*/        //移除        session.removeAttribute("user");        return "main";    }}

applicationContext.xml

                                                                                        

测试

此时我们启动之后,如果没有登录,那么会重定向到goLogin页面,然后登录,登录之后跳转到main页面,其中有注销功能,没有注销之前可以去index页面点击首页正常跳转,如果注销了,session没有了,那么就会跳转到登录页面。

关于基于SpringMVC如何实现网页登录拦截问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

登录 拦截器 页面 处理 方法 首页 配置 用户 测试 功能 密码 时候 过滤器 问题 网页 信息 前端 处理器 工程 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 A股互联网金融科技公司 北京互联网科技公司 华宇互联网科技 平安科技 互联网 广州紫鲸互联网科技 深圳市运趣互联网科技有限公司 中盈科技互联网信息有限公司 互联网之后的科技是什么 恒银科技与互联网金融 南平创想时代互联网科技有限公司 开一家科技互联网公司需要多少钱 科技类公司包括互联网吗 广州新华互联网科技学校电竞方面 阿里互联网科技企业 互联网金融科技公司的优势 云鲸互联网络科技有限公司 互联网科技和医药行业 如何强化互联网金融科技 小牛互联网科技有限公司地址 朗涯互联网科技 苏州大垚互联网科技 左右互联网络科技 武汉健翔互联网络科技有限公司 哈尔滨屹滨互联网科技有限公司 本届互联网博览会上的黑科技 山东子淼互联网科技有限公司 2021世界互联网领先科技成果发布 上海旺乐尼互联网科技有限公司 每日互联网科技新闻
0