编写过滤器需要实现接口(过滤器必须实现的接口)

网友投稿 381 2023-01-01


本篇文章给大家谈谈编写过滤器需要实现接口,以及过滤器必须实现的接口对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享编写过滤器需要实现接口的知识,其中也会对过滤器必须实现的接口进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

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

javax.servlet.Filter
实现这个接口,这个接口有三个方法。
void init(FilterConfig var1) 过滤器初始化时调用的方法
void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) 过滤器执行时调用的方法。
void destroy() 过滤器被销毁时调用的方法。

如何创建过滤器Filter?

建立一个过滤器涉及下列五个步骤: 1、建立一个实现Filter接口的类。这个类需要三个方法,分别是:doFilter、init和destroy。doFilter方法包含主要的过滤代码,init方法建立设置操作,而destroy方法进行清楚。 2、在doFilter方法中放入过滤行为。doFilter方法的第一个参数为ServletRequest对象。此对象给过滤器提供了对进入的信息(包括表单数据、cookie和HTTP请求头)的完全访问。第二个参数为ServletResponse,通常在简单的过滤器中忽略此参数。最后一个参数为FilterChain,如下一步所述,此参数用来调用servlet或JSP页。 3、调用FilterChain对象的doFilter方法。Filter接口的doFilter方法取一个FilterChain对象作为它的一个参数。在调用此对象的doFilter方法时,激活下一个相关的过滤器。如果没有另一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。 4、对相应的servlet和JSP页面注册过滤器。在部署描述符文件(web.xml)中使用filter和filter-mapping元素。 5、禁用激活器servlet。防止用户利用缺省servlet URL绕过过滤器设置。doFilter方法: public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException{HttpServletRequest req = (HttpServletRequest)request; System.out.println(req.getRemoteHost() + " tried to access " +req.getRequestURL() +" on " + new Date() + "."); chain.doFilter(request,response); }在web.xml中进行部署 分别是:filter和filter-mapping。filter元素向系统注册一个过滤对象,filter-mapping元素指定该过滤对象所应用的URL。 1.filter元素 filter元素位于部署描述符文件(web.xml)的前部,所有filter-mapping、servlet或servlet-mapping元素之前。filter元素具有如下六个可能的子元素: :icon 这是一个可选的元素,它声明IDE能够使用的一个图象文件。 :filter-name 这是一个必需的元素,它给过滤器分配一个选定的名字。 :display-name 这是一个可选的元素,它给出IDE使用的短名称。 :description 这也是一个可选的元素,它给出IDE的信息,提供文本文档。 :filter-class 这是一个必需的元素,它指定过滤器实现类的完全限定名。 :init-param 这是一个可选的元素,它定义可利用FilterConfig的getInitParameter方法读取的初始化参数。单个过滤器元素可包含多个init-param元素。2.filter-mapping元素 filter-mapping元素位于web.xml文件中filter元素之后serlvet元素之前。它包含如下三个可能的子元素:: :filter-name 这个必需的元素必须与用filter元素声明时给予过滤器的名称相匹配。 :url-pattern 此元素声明一个以斜杠(/)开始的模式,它指定过滤器应用的URL。所有filter-mapping元素中必须提供url-pattern或servlet-name。但不能对单个filter-mapping元素提供多个url-pattern元素项。如果希望过滤器适用于多个模式,可重复整个filter-mapping元素。 :servlet-name 此元素给出一个名称,此名称必须与利用servlet元素给予servlet或JSP页面的名称相匹配。不能给单个filter-mapping元素提供多个servlet-name元素项。

编写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
/*
-

java如何创建过滤器

弄过滤器编写过滤器需要实现接口,要实现filter接口,下面编写过滤器需要实现接口我写一个小例子
主要是用过滤器处理中文编码,至于你要用来做什么,你再自己写。。。比如权限控制,登录验证,之类

//下面这是一个类。。。。
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;

public class EncodingFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("GBK");//处理编码
response.setCharacterEncoding("GBK");//处理编码
chain.doFilter(request, response);//让过滤器执行下一个请求
}

public void destroy() {}

public void init(FilterConfig arg0) throws ServletException {}
}

//下面这个是在web.xml下编写过滤器需要实现接口的配置

<filter
<filter-nameencoding</filter-name
<filter-class

刚刚创建的那个实现filter接口的类的位置

例如编写过滤器需要实现接口:com.temp.filter.EncodingFilter

</filter-class
</filter
<filter-mapping
<filter-nameencoding</filter-name
<url-pattern*.jsp这个是以jsp为后缀的文件都拦截下来</url-pattern
</filter-mapping
可以写多个的<filter-mapping来配置你所要拦截的东西

恩,有点唠叨,希望可以帮助到你

如何在MyEclipse中写一个过滤器

开发一个过滤器编写过滤器需要实现接口的步骤编写过滤器需要实现接口
1. 写一个类编写过滤器需要实现接口,让该类实现javax.servlet.Filter接口
编写过滤器需要实现接口的类名是MyFilter
2. 实现接口中所有的方法
package com.mxl.web.Fileter;
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;
public class MyFilter implements Filter {
public void destroy() {//销毁
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
//过滤器做什么在这里边写
}
public void init(FilterConfig arg0) throws ServletException {//初始化
}
}
3. 在web.xml中进行配置
<filter
<filter-namemyfilter</filter-name类名
<filter-classcom.kaishengit.web.filter.MyFilter</filter-class类的完全限定名
</filter
<filter-mapping
<filter-namemyfilter</filter-name
<url-pattern/*</url-pattern过滤所有的,无法请求到资源
</filter-mapping
注意:
filter在容器启动时会进行初始化init操作 关于编写过滤器需要实现接口和过滤器必须实现的接口的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 编写过滤器需要实现接口的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于过滤器必须实现的接口、编写过滤器需要实现接口的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微服务网关详细讲解(微服务网关架构图)
下一篇:接口测试工具及其功能(接口测试工具及其功能介绍)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~