Java EE中filter(过滤器)的使用

来源:互联网 发布:淘宝二加一正品 编辑:程序博客网 时间:2024/04/29 12:16

   过滤器的使用:

Servlet过滤器可以当做一个只需要在web.xml文件中配置就可以灵活使用,可以重用的模块化组件,它能够对jsp、HTML、Servlet进行过滤,而实现一个过滤器需要实现两个步骤:

   1、实现接口

   2、实现3个方法

下面就让我们来实现这一过程:

   1、实现接口

   导入包 javax.servlet.Filter;

   2、实现3个方法

   初始化方法:表示的是过滤器初始化时的动作

   public void init(FilterConfig config);

  消亡方法:表示的是过滤器消亡消亡时候的动作

   public void destroy();

  过滤函数:表示的是过滤器过滤时的动作

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException;

首先,我们测试一下没有过滤器的表单提交数据,创建filterForm.jsp文件,其代码如下:

<%@page contentType="text/html" pageEncoding="UTF-8" language="java" import="java.util.*"%><!DOCTYPE html><html>    <head>        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">        <title>JSP Page</title>    </head>    <body>        <form action="DealWithServlet" method="post">            请输入学生信息的资料:            <input type="text" name="stuname">            <input type="submit" value="查询">          </form>    </body></html>

之后单击提交给Servlet进行处理,由于我们要提交给DealWithFilter,所以我们在这里再创建一个DealWithFilter过滤器文件,,其代码如下:

import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class DealWithServlet extends HttpServlet {    protected void processRequest(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {       String stuname=request.getParameter("stuname");       System.out.println("学生姓名:"+stuname);    }}

当然在创建Servlet时也是需要对web.xml进行配置,其代码为:

 <servlet>        <servlet-name>DealWithServlet</servlet-name>        <servlet-class>com.lutsoft.filter.DealWithServlet</servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>DealWithServlet</servlet-name>        <url-pattern>/DealWithServlet</url-pattern>    </servlet-mapping>

好了,让我们进行测试,结果是乱码的:如下图所示


现在我们进行对Filter编码进行设置,创建新过滤器文件EncodingFilter,代码如下:

package com.lutsoft.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;public class EncodingFilter implements Filter {      public void init(FilterConfig config) throws ServletException{}      public void destroy(){}      public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException        {            request.setCharacterEncoding("utf-8");            chain.doFilter(request, response);        }}

  对于以后的更改,我们只需要对request.setCharacterEncoding("utf-8");进行更改就可以实现对所有界面的更改,如将编码格式改为gb2312,其代码为request.setCharacterEncoding("gb2312");。

然后在web.xml中进行配置此过滤器,代码如下所示:

 <filter>        <filter-name>EncodingFilter</filter-name>        <filter-class>com.lutsoft.filter.EncodingFilter</filter-class>    </filter>    <filter-mapping>        <filter-name>EncodingFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>   

现在重新提交就能够正常显示了



好了,以上就是Filter的使用方法,谢谢

  

1 0
原创粉丝点击