关于Filter过滤器处理乱码问题的简单应用


今天学到了关于filter过滤的章节,也总结出了一些简单的应用,如下代码都是通过了测试无误才敢写下来的: 
首先是写一个filter过滤器对象AddFilter 
源代码:package test; 

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 AddFilter implements Filter 

private FilterConfig config; 
public void init(FilterConfig config) 

this.config = config; 


public void destroy() 

this.config=null; 


public void doFilter(ServletRequest request,ServletResponse response,FilterChain chin) 

System.out.println("赋值开始"); 
String coding = config.getInitParameter("coding"); 
System.out.println(coding); 
/*从配置文件中(web.xml中获得coding的值,可以用来传编码方式或者其他的东西,大致的意思就是只利用过滤器来实现赋值,同时又可以做到在需要修改的时候只要改下配置文件就可以全部改动,加强了代码的可维护性)*/ 

request.setAttribute("coding", coding); 




然后在配置文件里一定要加的: 
<filter> 
<filter-name>testServlet</filter-name> 
<filter-class>test.AddFilter</filter-class> 
<init-param> 
<param-name>coding</param-name> 
<param-value>gbk</param-value> 
</init-param> 
</filter> 

<filter-mapping> 
<filter-name>testServlet</filter-name> 
<servlet-name>testServlet</servlet-name> 
</filter-mapping> 

这里是用来过滤testServlet这个servlet,只要是要调用这个servlet的事件,都要通过它来过滤,这里实现的功能就是在过滤的同时来传个coding(暂时可以理解为编码集)然后下面是testServlet的源代码,这样就可以在过滤后得到配置里面所赋给它的值,以后如果需要改变,只需要改变下配置文件里的就OK了: 

package test; 

import java.io.IOException; 
import java.io.PrintStream; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 
import javax.servlet.ServletConfig; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class TestServlet extends HttpServlet 
{ 
public TestServlet() 
{ 
super(); 
} 

public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException 
{ 
System.out.println(request.getParameter("coding ")); 
ServletConfig config = getServletConfig(); 
System.out.println(config.getServletName()); 
} 
public void destroy() 
{ 
super.destroy(); 
} 
public void doGet(HttpServletRequest request, 
HttpServletResponse response) 
throws ServletException, IOException 
{ 
} 

public void doPost( 
HttpServletRequest request, 
HttpServletResponse response) 
throws ServletException, IOException 
{ 
doGet(request, response); 
} 

public void init(ServletConfig config) throws ServletException 
{ 
super.init(config); 
} 

}


这样子,一个简单的过滤器就算是完成了。 
当发布之后运行结果 
会将配置里面设置的值打印出来。 
当然,在过滤时可以做很多的事情,也不是局限于这一种,此处只是举一反三而已。 

下一篇

分享

热门文章