导航:首页 > 净水问答 > serclet过滤器

serclet过滤器

发布时间:2022-02-24 12:27:29

⑴ servlet怎么使用多个过滤

只需要一个过滤器,过滤所有URL,在filter类中做如下操作:代码参考,相信你会懂的。

publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,
FilterChainchain)throwsIOException,ServletException{
HttpServletRequestreq=(HttpServletRequest)request;
Stringuri=((HttpServletRequest)request).getRequestURI();
List<String>urilist=newArrayList<String>();
urilist.add("/UserLoginReg/DoRegisterServlet");
urilist.add("/UserLoginReg/UserManageServlet");
urilist.add("/UserLoginReg/FindUserServlet");
if(urilist.contains(uri)==true){

HttpSessionsession=req.getSession(true);
//从session里取的用户名信息
UserBeanuser=(UserBean)session.getAttribute("userall");
//判断如果没有取到用户信息,就跳转到登陆页面
if(user==null){
//跳转到登陆页面
request.setAttribute("info","请先登录");
req.getRequestDispatcher("WEB-INF/jsp/login.jsp").forward(request,
response);
}else{
//已经登陆,继续此次请求
chain.doFilter(request,response);
}

}else{
//已经登陆,继续此次请求
chain.doFilter(request,response);
}
}

⑵ 请说明servlet过滤器的用途

Filter,过滤器,顾名思义,即是对数据等的过滤,预处理过程。为什么要引入过滤器呢?在平常访问网站的时候,有时候发一些敏感的信息,发出后显示时 就会将敏感信息用*等字符替代,这就是用过滤器对信息进行了处理。这只是一个简单的例子,当然,过滤器那么强大,它的功能也不可能局限于此,它不仅能预处 理数据,只要是发送过来的请求它都是可以预处理的,同时,它还可以对服务器返回的响应进行预处理,这样,大大减轻了服务器的压力。例如,实现URL级别的 权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
过滤作用,对从客户端向服务器端发送的请求进行过滤,也可以对服务器端返回的响应进行处理。它使用户可以改变一个request和修改一个 response.。Filter 不是一个servlet,它不能产生一个response,但是它能够在一个request到达servlet之前预处理request,也可以在 response离开servlet时处理response。换句话说,filter其实是客户端与servlet中间的一个传递者,并且它可以对要传递 的东西进行修改。

⑶ 编写servlet过滤器时下面哪个接口用于调用过滤器连接

Filter简介

Filter称滤器Servlet技术实用技术Web发员通Filter技术web服务器管理所web资源:例Jsp,
Servlet, 静态图片文件或静态 html
文件等进行拦截实现些特殊功能例实现URL级别权限访问控制、滤敏词汇、压缩响应信息等些高级功能

主要用于用户请求进行预处理HttpServletResponse进行处理使用Filter完整流程:Filter用户请求进行预处理接着请求交给Servlet进行处理并响应Filter再服务器响应进行处理

Filter功能

HttpServletRequest达 Servlet 前拦截客户HttpServletRequest 根据需要检查HttpServletRequest修改HttpServletRequest 数据
HttpServletResponse达客户端前拦截HttpServletResponse 根据需要检查HttpServletResponse修改HttpServletResponse数据

何借助Filter实现拦截功能

Filter接口doFilter发员编写Filter并配置哪web资源进行拦截Web服务器每调用web资源service前都先调用filterdoFilter该内编写代码达目:

调用目标资源前让段代码执行
否调用目标资源(即否让用户访问web资源)
web服务器调用doFilter传递filterChain象进filterChain象filter接口重要象提供doFilter发员根据需求决定否调用调用该则web服务器调用web资源service即web资源访问否则web资源访问

Filter发两步走

编写java类实现Filter接口并实现其doFilter
web.xml文件编写filter类进行注册并设置所能拦截资源

web.xml配置各节点介绍:

指定滤器
用于滤器指定名字该元素内容能空
元素用于指定滤器完整限定类名
元素用于滤器指定初始化参数元素指定参数名字指定参数值
滤器使用FilterConfig接口象访问初始化参数
元素用于设置 Filter 所负责拦截资源Filter拦截资源通两种式指定:Servlet 名称资源访问请求路径
元素用于设置filter注册名称该值必须元素声明滤器名字
设置 filter 所拦截请求路径(滤器关联URL式)
指定滤器所拦截Servlet名称
指定滤器所拦截资源 Servlet 容器调用式REQUEST,INCLUDE,FORWARDERROR默认REQUEST用户设置元素用指定 Filter 资源种调用式进行拦截
元素设置值及其意义
REQUEST:用户直接访问页面Web容器调用滤器目标资源通RequestDispatcherinclude()或forward()访问该滤器调用
INCLUDE:目标资源通RequestDispatcherinclude()访问该滤器调用除外该滤器调用
FORWARD:目标资源通RequestDispatcherforward()访问该滤器调用除外该滤器调用
ERROR:目标资源通声明式异处理机制调用该滤器调用除外滤器调用

Filter链

web应用发编写Filter些Filter组合起称Filter链

web服务器根据Filterweb.xml文件注册顺序决定先调用哪Filter第FilterdoFilter调用web服务器创建代表Filter链FilterChain象传递给该doFilter发员调用FilterChain象doFilter则web服务器检查FilterChain象否filter则调用第2filter没则调用目标资源

Filter命周期

public void init(FilterConfig filterConfig) throws ServletException;//初始化
我编写Servlet程序Filter创建销毁由WEB服务器负责 web 应用程序启web 服务器创建Filter 实例象并调用其init读取web.xml配置完象初始化功能续用户请求作拦截准备工作(filter象创建init执行)发员通init参数获代表前filter配置信息FilterConfig象

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException;//拦截请求
完实际滤操作客户请求访问与滤器关联URL候Servlet滤器先执行doFilterFilterChain参数用于访问续滤器

public void destroy();//销毁
Filter象创建驻留内存web应用移除或服务器停止才销毁Web容器卸载 Filter 象前调用该Filter命周期仅执行释放滤器使用资源

FilterConfig接口

用户配置filter使用filter配置些初始化参数web容器实例化Filter象调用其init封装filter初始化参数filterConfig象传递进发员编写filter通filterConfig象获内容:

String getFilterName();//filter名称
String getInitParameter(String name);//返部署描述指定名称初始化参数值存返null.
Enumeration getInitParameterNames();//返滤器所初始化参数名字枚举集合
public ServletContext getServletContext();//返Servlet文象引用

Filter使用案例

使用Filter验证用户登录安全控制

前段间参与维护项目用户退系统再址栏访问历史根据url仍能够进入系统响应页面我检查发现请求未进行滤验证用户登录添加filter搞定问题

先web.xml配置

SessionFilter
com.action.login.SessionFilter

logonStrings
/project/index.jsp;login.do

includeStrings
.do;.jsp

redirectPath
/index.jsp

disabletestfilter
N

SessionFilter
/*

接着编写FilterServlet

package com.action.login;

import java.io.IOException;

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.HttpServletResponseWrapper;

/**
* 判断用户否登录,未登录则退系统
*/
public class SessionFilter implements Filter {

public FilterConfig config;

public void destroy() {
this.config = null;
}

public static boolean isContains(String container, String[] regx) {
boolean result = false;

for (int i = 0; i < regx.length; i++) {
if (container.indexOf(regx[i]) != -1) {
return true;
}
}
return result;
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest hrequest = (HttpServletRequest)request;
HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper((HttpServletResponse) response);

String logonStrings = config.getInitParameter("logonStrings"); // 登录登陆页面
String includeStrings = config.getInitParameter("includeStrings"); // 滤资源缀参数
String redirectPath = hrequest.getContextPath() + config.getInitParameter("redirectPath");// 没登陆转向页面
String disabletestfilter = config.getInitParameter("disabletestfilter");// 滤器否效

if (disabletestfilter.toUpperCase().equals("Y")) { // 滤效
chain.doFilter(request, response);
return;
}
String[] logonList = logonStrings.split(";");
String[] includeList = includeStrings.split(";");

if (!this.isContains(hrequest.getRequestURI(), includeList)) {// 指定滤参数缀进行滤
chain.doFilter(request, response);
return;
}

if (this.isContains(hrequest.getRequestURI(), logonList)) {// 登录页面进行滤
chain.doFilter(request, response);
return;
}

String user = ( String ) hrequest.getSession().getAttribute("useronly");//判断用户否登录
if (user == null) {
wrapper.sendRedirect(redirectPath);
return;
}else {
chain.doFilter(request, response);
return;
}
}

public void init(FilterConfig filterConfig) throws ServletException {
config = filterConfig;
}
}

既完用户所请求均要经Filter进行验证用户登录

防止文乱码滤器

项目使用spring框架前台JSP页面Java代码使用同字符集进行编码候现表单提交数据或者传/载文名称文件现乱码问题使用滤器

encoding
org.springframework.web.filter.CharacterEncodingFilter

encoding
UTF-8

forceEncoding
false

encoding
/*

-

⑷ 关于servlet过滤器的问题

向下是指向下一个过滤器,因为可能同时拥有多个过滤器,一个过滤器结束后需要传给下一个过滤器,直到运行完所有的过滤器。

⑸ servlet过滤器有什么作用,一般用在什么地方

1.什么叫过滤器呢?
过滤器就是可以对浏览器向jsp,servlet,html等这些web资源发出请求和
服务器回应给浏览器的内容,他可以进行过滤。这个过滤过程中可以拦截浏览
器发出的请求和服务器回应给浏览器的内容。拦截之后,就可以进行查看,并且
可以对拦截内容进行提取,或者进行修改。
Servlet过滤器拦截请求和响应,以便查看,提取或操作客户机和服务器之间
交换数据。
2.Servlet过滤器的用途:
用户认证与授权管理:我们开发一个web应用,肯定有不同权限的用户,有管理员,有普通用户。而管理员又可能分为一级管理员,二级管理员,三级管理员。每一级管理员可能又有不同的管理权限操作,访问不同的资源。过去我们可能都是在jsp页面,servlet中加以权限的控制。通过session,看他是否有这个权限,如果有,则让他操作某个资源。这些都是些共性。那么现在我们就可以把他提取出来。让他通过过滤器来实现;用户来访问一个资源,我们通过过滤器来过滤这个请求,在程序中判断是否有权限来访问这个资源;
有,则让他去访问,没有,就让他转到另外一个页面。这样通过过滤器就实现了授权管理;
统计web应用的访问量,和访问的命中率,报告;
实现web应用的日志处理功能;
实现数据压缩功能;
对传输的数据进行加密;
实现XML文件的XSLT转换;

⑹ 编写servlet过滤器时,哪个接口用于调用过滤器链

Servlet过滤器是小型的Web组件,能拦截请求和响应,以便查看、提取或以某种方式操作正在客户机和服务器之间交换的数据。过滤器是封装了一些功能的Web组件,这些功能虽然很重要,但是对于处理客户机请求或发送响应来说不是决定性的。典型的例子包括记录关于请求和响应的数据、处理安全协议、管理会话属性等。

⑺ servlet过滤器的作用

在HttpServletRequest 到达Servlet 之前,拦截客户的HttpServletRequest 。
根据需要检查HttpServletRequest ,也可以修改HttpServletRequest 头和数据。
在HttpServletResponse 到达客户端之前,拦截HttpServletResponse 。
根据需要检查HttpServletResponse ,可以修改HttpServletResponse 头和数据。
过滤器的一些常见应用:
1:认证过滤:对用户请求进行统一的认证。
2:登录和审核过滤:对用户的访问请求进行记录和审核。
3:图像转换过滤:转换图像格式。
4:数据压缩过滤 :对用户发生的数据进行压缩,从而减少传输量。
5:加密过滤:对请求和响应进行加密解密处理。
6:令牌过滤
7:资源访问触发事件过滤
8:XSLT过滤
9:MIME-type过滤

⑻ 编写servlet过滤器是,哪个接口用于调用过滤器链中下一个过滤器

1、首先要明确拦截器、滤器
1.1 拦截器:
拦截器AOP(Aspect-Oriented Programming)用于某或字段访问前进行拦截前或加入某些操作拦截AOP种实现策略
Webwork文文档解释——拦截器态拦截Action调用象提供种机制使发者定义action执行前执行代码action执行前阻止其执行同提供种提取action重用部式
谈拦截器词家应该知道——拦截器链(Interceptor ChainStruts 2称拦截器栈 Interceptor Stack)拦截器链拦截器按定顺序联结条链访问拦截或字段拦截器链拦截器按其前定义顺序调用
1.2. 拦截器实现原理:
部候拦截器都通代理式调用Struts 2拦截器实现相简单请求达Struts 2ServletDispatcherStruts 2查找配置文件并根据其配置实例化相拦截器象串列表(list)调用列表拦截器
1.3 滤器
滤器程序先于与相关servlet或JSP页面运行服务器滤器附加或servlet或JSP页面并且检查进入些资源请求信息滤器作选择:
①规式调用资源(即调用servlet或JSP页面)
②利用修改请求信息调用资源
③调用资源发送响应客户机前其进行修改
④阻止该资源调用代转其资源返特定状态代码或替换输

1.4 Servlet滤器基本原理
Servlet作滤器使用客户请求进行处理处理完交给滤器处理客户请求滤链逐处理直请求发送目标止例某网站提交修改注册信息网页用户填写完修改信息并提交服务器进行处理需要做两项工作:判断客户端否效;提交数据进行统编码两项工作由两滤器组滤链进行处理滤器处理功提交数据发送终目标;滤器处理功视图派发指定错误页面
-

⑼ servlet和过滤器的区别是什么

一、概念:
1、servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。
2、filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。
二、生命周期:
1、servlet:servlet的生命周期始于它被装入web服务器的内存时,并在web服务器终止或重新装入servlet时结束。servlet一旦被装入web服务器,一般不会从web服务器内存中删除,直至web服务器关闭或重新结束。
(1)、装入:启动服务器时加载Servlet的实例;
(2)、初始化:web服务器启动时或web服务器接收到请求时,或者两者之间的某个时刻启动。初始化工作有init()方法负责执行完成;
(3)、调用:从第一次到以后的多次访问,都是只调用doGet()或doPost()方法;
(4)、销毁:停止服务器时调用destroy()方法,销毁实例。
2、filter:(一定要实现javax.servlet包的Filter接口的三个方法init()、doFilter()、destroy(),空实现也行)
(1)、启动服务器时加载过滤器的实例,并调用init()方法来初始化实例;
(2)、每一次请求时都只调用方法doFilter()进行处理;
(3)、停止服务器时调用destroy()方法,销毁实例。
三、职责
1、servlet:
创建并返回一个包含基于客户请求性质的动态内容的完整的html页面;
创建可嵌入到现有的html页面中的一部分html页面(html片段);
读取客户端发来的隐藏数据;
读取客户端发来的显示数据;
与其他服务器资源(包括数据库和java的应用程序)进行通信;
通过状态代码和响应头向客户端发送隐藏数据。
2、filter:
filter能够在一个请求到达servlet之前预处理用户请求,也可以在离开servlet时处理http响应:
在执行servlet之前,首先执行filter程序,并为之做一些预处理工作;
根据程序需要修改请求和响应;
在servlet被调用之后截获servlet的执行
四、区别:
1,servlet 流程是短的,url传来之后,就对其进行处理,之后返回或转向到某一自己指定的页面。它主要用来在 业务处理之前进行控制.
2,filter 流程是线性的, url传来之后,检查之后,可保持原来的流程继续向下执行,被下一个filter, servlet接收等,而servlet 处理之后,不会继续向下传递。filter功能可用来保持流程继续按照原来的方式进行下去,或者主导流程,而servlet的功能主要用来主导流程。
filter可用来进行字符编码的过滤,检测用户是否登陆的过滤,禁止页面缓存等。
参考:https://..com/question/1577030487304140580.html

阅读全文

与serclet过滤器相关的资料

热点内容
湖北公共场所用净水机哪个好 浏览:492
高分子吸水树脂如何展示 浏览:65
污水管道测量报告 浏览:483
饮水机的水为什么不停 浏览:440
离子交换树脂洗不到中性 浏览:438
1万吨污水厂是什么规模 浏览:429
大货车空气滤芯灯亮怎么回事 浏览:41
滤芯ro膜上错了型号 浏览:732
花伞除垢小妙招 浏览:186
污水排污费收费标准 浏览:809
09款凯美瑞空调滤芯原装什么牌子 浏览:94
铃木跨骑摩托车怎么换空气滤芯器 浏览:766
石灰石湿法脱硫废水排放标准 浏览:13
棋牌室用什么饮水机 浏览:79
超低压反渗透膜压力 浏览:1
屯昌县城污水 浏览:602
磷脂油废水 浏览:452
21款CT6空调滤芯怎么换 浏览:172
滤芯收尘器多少钱一台 浏览:746
耐水煮玻璃漆树脂 浏览:80