Filter——实现权限拦截

2023-11-01

创建Login.jsp、success.jsp、error.jsp:

login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="/servlet/login" method="post">
    <input type="text" name="username">
    <input type="submit">
</form>
</body>
</html>
success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>主页</h1>
<p><a href="/servlet/logout">注销</a> </p>
</body>
</html>

error.jsp

error.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>wrong</h1>
<a href="/Login.jsp">返回登陆页面</a>
</body>
</html>

 创建SysFilter、LoginOut、LoginServlet

package www.test.listener;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class SysFilter<req> implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request=(HttpServletRequest)req;
        HttpServletResponse response=(HttpServletResponse)resp;
        if(request.getSession().getAttribute("USER_SESSION")==null){
            response.sendRedirect("/error.jsp");

        }
        chain.doFilter(request,response);

    }

    public void destroy() {

    }
}
package www.test.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class LoginOut extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Object user_session = req.getSession().getAttribute("USER_SESSION");
        if (user_session!=null){
            req.getSession().removeAttribute("USER_SESSION");
            resp.sendRedirect("/Login.jsp");
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
package www.test.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取前端请求的参数
        String username=req.getParameter("username");
        if (username.equals("admin")){
            req.getSession().setAttribute("USER_SESSION",req.getSession().getId());
            resp.sendRedirect("/Sys/success.jsp");
        }else {
            System.out.println("fail");
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

配置web.xml

 <servlet>
        <servlet-name>Loginin</servlet-name>
        <servlet-class>www.test.servlet.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Loginin</servlet-name>
        <url-pattern>/servlet/login</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>Loginout</servlet-name>
        <servlet-class>www.test.servlet.LoginOut</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Loginout</servlet-name>
        <url-pattern>/servlet/logout</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>SysFilter</servlet-name>
        <servlet-class>www.test.listener.SysFilter</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>SysFilter</servlet-name>
        <url-pattern>/sys/*</url-pattern>
    </servlet-mapping>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Filter——实现权限拦截 的相关文章

  • 存储器了解

    1 sdio 之前弄过一个wifi模块 在stm32单片机上 基于sdio开发的 SDIO Wifi模块是基于SDIO接口的符合wifi无线网络标准的嵌入式模块 内置无线网络协议IEEE802 11协议栈以及TCP IP协议栈 能够实现用户
  • vue中根据某一个值的改变而动态改变样式

    最近有一个需求 动态改变宽度 缩小就变420px 放大宽度就应该占满整个屏幕 第一步 在div那里定义一个ref的值 第二步 计算屏幕的宽度 第三步 监听数的改变 从而改变样式 4 完美 收工
  • 42、Flutter之GridView组件详解

    GridView GridView可以构建一个二维网格列表 其默认构造函数定义如下 GridView Key key Axis scrollDirection Axis vertical bool reverse false ScrollC
  • 手机内存RAM、ROM简介

    手机内存包含两个 一个是运行内存 RAM 一个是机身内存 ROM 两者的功能有所不同 运行内存是对手机操作系统和其它程序运行过程中 产生的临时数据进行存储的媒介 如果手机运行的程序比较多 占用运行内存空间较大 会对手机运行速度产生影响 手机
  • 安装ise14.7时遇到的问题

    安装软件我踩过不少坑 这就分享给大家 也当做自己一个记录 省的又花大量时间找解决方法 1 打开ise跳出如下警告并无法打开ise使用 警告VC 2008runtime libraries are not inastalled 翻译成中文 未

随机推荐

  • Unity移动端Input---触控

    void Update Input GetKeyDown KeyCode Space Input GetAxis Horizontal 按左 右箭头或A D键 Input GetAxis Vertical 按上 下箭头或w s键 Input
  • Selenium 官网打不开怎么办?

    Selenium 官网打不开怎么办 刚接触Selenium的时候发现官网打不开 很是奇怪 我以为网站挂了 后来才知道这个网站也被屏蔽了 那就不上了呗 可是学习资料哪里找 我找了一下 github啊 selenium在github上开源 上面
  • 单链表实现(C++)

    C 实现单链表数据结构 myList h ifndef MYLIST H define MYLIST H typedef struct node int data struct node next Node class myList pub
  • 使用Sequelize模块操作数据库之增删改查

    前面我们已经了解了Sequelize中模型的创建 现在我们去了解一下通过 Sequelize 对数据库进行增删改查操作 在操作数据库时 增删改操作比较简单 我们会侧重去讲解查询数据库 简单 INSERT 语句 添加语句是通过Model cr
  • 牛客小白月赛61 F.选座椅(双指针)

    牛客小白月赛61 F 选座椅 双指针 显然 l r l r l r 满足 l
  • OpenAI-ChatGPT最新官方接口《嵌入向量式文本转换》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(五)(附源码)

    Embeddings 嵌入向量式文本转换 前言 Overview 概述 What are embeddings 什么是嵌入 How to get embeddings 如何获取嵌入 python代码示例 cURL代码示例 Embedding
  • Jenkins通过kubernetes plugin连接K8s集群

    一 Jenkins安装kubernetes plugin插件 1 1 点击左侧系统管理 1 2 点击插件管理 1 3 安装插件Kubernetes plugin 1 4 安装好后重启Jenkins 浏览器输入http 192 168 0 1
  • 嵌入式硬件系统的基本组成

    嵌入式硬件系统的基本组成 嵌入式系统的硬件是以包含嵌入式微处理器的SOC为核心 主要由SOC 总线 存储器 输入 输出接口和设备组成 嵌入式微处理器 每个嵌入式系统至少包含一个嵌入式微处理器 嵌入式微处理器体系结构可采用冯 诺依曼 Von
  • Jmeter@场景负载加压

    目录 性能测试Jmeter 常用的主流场景 场景一 Thread Group 场景二 jp gc Stepping Thread Group 场景三 jp gc Ultimate Thread Group 场景四 bzm Concurren
  • 吴博:京东应用架构设计与治理

    吴博 京东应用架构设计与治理 经过十年的业务快速发展 京东信息系统复杂度越来越高 一般电商系统只需关心 进销存 中的 销 京东系统需要管理采购 进 销售 销 和库存 存 三个环节 系统做水平垂直拆分后 需要解决系统间如何解藕 如何保证高效通
  • python 基于异步的编程

    背景 除了顺序执行和并行执行的模型之外 还有第三种模型 叫做异步模型 这是事件驱动模型的基础 异步活动的执行模型可以只有一个单一的主控制流 能在单核心系统和多核心系统中运行 在并发执行的异步模型中 许多任务被穿插在同一时间线上 所有的任务都
  • 数字时序:时钟信号、抖动、迟滞和眼图

    转载地址 https www mr wu cn digital timing clock signals jitter hystereisis and eye diagrams 时钟信号 Clock Signals 发送数字信号其实发送的就
  • python-相似度计算的三种常用方法

    协同过滤就是通过将用户和其他用户的数据进行对比来实现推荐的 1 相似度计算 用欧氏距离来计算 相似度用距离来衡量 距离越大 相似度越小 距离越小 相似度越大 2 皮尔逊相关系数 这个参数用来度量两个向量之间的相似度 corroef 进行计算
  • 【Linux技术】linux连接mysql错误解决方案

    1 源码 connect mysql c include
  • C# Socket.Connect连接请求超时机制

    作者 RazanPaul 译者 Todd Wei 原文 http www codeproject com KB IP TimeOutSocket aspx 转自 http hi baidu com wf studio blog item d
  • Nginx配置及linux系统内存高并发多方面优化

    原文地址 http blog csdn net qq 23598037 article details 79505398 nginx的优化 1 gzip压缩优化 2 expires缓存有还 3 网络IO事件模型优化 4 隐藏软件名称和版本号
  • 基于数据挖掘的社交网络情感分析研究

    基于数据挖掘的社交网络情感分析研究 摘 要 随着近年来国内诸如微博 微信 国外诸如推特 Facebook 等知名社交网络平台及在线社交网络平台访问量的呈爆发式快速增长 人们已越来越地倾向于直接在各类社交网络平台基础上来表达其自己表达的各种观
  • JavaWebMyBatis中文写入数据库变问号解决方式

    首先感谢大佬给我思路 有同学也会这样 在学习javaweb时中文插入数据库变成了问号 如果你没用框架 那就在链接数据库的url后面加上 characterEncoding utf8 useUnicode true即可 具体可参考这篇文章 如
  • 16瓶药水一瓶有毒,去小白鼠测试哪一瓶水有毒?

    16瓶药水一瓶有毒 去小白鼠测试哪一瓶水有毒 面试的时候有个面试官问我 有16瓶药水 其中一瓶有毒 一只小白鼠喝过之后 一天之后会死亡 要求在少于15只小白鼠的情况下判断出哪一瓶有毒 药水可以兑在一起 小白鼠也可以喝多瓶药水 我在面试的时候
  • Filter——实现权限拦截

    创建Login jsp success jsp error jsp login jsp