导航:首页 > 净水问答 > java过滤器过滤文件中的文件夹

java过滤器过滤文件中的文件夹

发布时间:2020-12-19 16:49:55

㈠ java项目和web项目中的过滤器文件怎么使用

过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进入这些资源的请求信息。在这之后,过滤器可以作如下的选择:

1. 以常规的方式调用资源(即,调用servlet或JSP页面)。
2.利用修改过的请求信息调用资源。
3. 调用资源,但在发送响应到客户机前对其进行修改
4. 阻止该资源调用,代之以转到其他的资源,返回一个特定的状态代码或生成替换输出。

1. 建立基本过滤器
建立一个过滤器涉及下列五个步骤:
1)建立一个实现Filter接口的类。这个类需要三个方法,分别是:doFilter、init和destroy。
doFilter方法包含主要的过滤代码(见第2步),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绕过过滤器设置。
1.1 建立一个实现Filter接口的类
所有过滤器都必须实现javax.servlet.Filter。这个接口包含三个方法,分别为doFilter、init和destroy。

public void doFilter(ServletRequset request,
ServletResponse response,
FilterChain chain)
thows ServletException, IOException

每当调用一个过滤器(即,每次请求与此过滤器相关的servlet或JSP页面)时,就执行其doFilter方法。正是这个方法包含了大部分过滤逻辑。第一个参数为与传入请求有关的ServletRequest。对于简单的过滤器,大多数过滤逻辑是基于这个对象的。如果处理HTTP请求,并且需要访问诸如getHeader或getCookies等在ServletRequest中无法得到的方法,就要把此对象构造成HttpServletRequest。

第二个参数为ServletResponse。除了在两个情形下要使用它以外,通常忽略这个参数。首先,如果希望完全阻塞对相关servlet或JSP页面的访问。可调用response.getWriter并直接发送一个响应到客户机。其次,如果希望修改相关的servlet或JSP页面的输出,可把响应包含在一个收集所有发送到它的输出的对象中。然后,在调用serlvet或JSP页面后,过滤器可检查输出,如果合适就修改它,之后发送到客户机。

DoFilter的最后一个参数为FilterChain对象。对此对象调用doFilter以激活与servlet或JSP页面相关的下一个过滤器。如果没有另一个相关的过滤器,则对doFilter的调用激活servlet或JSP本身。

public void init(FilterConfig config) thows ServletException

init方法只在此过滤器第一次初始化时执行,不是每次调用过滤器都执行它。对于简单的过滤器,可提供此方法的一个空体,但有两个原因需要使用init。首先,FilterConfig对象提供对servlet环境及web.xml文件中指派的过滤器名的访问。因此,普遍的办法是利用init将FilterConfig对象存放在一个字段中,以便doFilter方法能够访问servlet环境或过滤器名.其次,FilterConfig对象具有一个getInitParameter方法,它能够访问部署描述符文件(web.xml)中分配的过滤器初始化参数。

public void destroy( )
大多数过滤器简单地为此方法提供一个空体,不过,可利用它来完成诸如关闭过滤器使用的文件或数据库连接池等清除任务。

1.2 将过滤行为放入doFilter方法
doFilter方法为大多数过滤器地关键部分。每当调用一个过滤器时,都要执行doFilter。对于大多数过滤器来说,doFilter执行的步骤是基于传入的信息的。因此,可能要利用作为doFilter的第一个参数提供的ServletRequest。这个对象常常构造为HttpServletRequest类型,以提供对该类的更特殊方法的访问。

1.3 调用FilterChain对象的doFilter方法
Filter接口的doFilter方法以一个FilterChain对象作为它的第三个参数。在调用该对象的doFilter方法时,激活下一个相关的过滤器。这个过程一般持续到链中最后一个过滤器为止。在最后一个过滤器调用其FilterChain对象的doFilter方法时,激活servlet或页面自身。
但是,链中的任意过滤器都可以通过不调用其FilterChain的doFilter方法中断这个过程。在这样的情况下,不再调用JSP页面的serlvet,并且中断此调用过程的过滤器负责将输出提供给客户机。

1.4 对适当的servlet和JSP页面注册过滤器
部署描述符文件的2.3版本引入了两个用于过滤器的元素,分别是:filter和filter-mapping。filter元素向系统注册一个过滤对象,filter-mapping元素指定该过滤对象所应用的URL。

下面是一个完整的例子:
//建立一个实现Filter接口的类。这个类需要三个方法,分别是:doFilter、init和destroy。
//doFilter方法包含主要的过滤代码,init方法建立设置操作,而destroy方法进行清
package filterpkg;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class testFilter implements Filter{
public void init(FilterConfig filterConfig) throws ServletException
{
}
//在doFilter方法中放入过滤行为。doFilter方法的第一个参数为ServletRequest对象。
//此对象给过滤器提供了对进入的信息(包括表单数据、cookie和HTTP请求头)的完全访问。
//第二个参数为ServletResponse,通常在简单的过滤器中忽略此参数。
//最后一个参数为FilterChain,如下一步所述,此参数用来调用servlet或JSP页。
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain)
{
PrintWriter wout=null;
try
{
wout=response.getWriter();
}
catch(IOException e)
{
}
HttpServletRequest req=(HttpServletRequest)request;//将request转化为它的子类HttpServletRequest
String uri=req.getRequestURI();//获得传入的URI
if (uri.indexOf("MyJsp.jsp")>0 ||uri.indexOf("MainForm.do")>0 )//如果是我们指定的登录页面或验证页面
{
try
{
//调用FilterChain对象的doFilter方法。Filter接口的doFilter方法取一个FilterChain对象作为它的一个参数。
//在调用此对象的doFilter方法时,激活下一个相关的过滤器。如果没有另一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。
filterChain.doFilter(request, response);
}
catch(Exception e)
{
}
return;
}

if (req.getSession()!=null)
if (req.getSession().getAttribute("USERID")==null)
{
wout.write("<HTML><BODY> Check error! <br/> </BODY> </HTML>");
wout.flush();
return;
}
try
{
filterChain.doFilter(request, response);
}
catch(Exception e)
{
}
}

public void destroy()
{
}
}

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>CHECKCODE</filter-name>
<filter-class>filterpkg.testFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CHECKCODE</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ControlServlet</servlet-name>
<servlet-class>filterpkg.ControlServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ControlServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>

㈡ 过滤f盘下所有.Java文件并显示文件夹

使用文件过滤器实现:

java文件过滤器:
import java.io.File;
import java.io.FilenameFilter;

public class FileNameSelector implements FilenameFilter
{
String extension = ".";
public FileNameSelector(String fileExtensionNoDot)
{
extension += fileExtensionNoDot;
}
@Override
public boolean accept(File dir, String name)
{
return name.endsWith(extension);
}
public static void main(String[] args)
{
File directory = new File("E:\\data\\file_selector_test");
//列出所有文件
File[] files = directory.listFiles();
System.out.println("\n目录"+directory.getName()+"下的所有文件");
for(File file : files)
{
System.out.print(" " + file.getName());
}

//列出所有.java文件
File[] javaFiles = directory.listFiles(new FileNameSelector("java"));
System.out.println("\n目录"+directory.getName()+"下的.java文件");
for(File file : javaFiles)
{
System.out.print(" " + file.getName());
}
}
}

㈢ Java中的文件过滤器是怎么添加的

FileFilter filter = new FileNameExtensionFilter("文本文件", "txt");
JFileChooser fileChooser = ...;
fileChooser.addChoosableFileFilter(filter);

㈣ 求教java filter过滤器过滤多个路径

你可以吧除了index.jsp的所有jsp文件新建一个文件夹放进去 比如myJsp文件夹
然后过滤那个路径/myJsp/*

㈤ java中过滤器是什么文件

就是每进入一个方法时,都会调用一个方法,这个方法在javaweb
叫做拦截器,大概就这意思

㈥ java中FilenameFilter如何过滤C盘下面所有文件夹中以.dll结尾的文件

写一个类实现FilenameFilter,覆盖里面的accept方法,直接返回你要的dll文件就可以了

㈦ java FileFilter 过滤只保留文件夹和.xls文件

代码如下,供参考

import java.io.File;
import java.io.FileFilter;
public class Test {
public static void main(String[] args) {
File file = new File("E:\");
File[] files = file.listFiles(new FileFilter(){
@Override
public boolean accept(File pathname) {
// 判断文件名是目录 或 .xls 结尾
if (pathname.isDirectory() || pathname.getName().toUpperCase().endsWith(".XLS")) {
return true;
}
return false;
}});

for (File f : files) {
System.out.println(f.getName());
}
}
}

㈧ java 文件过滤器怎么实现。

import java.io.File;
import java.io.FilenameFilter;

/**
* 文件过滤器的简单实现
*
* @author ajaxfan
* @date 2010-04-17
*/
public class FileNameFilterDemo {
public static void main(String[] args) {
list("d:/");
}

/**
* 列出特定路径下的txt文件
*
* @param directoryName
* 路径名
*/
private static void list(String directoryName) {
File dir = new File(directoryName);
// 确定该路径指向一个目录
if (dir.exists() && dir.isDirectory()) {
// 列出所有结尾为txt的文件
File[] files = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith("txt");
}
});
System.out.println(java.util.Arrays.toString(files));
}
}
}

㈨ java file文件过滤器

对,必须是个文件夹,是文件就会报错!!!
new File(name).isDirectory();你的这句话是不对的,你要去读回一个文件,new File()里卖答弄传入的参数必须是能找到的文件,而不是文件夹,然后你有用isDirectory();去判断它是不是文件夹,肯定会报错.
isDirectory是去判断它到底是不是个文件夹?你明白

㈩ java过滤器怎么指定不过滤哪些文件

port java.io.FilenameFilter;

/**
* 文件过滤器的简单实现
*
* @author ajaxfan
* @date 2010-04-17
*/
public class FileNameFilterDemo {
public static void main(String[] args) {
list("d:/");
}

/**
* 列出特定路径下的txt文件
*
* @param directoryName
* 路径名
*/
private static void list(String directoryName) {
File dir = new File(directoryName);
// 确定该路径指向一个目录
if (dir.exists() && dir.isDirectory()) {
// 列出所有结尾为txt的文件
File[] files = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith("txt");
}
});
System.out.println(java.util.Arrays.toString(files));
}
}
}

阅读全文

与java过滤器过滤文件中的文件夹相关的资料

热点内容
享优乐净化器怎么连接手机 浏览:47
熔喷滤芯怎么拆换 浏览:837
净水器怎么清除泥沙 浏览:506
如何检测废水中三甲苯 浏览:237
什么是不饱和树脂脂 浏览:194
九阳净水器怎么拆滤芯视频 浏览:470
反渗透设备诚荐郑州净康乐好 浏览:471
污水管与废水管是否设置阻火圈 浏览:538
无锡薄膜废水蒸发器多少钱 浏览:697
污水处理厂如何保温 浏览:698
污水是什么处理的 浏览:248
红色污水怎么造成的 浏览:1000
烤瓷牙能树脂 浏览:81
水洗沙污水用那种设备 浏览:497
浙江纯净水哪个牌子好 浏览:871
3mlc型怎么换前置滤芯 浏览:919
污水处理厂管网怎么算占地 浏览:474
饮水机开门接水的那块板叫什么 浏览:896
挖机先导滤芯在哪里 浏览:605
污水怎么接入市政 浏览:659