文件类型过滤器
A. 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>
B. 什么是图形过滤器
为了使 Microsoft 剪辑管理器可以处理特定图形或其他媒体格式,您的计算机必须安装适当的软件。图形过滤器和媒体播放器随操作系统、图形程序和其他程序提供。
如果您收到一条错误消息,指出您的图形导入过滤器或媒体播放器可能丢失、损坏或不兼容,请尝试添加另一个相同类型的文件。如果工作正常,则表明第一个剪辑文件可能已损坏。
但是,一个或多个剪辑可能不兼容为特定文件类型安装的图形过滤器或媒体播放器。或者,可能需要安装过滤器或媒体播放器。
您可以重新运行剪辑管理器的安装程序,以安装适用于下列文件类型的过滤器:计算机图形图元文件 (.cgm)、FlashPix(包括 PhotoDraw 和 Picture It!)(.fpx 和 .mix)、Kodak Photo CD (.pcd)、Macintosh PICT (.pct) 和 WordPerfect (.wpg)。
C. Beyond Compare 设置文件过滤器
在使用Beyond
Compare软件进行文件夹比较时,您可以指定您想要包括或者排除的文件类型。例专如,如果您要比较某个文属件夹,你可以选择包括文件类型如
*.pas、
*.dfm
和
*.dpr。但是,您也可以通过设置排除文件类型,选择比较文件夹只包含除
*.dcu
以外的所有文件。
您可以使用文件过滤器工具栏,去编辑指定一个简单的“包括这些类型”过滤器。输入用分号分隔的文件类型,或使用下拉列表从预设选择,其中文件前包括一个减号(-)将的被排除。
除了这些简单的通配符过滤器,您可以指定更复杂的过滤器,可以自定义包含或排除文件或文件夹的名字。单击“过滤”按钮,打开文件夹比较—会话设置对话框,切换到“名称过滤器”选项卡,选择需要包含或者排除的文件或文件夹,单击“添加到预设”按钮,即可自定义过滤文件类型。
文件过滤器可以过滤基于他们修改日期、大小、文件属性或文本内容的文件。在文件夹比较--会话设置对话框中,切换到其他过滤器选项卡。单击“+”按钮,选择排除文件类型。单击确定,即可完成过滤设置。
D. 文件类型过滤
|如下:
CString str="所有文件回答(*.*)|*.*|jpeg文件(*.jpg)|*.jpg|jpg文件; gif文件(*.jpg; *.gif)|*.jpg; *.gif|";
CFileDialog Dlg(TRUE,NULL,NULL,NULL,str,this);
Dlg.DoModal();
E. Java中的文件过滤器是怎么添加的
FileFilter filter = new FileNameExtensionFilter("文本文件", "txt");
JFileChooser fileChooser = ...;
fileChooser.addChoosableFileFilter(filter);
F. vb通用对话框过滤 文件类型
通过使用CommonDialog 控件的Filter 属性来过滤。
可以设置它的Filter 属性,这样对话就只显示某种文件类型,如文本文件。
Filter 属性(公共对话框),返回或设置在对话框的类型列表框中所显示的过滤器。
PrivateSubCommand1_Click()
'设置“CancelError”为True
CommonDialog1.CancelError=True
OnErrorGoToErrHandler
'设置标志
CommonDialog1.Flags=cdlOFNHideReadOnly
'设置过滤器
'CommonDialog1.Filter="AllFiles(*.*)|*.*|TextFiles"&_
'"(*.txt)|*.txt|BatchFiles(*.bat)|*.bat"
CommonDialog1.Filter="TextFiles"&"(*.txt)|*.txt|"'本行代码设置只显示文本文件的过滤器
'指定缺省的过滤器
CommonDialog1.FilterIndex=2
'显示“打开”对话框
CommonDialog1.ShowOpen
'显示选定文件的名字
MsgBoxCommonDialog1.FileName
ExitSub
ErrHandler:
'用户按了“取消”按钮
ExitSub
EndSub
G. java中文件浏览对话框中怎么过滤文件类型
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"JPG & GIF Images", "jpg", "gif");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(parent);
if(returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: " +
chooser.getSelectedFile().getName());
}
JFileChooser就可以实现文件选择,但是只显示指定的文件类型的过滤类FileNameExtensionFilter只是JDK1.6版本里的,JDK1.4及其以下是没有的回,如果想在JDK1.4里实答现过滤,可以去1.6版本里找到该源码,自己编译使用
H. VC 中如何获得文件打开/保存对话框中的当前选定的类型过滤器
|||这个可以:
CString filter_str = "txt files (*.txt)|*.txt|word files (*.doc)|*.doc||";
CFileDialog mSaveDlg(FALSE,NULL,NULL,NULL,filter_str,NULL);//初始化
mSaveDlg.DoModal();//显示
DWORD filter_num = mSaveDlg.m_ofn.nFilterIndex;//返回的是当前选择的文件类型是第专几个
filter_num -= 1;//适应数组
char a[][9] = {".txt",".avi",""};//文件类型数组
CString file_ext = a[filter_num];//获得文件类型的属名称
int ext_length = file_ext.GetLength();//获得长度
I. java 文件过滤器怎么实现。
import java.io.File;
import java.io.FilenameFilter;
/**
* 文件过滤器的简单实现
*
* @ 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));
}
}
}
J. Beyond Compare怎样巧妙过滤文件
设置文件过滤器
在使用Beyond Compare软件进行文件夹比较时,您可以指定您想要包括或者排除的文件类型。例如,如果您要比较某个文件夹,你可以选择包括文件类型如 *.pas、 *.dfm 和 *.dpr。但是,您也可以通过设置排除文件类型,选择比较文件夹只包含除 *.dcu 以外的所有文件。
您可以使用文件过滤器工具栏,去编辑指定一个简单的“包括这些类型”过滤器。输入用分号分隔的文件类型,或使用下拉列表从预设选择,其中文件前包括一个减号(-)将的被排除。
除了这些简单的通配符过滤器,您可以指定更复杂的过滤器,可以自定义包含或排除文件或文件夹的名字。单击“过滤”按钮,打开文件夹比较—会话设置对话框,切换到“名称过滤器”选项卡,选择需要包含或者排除的文件或文件夹,单击“添加到预设”按钮,即可自定义过滤文件类型。
文件过滤器可以过滤基于他们修改日期、大小、文件属性或文本内容的文件。在文件夹比较--会话设置对话框中,切换到其他过滤器选项卡。单击“+”按钮,选择排除文件类型。单击确定,即可完成过滤设置。
注:文件夹不直接过滤基于它们的属性,但影响过滤的内容。
通过上述关于文件过滤器内容的学习,在您以后使用Beyond Compare软件进行文件夹比较时,可以自定义文件过滤器,从而排除无需比较的文件或者文件夹,提高工作效率。