SpringMVC学习篇(九)

news2024/11/16 12:45:59

SpringMVC拦截器例子

1 界面登录验证

1.1 准备工作

1.1.1 导入servlet-api依赖

<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>servlet-api</artifactId>
    <version>6.0.53</version>
</dependency>

1.1.2 创建员工控制类(EmpController类)

package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpSession;
@Controller
@RequestMapping("emps")
public class EmpController {
    @RequestMapping("find")
    public String find(){
        System.out.println("查询员工");
        return "index";
    }
    @RequestMapping("delete")
    public String delete(){
        System.out.println("删除员工");
        return "index";
    }
    @RequestMapping("add")
    public String add(){
        System.out.println("添加员工");
        return "index";
    }
}

1.2 在EmpController类里面创建登录和注销方法

//注意:登录后要把用户保存在session域中,注销后需要session域中的相关数据给清除掉
@RequestMapping("login")
    public String login(HttpSession session){
        session.setAttribute("users", "张三");
        return "index";
    }
@RequestMapping("logout")
    public String logout(HttpSession session){
        session.removeAttribute("users");
        return "index";
    }

1.3 创建登录拦截类(LoginInterceptor)

package com.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;

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

public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object users = request.getSession().getAttribute("users");
        if(users==null){
            System.out.println("被登录拦截器拦截了");
            request.setAttribute("msg", "请先登录");
            request.getRequestDispatcher("/index.jsp").forward(request, response);
            return false;
        }
        return true;
    }
}

1.4 在主配置文件SpringMvc2.xml里面进行拦截器的配置

<mvc:interceptor>
      <mvc:mapping path="/emps/**"/>
      <mvc:exclude-mapping path="/emps/find*"/>
      <mvc:exclude-mapping path="/emps/log*"/>
      <!--拦截器对象的地址-->
      <bean class="com.interceptor.LoginInterceptor"></bean>
</mvc:interceptor>

1.5 编写首页index.jsp页面

<%--
  Created by IntelliJ IDEA.
  User: SSS翱翔万里
  Date: 2022/11/13
  Time: 15:52
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
      <h1>进入了首页</h1>
      消息:${msg}<br>
      ${users==null ?'未登录':'已登录 用户:'}${users}
      <a href="/emps/login">登录</a>
      <a href="/emps/logout">注销</a><br>
      <a href="/emps/find">查询用户</a>
      <a href="/emps/delete">删除用户</a>
      <a href="/emps/add">添加用户</a>
</body>
</html>

1.6 测试运行截图

1.6.1 未登录时点击删除用户

a 点击前

在这里插入图片描述

b 点击后

在这里插入图片描述

c 控制台信息截图

在这里插入图片描述

1.6.2 已登录时点击删除用户

a 点击前

在这里插入图片描述

b 点击后

在这里插入图片描述

c 控制台信息截图

在这里插入图片描述

1.6.3 未登录时点击查询用户

a 点击前

在这里插入图片描述

b 点击后

在这里插入图片描述

c 控制台信息截图

在这里插入图片描述

1.6.4 已登录时点击查询用户

a 点击前

在这里插入图片描述

b 点击后

在这里插入图片描述

c 控制台信息截图

在这里插入图片描述

1.6.5 未登录时点击添加用户

a 点击前

在这里插入图片描述

b 点击后

在这里插入图片描述

c 控制台信息截图

在这里插入图片描述

1.6.6 已登录时点击添加用户

a 点击前

在这里插入图片描述

b 点击后

在这里插入图片描述

c 控制台信息截图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/12189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于机器视觉的移动消防机器人(三)--软件设计

本文素材来源于北方民族大学 机电工程学院 作者&#xff1a;牟义达、黄瑞翔、李涛 指导老师&#xff1a;田国禾、张春涛 1. 总系统软件流程图 为了实现消防功能&#xff0c;对软件进行系统设计。根据机器人要实现的功能进行逐一设计&#xff0c;设计完之后再将其整合到一起&a…

流体力学基础——粘性

1、粘性&#xff1a;流体的属性 粘性就是流体阻碍自身流动的特性&#xff1b; 专业定义&#xff1a;粘性是流体持续剪切变形时内部产生剪切力的性质&#xff1b; 流体内部的粘性力&#xff0c;类似于固体的摩擦力&#xff0c;但是只有动粘性力&#xff1b; 表面张力不是粘性…

远程桌面一直被人爆破的解决思路

目录前言初步解决方法题外话预防措施获取日志Get-EventLog例子防火墙操作编写软件自动提取IP和添加黑名单调用powershell命令调用cmd命令前言 某天远程自己的电脑发现登不上了&#xff0c;错误信息如下&#xff1a; 开始也没在意&#xff0c;后面出现了好几次才反应过来。查看…

程序员职场生态:近8成本科毕业生起薪过万,跳槽首选智能汽车行业

中国互联网行业经历了超过20年的高速发展&#xff0c;逐渐融入到各行各业&#xff0c;程序员在其中发挥着举足轻重的作用&#xff0c;从业人员数量与日俱增。GitHub数据显示&#xff0c;2021年中国开发者规模达到755万。 近日&#xff0c;拉勾招聘数据研究院对程序员群体开展深…

SpringBoot笔记

文章目录1️⃣ 简介一. 什么是 IoC 容器&#xff1f;二. AOP面向切面编程三. SSM整合四. HttpServletRequest五. HttpServletResponse六. Cookie 与 Session七. Cookie八. Session九. 转发与重定向十. Spring项目转SpringBoot十一. Spring生命周期十二. 什么是 pom十三. 为什么…

知识整理说明:1799962-26-7,(4E)-TCO-NH2,(4E)-反式环辛烯-氨基

(4E)-TCO-amine物理数据&#xff1a; CAS&#xff1a;1799962-26-7| 中文名&#xff1a;(4E)-反式环辛烯-氨基 | 英文名&#xff1a;(4E)-TCO-amine&#xff0c;(4E)-TCO-NH2 结构式&#xff1a; 英文别名&#xff1a; (4E)-TCO-amine 中文别名&#xff1a; (4E)-反式环辛烯…

耗时半月,把牛客网最火Java面试题总结成PDF,涵盖所有面试高频题

最近感慨面试难的人越来越多了&#xff0c;一方面是市场环境&#xff0c;更重要的一方面是企业对Java的人才要求越来越高了。 基本上这样感慨的分为两类人&#xff0c;第一&#xff0c;虽然挂着3、5年经验&#xff0c;但肚子里货少&#xff0c;也没啥拿得出手的项目&#xff0c…

Vite 入门篇:学会它,一起提升开发幸福感。

相信大部分兄弟都体验过 Vite 了&#xff0c;知道它很快。但你知道它为什么快&#xff0c;相比 Webpack 有哪些不同吗&#xff1f;今天咱们就来全面了解一下 Vite &#xff0c;尤其适合新手兄弟。话不多说&#xff0c;开整&#xff01; 什么是构建工具 很多人对构建工具没有什…

RE转NFA转DFA

https://github.com/Nightmare4214/re_nfa_dfa 前置知识 ϵ\epsilonϵ代表空串 语言 某个给定字母表上一个任意的可数的串集合 正则语言/正则表达式 正则语言&#xff08;regular language&#xff09;/正则表达式&#xff08;regular expression&#xff09; 每个正则表达…

2022 SpeechHome 语音技术研讨会-回顾

2022年11月13日&#xff0c;第二届SpeechHome语音技术研讨会和第七届Kaldi技术交流会圆满落幕。本届SpeechHome语音技术研讨会由中国计算机学会、深圳市人工智能学会、小米集团、腾讯天籁实验室、语音之家主办&#xff0c;CCF语音对话与听觉专委会作为指导单位&#xff0c;由内…

【Java开发】 Spring 03:云服务器 Docker 环境下安装 MongoDB 并连接 Spring 项目实现简单 CRUD

接下来介绍一下 NoSQL &#xff0c;相比于 Mysql 等关系型的数据库&#xff0c;NoSQL &#xff08;文档型数据库&#xff09;由于存储的数据之间无关系&#xff0c;因此具备大数据量&#xff0c;高性能等特点&#xff0c;用于解决大规模数据集合多重数据种类带来的挑战&#xf…

点击化学试剂1609736-43-7,TCO-NH2 hydrochloride,反式环辛烯-氨基HCL盐

TCO-amine hydrochloride物理数据&#xff1a; CAS&#xff1a;1609736-43-7| 中文名&#xff1a; 反式环辛烯-氨基盐酸盐&#xff0c;反式环辛烯-氨基HCL盐 | 英文名&#xff1a;TCO-amine hydrochloride 结构式&#xff1a; 中文别名&#xff1a; 环辛-4-烯-1-基 (3-氨基丙…

Mvvm中的Lifecycle

lifecycle&#xff1a;一个持有activity/fragment生命周期信息的类&#xff0c;允许其他对象观察此对状态 Event:从框架和lifecycle类派发的生命周期事件&#xff0c;也就是activity和fragment的各个状态会发Event state:这个就好理解了&#xff0c;就是activity和fragment当…

工业互联与MQTT

、工业互联网 新一代信息通信技术与工业经济深度融合的新型基础设施、应用模式和工业生态&#xff0c;通过对人、机、物、系统等的全面连接&#xff0c;构建起覆盖全产业链、全价值链的全新制造和服务体系&#xff0c;为工业乃至产业数字化、网络化、智能化发展提供了实现途径&…

论文阅读-Dr.Deep_基于医疗特征上下文学习的患者健康状态可解释评估

论文地址&#xff1a;Dr.Deep&#xff1a;基于医疗特征上下文学习的患者健康状态可解释评估 (ict.ac.cn) 代码地址&#xff1a;GitHub - Accountable-Machine-Intelligence/Dr.Deep 简介&#xff1a; 深度学习是当前医疗多变量时序数据分析的主流方法。临床辅助决策关乎病人生…

深入浅出Nodejs中的大文件读写

笔者最近在做一些node端的文件读写和分片上传工作&#xff0c;在这个过程中&#xff0c;发现node读取的文件如果超过2G&#xff0c;超过了读取Blob最大值&#xff0c;会出现读取异常&#xff0c;此外在node中读写文件也受服务器RAM的限制等&#xff0c;需要分片读取&#xff0c…

2022年认证杯SPSSPRO杯数学建模A题(第二阶段)人员的紧急疏散求解全过程文档及程序

2022年认证杯SPSSPRO杯数学建模 A题 人员的紧急疏散求解 原题再现&#xff1a; 在过去的几十年里&#xff0c;由于大规模集会活动的数量和规模的增加&#xff0c;紧急疏散的问题变得越来越重要。通过有限宽度的门或狭窄通道进行疏散是最值得关注的情况之一。为了更好地理解各…

.Net Maui 开发之路(1): APP基本设置(图标、应用名称)

.Net Maui APP基本设置(图标、应用名称) 前言一、App显示名称设置二、App显示图标设置三、App加载动画设置四、App透明状态栏设置总结前言 最终实现的显示效果如下图 提示:以下是本篇文章正文内容,下面案例可供参考 一、App显示名称设置 1、在项目上右键,选择编辑项目文…

02 DevOps 之 Jenkins

1. 什么是CICD 推荐阅读&#xff1a;CICD原理及流程 CICD面试题 在要介绍jenkins之前&#xff0c;我们需要了解CICD是什么&#xff1f; Continuous Integration (CI) 持续集成 Continuous Delivery (CD) 持续交付 Continuous Deployment (CD) 持续部署 1.1 持续集成 持续集成…

Echarts折线图隐藏markPoint只显示最大值和最小值的文本,且只在该两点显示symbol

算是一个比较偏门的需求吧&#xff0c;具体UED给的设计图效果如下&#xff1a; 看起来非常简单&#xff0c;但实际实现起来……也确实简单&#xff0c;就是步骤多一点~ 我们知道Echarts提供的markPoint标注最大值和最小值是会有一个水滴图案的&#xff1a; 首先要做的就是隐藏这…