爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      手把手教你在SpringMVC中搭建拦截器

      首页 知识中心 软件开发 文章详情页

      手把手教你在SpringMVC中搭建拦截器

      2024-11-08 08:55:24 阅读次数:24

      user,拦截器

      最近做SSM项目,遇到需要使用拦截器的需求,例如用户在未登录时无法进行买票并支付,下面就本人的经验手把手的教大家如何搭建拦截器。
      下面我将模拟用户只有登录后才能进入主页的业务场景来进行代码实现。

      1.创建Maven空项目并导入依赖

      打开IDEA,选择文件,点击新建项目,选择创建Maven原型项目,至于名称,位置以及工作坐标可以执行选择。
      手把手教你在SpringMVC中搭建拦截器
      创建项目完成后,需要导入pom.xml依赖,具体如下所示。

      <dependencies>
              <dependency>
                  <groupId>javax.servlet</groupId>
                  <artifactId>servlet-api</artifactId>
                  <version>2.5</version>
              </dependency>
              <dependency>
                  <groupId>javax.servlet.jsp</groupId>
                  <artifactId>jsp-api</artifactId>
                  <version>2.2</version>
              </dependency>
              <dependency>
                  <groupId>javax.servlet</groupId>
                  <artifactId>jstl</artifactId>
                  <version>1.2</version>
              </dependency>
      
              <!--Mybatis-->
              <dependency>
                  <groupId>org.mybatis</groupId>
                  <artifactId>mybatis</artifactId>
                  <version>3.5.2</version>
              </dependency>
              <dependency>
                  <groupId>org.mybatis</groupId>
                  <artifactId>mybatis-spring</artifactId>
                  <version>2.0.2</version>
              </dependency>
      
              <!--Spring-->
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-webmvc</artifactId>
                  <version>5.1.9.RELEASE</version>
              </dependency>
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-jdbc</artifactId>
                  <version>5.1.9.RELEASE</version>
              </dependency>
          </dependencies>
      

      2.编写前端界面和导入静态资源

      编写界面前,选中该项目右击添加框架支持,选择添加web应用程序,这样就可以保证最新版本4.0。
      在web目录下创建登录注册页面loginAndRegister.jsp
      具体代码如下:

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <html>
      <head>
          <title>登录注册</title>
          <script type="text/javascript" src="js/jquery-3.6.0.min.js"></script>
          <link rel="stylesheet" type="text/css" href="css/loginAndRegister.css">
      
          <script>
      <%--        注册登录切换--%>
              window.onload = function (){
                  var item = document.getElementsByClassName("item");
                  var it = item[0].getElementsByTagName("div");
      
                  var content = document.getElementsByClassName("content");
                  var con = content[0].getElementsByTagName("div");
      
                  for(let i=0;i<it.length;i++){
                      it[i].onclick = function (){
                          for(let j=0;j<it.length;j++){
                              it[j].className = '';
                              con[j].style.display = "none";
                          }
                          this.className = "active";
                          it[i].index = i;
                          con[i].style.display = "block";
                      }
                  }
              }
          </script>
      </head>
      <body>
          <div class="control">
              <div class="item">
                  <div class="active">登录</div><div>注册</div>
              </div>
                  <div class="content">
                      <div style="display: block">
                          <form action="${pageContext.request.contextPath}/user/login">
                              <p style="color: red">${error}</p>
                          <p>用户名</p>
                          <input type="text" id="username" name="user_name" placeholder="请输入用户名或手机号"/>
                          <p>密码</p>
                          <input type="password" id="pwd" name="user_pwd" placeholder="请输入密码"/>
                          <span id="msg"></span>
                          <br>
                          <input type="submit" id="login" value="登录">
                          </form>
                      </div>
                      <div>
                          <form action="${pageContext.request.contextPath}/user/register">
                          <p>用户名</p>
                          <input type="text" name="user_name" placeholder="请输入用户名"/>
                          <p>邮箱</p>
                          <input type="text" name="user_email" placeholder="请输入邮箱"/>
                          <p>密码</p>
                          <input type="password" name="user_pwd" placeholder="请输入密码"/>
                          <p>确认密码</p>
                          <input type="password" placeholder="请再次输入密码"/>
                          <br>
                          <input type="submit" id="register" value="注册">
                          </form>
                      </div>
                  </div>
      
          </div>
      </body>
      </html>
      

      为了适应SpringMVC的视图解析器,所以在WEB-INF目录下创建jsp目录,在jsp目录下创建home.jsp首页页面。
      具体如下,主页代码很简单,读者可自行更改。

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <html>
      <head>
          <title>Title</title>
      </head>
      <body>
      欢迎来到首页
      </body>
      </html>
      

      不仅如此,由于需要引入jquery和登录页面的css样式。jquery读者可执行去官网下载或者下载在线路径,登录的css样式代码如下所示:

      *{
          margin:0;
          padding: 0;
      }
      body{
          background-color: #f3f3f3;
          /*background-image: url("../static/images/");*/
          background-repeat: no-repeat;
      }
      .control{
          width: 340px;
          background: white;
          position: absolute;
          top: 50%;
          left: 50%;
          transform: translate(-50%,-50%);
          border-radius: 5px;
          /*opacity: 80%;*/
      }
      .item{
          width: 340px;
          height: 60px;
          background: #eeeeee;
          display:flex;
      }
      .item div{
          width: 170px;
          height: 60px;
          display: inline-block;
          color: black;
          font-size: 18px;
          text-align: center;
          line-height: 60px;
          cursor: pointer;
      }
      .content{
          width: 100%;
      }
      .content div{
          margin: 20px 30px;
          display: none;
          text-align: left;
      }
      p{
          color: #4a4a4a;
          margin-top: 30px;
          margin-bottom: 6px;
          font-size: 15px;
      }
      .content input[type="text"], .content input[type="password"]{
          width: 100%;
          height: 40px;
          border-radius: 3px;
          border:1px solid #adadad;
          padding: 0 10px;
          box-sizing: border-box;
      }
      .content input[type="submit"]{
          margin-top: 40px;
          width: 100%;
          height: 40px;
          border-radius: 5px;
          color: white;
          border: 1px solid #adadad;
          background: #00dd60;
          cursor: pointer;
          letter-spacing: 4px;
          margin-bottom: 40px;
      }
      .content input[type="button"]{
          cursor: pointer;
          font-weight: bold;
          text-align: center;
          color: red;
          margin-left: 20px;
          width: 88px;
          height: 30px;
          border: none;
          background-color: rgba(255, 255, 255, 0.8);
          border-radius: 5px;
      }
      .active{
          background: white;
      }
      .item div:hover{
          background: #f6f6f6;
      }
      

      3.编写web.xml文件

      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns="http:///xml/ns/javaee"
               xmlns:xsi="http:///2001/XMLSchema-instance"
               xsi:schemaLocation="http:///xml/ns/javaee http:///xml/ns/javaee/web-app_4_0.xsd"
               version="4.0">
          
          <welcome-file-list>
              <welcome-file>loginAndRegister.jsp</welcome-file>
          </welcome-file-list>
          <servlet>
              <servlet-name>SpringMVC</servlet-name>
              <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
              <init-param>
                  <param-name>contextConfigLocation</param-name>
                  <param-value>classpath:spring-mvc.xml</param-value>
              </init-param>
              <load-on-startup>1</load-on-startup>
          </servlet>
          <!--    所有的请求都会被springmvc拦截-->
          <servlet-mapping>
              <servlet-name>SpringMVC</servlet-name>
              <url-pattern>/</url-pattern>
          </servlet-mapping>
          <filter>
              <filter-name>encoding</filter-name>
              <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
              <init-param>
                  <param-name>encoding</param-name>
                  <param-value>utf-8</param-value>
              </init-param>
          </filter>
          <filter-mapping>
              <filter-name>encoding</filter-name>
              <url-pattern>/</url-pattern>
          </filter-mapping>
      </web-app>
      

      在里面主要配置了DispatcherServlet,中文乱码过滤以及Spring拦截器等等。

      4.编写spring-mvc.xml文件

      <?xml version="1.0" encoding="UTF8"?>
      <beans xmlns="http:///schema/beans"
             xmlns:xsi="http:///2001/XMLSchema-instance"
             xmlns:mvc="http:///schema/mvc"
             xmlns:context="http:///schema/context"
             xsi:schemaLocation="http:///schema/beans
              http:///schema/beans/spring-beans.xsd
              http:///schema/mvc
              https:///schema/mvc/spring-mvc.xsd
              http:///schema/context
              https:///schema/context/spring-context.xsd">
      
          <!--    1.注解驱动-->
          <mvc:annotation-driven/>
          <!--    2.静态资源过滤-->
          <mvc:default-servlet-handler/>
          <!--    3.扫描包-->
          <context:component-scan base-package="com.xing.controller"/>
          <mvc:interceptors>
              <mvc:interceptor>
                  <mvc:mapping path="/user/home"/>
                  <bean class="com.xing.filter.userFilter"/>
              </mvc:interceptor>
          </mvc:interceptors>
          <!--    4.视图解析器-->
          <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
              <property name="prefix" value="/WEB-INF/jsp/"/>
              <property name="suffix" value=".jsp"/>
          </bean>
      
      </beans>
      

      输入以上代码后,读者可自行配置应用程序上下文。
      手把手教你在SpringMVC中搭建拦截器
      拦截器配置文件主要是这一部分,即服务器会拦截/user/home请求,com.xing.filter.userfilter是拦截器对应的处理类。

      5.编写拦截器处理类

      创建一个userFilter拦截器处理类,实现HandlerInterceptor接口并重写preHandle方法即可。

      package com.xing.filter;
      import org.springframework.web.servlet.HandlerInterceptor;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      public class userFilter implements HandlerInterceptor {
          //返回前拦截
          @Override
          public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
              if(request.getSession().getAttribute("user")!=null){
                  return true;
              }
              //重定向到登录注册页面
              request.getRequestDispatcher("/loginAndRegister.jsp").forward(request,response);
              return false;
          }
      }
      
      

      该代码表示,如果用户登录后,将可以在session中获取到user,返回true,这样服务器就不会拦截,否则就是返回false,重定向到登录界面。

      6.编写用户控制类(userController)

      package com.xing.controller;
      import org.springframework.stereotype.Controller;
      import org.springframework.web.bind.annotation.RequestMapping;
      import javax.servlet.http.HttpServletRequest;
      
      @Controller
      @RequestMapping("/user")
      public class UserController {
          @RequestMapping("/home")
          public String enterHome(){
              return "home";
          }
          @RequestMapping("/login")
          public String login(HttpServletRequest request){
              //判断账号密码是否匹配
              request.getSession().setAttribute("user","v587");
              return "home";
          }
      }
      

      /user/login请求是走登录请求,服务器会给session设置一个值,方便拦截器判断其值是否为空;
      /user/home是直接进入首页的请求。

      7.结果展示

      由于在web.xml中配置了欢迎页,所以项目执行成功就会直接定位到登录注册页面。如果未登录直接请求http://localhost:8080/user/home,将会重定向到登录注册页面。
      手把手教你在SpringMVC中搭建拦截器
      如果输入用户名和密码并点击登录,将会跳转到home.jsp首页页面,结果如下:
      手把手教你在SpringMVC中搭建拦截器

      8.错误纠正

      如果读者遇到以下问题,不要犹豫,这一定就是构建SpringMVC常见错误。手把手教你在SpringMVC中搭建拦截器
      即用Maven下载的外部库,并未导入项目结构中。如图所示。
      手把手教你在SpringMVC中搭建拦截器
      解决方法就是:在WEB-INF目录下创建一个lib目录,将所有的库文件导入lib目录即可解决问题,具体如图所示:
      手把手教你在SpringMVC中搭建拦截器
      如此就可以解决所遇到的问题!

      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://lglxv587.blog.csdn.net/article/details/123388976,作者:散一世繁华,颠半世琉璃,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:Java中的GUI界面设计与用户体验优化

      下一篇:Python之异常

      相关文章

      2025-05-19 09:04:30

      token以及axios响应拦截器请求拦截器

      token以及axios响应拦截器请求拦截器

      2025-05-19 09:04:30
      axios , token , 拦截器 , 登录 , 跳转
      2025-05-13 09:50:38

      oracle 19.14升级至19.15

      oracle 19.14升级至19.15

      2025-05-13 09:50:38
      app , grid , oracle
      2025-05-13 09:49:27

      mysql一些小知识点

      mysql 使用的是三值逻辑:TRUE FALSE UNKNOWN。

      2025-05-13 09:49:27
      left , mod , mysql , null , select , user
      2025-05-07 09:07:56

      SpringMVC 拦截器开发详解

      SpringMVC 拦截器开发详解

      2025-05-07 09:07:56
      处理器 , 执行 , 拦截器 , 方法 , 请求
      2025-04-18 07:10:38

      hadoop-hdfs简介及常用命令详解(超详细)

      HDFS(Hadoop Distributed File System)是Apache Hadoop生态系统中的分布式文件系统,用于存储和处理大规模数据集。HDFS具有高容错性、高可靠性和高吞吐量的特点,适用于大数据处理和分析场景。

      2025-04-18 07:10:38
      file , hadoop , HDFS , txt , user , 文件 , 目录
      2025-04-18 07:09:19

      SpringMVC 执行流程详解

      SpringMVC 是 Java Web 开发中广泛应用的 MVC 框架,它以其高效、灵活的设计受到了开发者的青睐。

      2025-04-18 07:09:19
      SpringMVC , 处理器 , 执行 , 拦截器 , 方法 , 视图 , 请求
      2025-04-09 09:13:27

      【DoraBox实战】————6、代码执行分析与研究

      【DoraBox实战】————6、代码执行分析与研究

      2025-04-09 09:13:27
      array , eval , func , user , 函数
      2025-03-31 08:57:16

      ACL Role Permission 出错\"Undefined variable: permission\"

      ACL Role Permission 出错\"Undefined variable: permission\"

      2025-03-31 08:57:16
      function , gt , user
      2025-03-31 08:56:45

      laravel5.5 laravel echo实现实时应用(私信)

      laravel5.5 laravel echo实现实时应用(私信)

      2025-03-31 08:56:45
      channel , user , 源码
      2025-03-31 08:56:45

      网站私信表(留言表)的设计 && 空间换性能的思路

      网站私信表(留言表)的设计 && 空间换性能的思路

      2025-03-31 08:56:45
      amp , id , user
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5256777

      查看更多

      最新文章

      SpringMVC 拦截器开发详解

      2025-05-07 09:07:56

      SpringMVC 执行流程详解

      2025-04-18 07:09:19

      【DoraBox实战】————6、代码执行分析与研究

      2025-04-09 09:13:27

      laravel5.5 laravel echo实现实时应用(私信)

      2025-03-31 08:56:45

      【C++图论】1993. 树上的操作|1861

      2025-03-21 07:03:12

      【SpringBoot】深度解析 Spring Boot 拦截器:实现统一功能处理的关键路径

      2025-03-06 09:41:26

      查看更多

      热门文章

      Java(Spring拦截器、过滤器、AOP)

      2023-06-20 09:11:08

      Spring Boot 使用拦截器

      2023-05-04 09:43:47

      SpringMVC-拦截器

      2023-06-08 06:21:32

      简单的谈一下SpringMVC的工作流程

      2023-06-20 09:11:08

      Shiro过滤器源码

      2023-06-28 09:11:13

      手把手入门Springboot2之Web

      2023-08-02 07:14:21

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      Linux shell编程学习笔记9:字符串运算 和 if语句

      Spring Boot 使用拦截器

      简单的谈一下SpringMVC的工作流程

      Java注解

      SpringMVC 执行流程详解

      使用 JavaScript Promise 读取 Github 某用户的数据

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号