jee中的过滤器

2023-11-14

对于web app的开发者来说“过滤器”是最常见不过了。
在web.xml中经常可以看到这样的几行:

<filter>
<filter-name>sessionFilter</filter-name>
<filter-class>org.iteye.bbjava.SessionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>sessionFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>



下面的代码来自互联网,原出处已经不清楚了,我只是把package改了一下。

这是一个session相关的过滤器,判断 session是否存在或者是否过期。
下面的代码只是用来说明过滤器的写法,代码本身没什么太大的价值。



package org.iteye.bbjava;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;

/*
* 用过滤器验证登陆,看session是否有效
*/
public class SessionFilter implements Filter {
private static final Logger log = Logger.getLogger(SessionFilter.class);
FilterConfig fc;

public void destroy() {
// 消毁方法
}


public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {

HttpServletRequest hreq = (HttpServletRequest) request;
String ctx = hreq.getContextPath();
System.out.println("==ctx=="+ctx);
String urlwrong = ctx + "/transLogin.jsp";

HttpServletResponse hres = (HttpServletResponse) response;
HttpSession session = hreq.getSession();
if (session != null && session.getAttribute("userInfo") != null) {
log.info("session is have");
chain.doFilter(request, response);
} else {
if((!hreq.getRequestURL().toString().endsWith("login.action"))){
log.info("session havan't");

if("toIndex".equals(null == hreq.getParameter("mode") ? "" : (String)hreq.getParameter("mode"))
|| "toMain".equals(null == hreq.getParameter("mode") ? "" : (String)hreq.getParameter("mode"))){
hres.sendRedirect(urlwrong);//重定向到该url
}else{
hres.setContentType("text/xml;charset=utf-8");
hres.setHeader("Cache-Control","no-cache");
PrintWriter pw = null;
pw = hres.getWriter();
pw.print("<error>sessionTimeOut</error>");
pw.close();
return;
}


}
chain.doFilter(request, response);
}
}

/*
* (non-Javadoc)
*
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig) 初使化过滤器
*/
public void init(FilterConfig fc) throws ServletException {
this.fc = fc;
}

}



从上面的代码可以看到,
过滤器的用途还是蛮多的,过滤特定的请求等等。


/*所谓过滤器不是想像中的那样难。平时练习时候可以写写*/。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jee中的过滤器 的相关文章

  • 使用 jQuery 从多个选择元素中过滤表格

    我想根据用户从多个选择元素中选择的内容使用 jQuery 隐藏 显示来过滤表格 我希望用户能够从 1 2 或 3 个选择元素中选择多个值 因此 他们可能会选择 2 名培训师 1 名新兵和 1 名状态人员 或者可能只选择 1 名培训师 计划创
  • Android信号分析+一些过滤器

    由于世界杯是主要的体育赛事 而呜呜祖拉是世界上最烦人的声音 我想通过阅读这篇新文章来彻底消除它们 http www popsci com diy article 2010 06 simple software can filter out
  • MySQL 日期比较过滤器

    我有一些运行良好的 SQL 代码 并从我的 Wordpress 数据库返回所需的结果 但是 我根本无法理解如何过滤以下日期之间的日期 2010 12 10 00 00 00 and 2010 12 15 00 00 00 这是我的 SQL
  • 如何在自定义模板标签上使用模板过滤器?

    我有一个关于模板标签的 Django 问题 我有一个名为的模板标签modal form有 4 个参数 该模板标签与基本变量完美配合 例如 modal form clients contact form Contacts contact 但当
  • 数据表 DT[i, j, by] 不使用 i 中的条件选择组,而是尝试过滤组内唯一值的数量

    我不确定我的数据发生了什么 也许我遗漏了一些简单的东西 我的数据集有一个 id dSc 和分配给每个 id 的簇 点 我想过滤掉那些只分配了一个簇的 id e g BS 100021 has only 1 cluster point ass
  • 使用Windows powershell从实时(更新)日志文件中过滤字符串

    我有一台计算机正在通过串行端口记录来自设备的事件 Putty 正在将它们记录到文件中 我曾经在 Linux 机器上运行过这个 基本上会tail f event log gt gt script sh 这是 nix 脚本 bin bash o
  • ASP.NET Core 中的自定义授权属性

    我正在研究 asp net core 但我不明白一些事情 例如 在 mvc net 5 中 我们可以使用 AuthorizeAttribute 创建类来过滤和授权操作 并将属性设置为操作 如下所示 public class AdminAut
  • 在过滤器Javascript中添加两个条件

    我试图在过滤器中添加两个条件 但只有一个有效 第一个条件检查单词之间是否有空格 第二个条件检查words length 是否大于给定的最小长度 如果字符串是 hello world 然后我需要在分割它时得到 hello world 相反 我
  • 同时使用两个数组中的元素的过滤器

    假设我们有两个大小相同的数组 A and B 现在 我们需要一个过滤器 对于给定的掩码大小 从以下位置选择元素A 但删除掩码的中心元素 并在其中插入相应的元素B 所以 3x3 伪掩码 看起来类似于 A A A A B A A A A 对平均
  • 根据另一个 csv 文件过滤 csv 文件中的行并将过滤后的数据保存在新文件中

    大家好 所以我试图根据file1过滤file2 其中file1是file2的子集 但 file2 有一个描述列 我需要能够分析 file1 中的数据 我想做的是过滤 file2 并仅获取 file1 中的标题及其描述 我尝试了这个 但我不太
  • 如何根据开始和结束条件过滤数据?

    我试图根据依赖于连续日期的两个条件来过滤数据 我在寻找对于 5 个以上的连续日期 值低于 2 with a 缓冲期 of 值 2 到 5 最多连续 3 天 它看起来像这样 很抱歉这里的 Excel 尝试很糟糕 第 1 天到第 10 天将包括
  • 将 dataGridView 绑定到绑定列表并按文本框过滤行

    我正在开发一个 Winforms 应用程序 并且有一个已经绑定到 dataGridView 的对象的 BindingList 我还有一个 过滤器 文本框 如果它们与文本框文本不匹配 我想从 datagridview 行中过滤掉行 我想以某种
  • 从字符串开头过滤 ng-repeat 元素

    我正在尝试 AngularJS 这是我的第一次尝试 我正在尝试使用 开头为 而不是 包含 之类的内容来过滤对象数组 但我不明白如何做到这一点 假设我有一个elements像这样的数组 amount 50 amount 25 如果我想过滤5两
  • JS中如何过滤多个字符串? [复制]

    这个问题在这里已经有答案了 我希望能够过滤数组中的多个字符串 类型 例如我想过滤类型meat并输入fruit在下面的数据结构中 我想要实现的是过滤数据对象 const data type meat food hamburger type f
  • 熊猫:有条件的groupby

    我有数据框 ID used at active seconds subdomain visiting category 123 2016 02 05 19 39 21 2 yandex ru 2 Computers 123 2016 02
  • opencv形态扩张滤波器作为最大滤波器

    就像中值滤波器的定义一样 我可以将 最大滤波器 定义为局部窗口 例如dst x y max 3x3 局部窗口像素 但我在opencv中找不到这样的过滤器 最接近的是 dilate 函数 然后我使用 dilate 函数的默认配置 但结果不正确
  • 一起使用“过滤”和“排序”的 Google 表格

    这是我的第一个问题 我希望一切都好 我是使用谷歌表格的新手 但我正在慢慢进步 我正在尝试构建一个工作表 其中包含工作表 1 中的所有数据 在工作表 2 上 我想过滤工作表 2 中 D 列中标有数字 1 的所有数据 为此 我正在使用 FILT
  • & 在 XML 代码中导致错误的符号

    我有以下 XML 代码 用于过滤我的 Crm Dynamics 表单中的查找字段 该过滤器根据输入帐户字段的数据使用 但是 帐户字段可以包含 符号 当出现时 会发生错误 表明 XML 格式不正确 有人有解决问题的办法吗 function a
  • R 如何将 curly curly 与 filter 或 filter_ 一起使用?

    我正在回答这个question https stackoverflow com questions 54350264 dplyr unquoting does not work with filter function评论者建议 ensym
  • Android SQLite 数据库从查询中删除重复项

    我是 SQLite 新手 我使用此查询是为了从特定用户的列中提取所有行 Cursor c db query true TABLE COLUMN USER user null null null null null 这是表格的示例 group

随机推荐

  • 谷粒商城-启动renren-fast-vue

    关于启动renren fast vue 为了启动这个 这两天都快搞疯了 本人没搞过前端 所以很费劲 资料 包含node js10 16 3与python2 7 2 链接 https pan baidu com s 1CLSNkiQhMgtM
  • arXiv上传文章注意事项

    1 注册 不忍吐槽arxiv的注册过程 密码有格式要求 而且一旦输错了 得从头填一遍密码和验证码 唯一需要注意的是 如果想要后续用这个账号上传文章 一定记得用自己的 edu邮箱注册 edu cn自然也可以 因为非edu邮箱注册的账号 在上传
  • Java架构直通车——过滤器和拦截器使用

    文章目录 过滤器和拦截器的区别 Filter过滤器 Interceptor拦截器 过滤器和拦截器的区别 规范不同 Filter是Servlet规范中定义的 是Servlet容器支持的 而拦截器是Spring容器内的 是Spring框架支持的
  • 龙书D3D11章节习题答案(第五章)

    以下答案仅供参考 有错欢迎留言 Chapter 5 The Rendering Pipeline 1 Construct the vertex and index list of a pyramid 金字塔 as shown in Figu
  • Qt 解决用QLineEdit实现的输入框开始没有光标在闪烁的问题

    在项目中遇到new出来QLineEdit在开始时 没有光标在闪烁 此时需要重写QlineEdit 代码如下 h文件 class CLineEidt public QLineEdit Q OBJECT public CLineEidt QWi
  • 大数据技术——用户与组管理

    一 实验目的 1 了解linux用户和组 2 熟练掌握liunx用户和组的基本操作 3 进一步了解linux系统 二 实验内容 1 用户账号的添加 删除与修改 2 用户口令的管理 3 用户组的管理 三 实验原理或流程 Linux系统是一个多
  • QT两种方法实现定时器

    方法一 1 重写虚函数 void timerEvent QTimerEvent e 2 启动定时器 返回值为定时器id 参数为定时间隔 单位为毫秒 int startTimer int interval 代码 widget h ifndef
  • DIV CSS优化

    一 Css background背景语法 CSS背景基础知识CSS 背景这里指通过CSS对对象设置背景属性 如通过CSS设置背景各种样式 背景语法 background background color background image b
  • 【会了这些命令,还怕搞不定思科设备?】

    一 常规配置 创建 VLAN S1 config vlan 100 给VLAN 命名 S1 config vlan name vlan100 删除 VLAN S1 config no vlan 100 分配端口到 VLAN 中 S1 con
  • 揭秘iPhone里的Transformer:基于GPT-2架构,分词器含emoji,MIT校友出品

    鱼羊 发自 凹非寺量子位 公众号 QbitAI 苹果Transformer的 秘密 让发烧友给扒出来了 大模型浪潮下 即使保守如苹果 也每逢发布会必提 Transformer 比如 在今年的WWDC上 苹果就已宣布 船新版本的iOS和mac
  • Error[Pe147] in IAR

    系统 win10 IDE IAR MCU cc2530 Error Error Pe147 declaration is incompatible with banked func xdata reentrant void UartSend
  • 【vue】点击tab,变色

    项目场景 商城APP首页开发 点击tab 变色 问题描述 无法变色 debug过程 1 定位 click itemClick 漏传参数index 2 检查代码拼写是否有误 currentIndex 3 在itemClick方法里 打log
  • python制作二级菜单_python实现二级登陆菜单及安装过程

    python实现二级登陆菜单的代码如下所示 1 三级菜单 注册 登陆 注销 2 进入每一个一级菜单 都会有下一级的菜单 user item dict try while True print Welcome sir input choice
  • 异步线程进行事务的管理,异步线程事务失效解决方案

    场景 工作中使用到异步线程 在发生异常时对操作的数据进行回滚 使用 Transactional propagation Propagation REQUIRES NEW 失效 解决方式 进行手动提交事务 代码 TODO 获取当前线程请求头信
  • 百度Apollo视频学习笔记

    APOLLO视频学习笔记 一 总览 无人驾驶车的运作方式 五个核心部件 计算机视觉 弄清楚周围的世界是怎样的 传感器融合 合并来自其他传感器的数据 如激光和雷达 更加深入了了解我们周围的环境 定位 精确地确定我在世界所处的位置 路径规划 绘
  • vlc web 插件 js接口

    Embed tag attributes To embed the plugin into a webpage use the following template Required ele
  • 【IEEE】2022年第六届计算机科学与智能控制国际会议(ISCSIC 2022)

    2022年第六届计算机科学与智能控制国际会议 ISCSIC 2022 重要信息 会议网址 www iscsic org 会议时间 2022年11月11 13日 召开地点 中国北京 截稿时间 2022年10月11日 录用通知 投稿后2周内 出
  • 34-变量类型

    接33节 这节举了variable的数据类型 有个例子是bool类型和其他类型相加 比如bool 浮点 由于bool类型有0和1两个值的选择 所以相加时当做0或者1 这里默认值为1 即true 再加上个浮点类型 注意的是 浮点类型的默认值启
  • UnknownHostException: api.weixin.qq.com解决方法

    在使用微信服务过程中 调用api weixin qq com 总会碰到如下这种问题 java net UnknownHostException api weixin qq com 未知的名称或服务 关键是这种问题偶尔出现 我们在测试环境甚至
  • jee中的过滤器

    对于web app的开发者来说 过滤器 是最常见不过了 在web xml中经常可以看到这样的几行