zoukankan      html  css  js  c++  java
  • Java Web Servlet过滤器

      什么叫过滤器呢?

      过滤器就是可以对浏览器向jsp,servlet,html等这些web资源发出请求和

    服务器回应给浏览器的内容,他可以进行过滤。这个过滤过程中可以拦截浏览

    器发出的请求和服务器回应给浏览器的内容。拦截之后,就可以进行查看,并且

    可以对拦截内容进行提取,或者进行修改。

      Servlet过滤器拦截请求和响应,以便查看,提取或操作客户机和服务器之间

    交换数据。    

      Servlet过滤器的用途:

        用户认证与授权管理:我们开发一个web应用,肯定有不同权限的用户,有管理员,有普通

    用户。而管理员又可能分为一级管理员,二级管理员,三级管理员。每一级管理员可能又有不同的管理权限

    操作,访问不同的资源。过去我们可能都是在jsp页面,servlet中加以权限的控制。通过session,看他是否
    有这个权限,如果有,则让他操作某个资源。这些都是些共性。那么现在我们就可以把他提取出来。让他通过

    过滤器来实现;用户来访问一个资源,我们通过过滤器来过滤这个请求,在程序中判断是否有权限来访问这个资源;

    有,则让他去访问,没有,就让他转到另外一个页面。这样通过过滤器就实现了授权管理;

        统计web应用的访问量,和访问的命中率,报告;

        实现web应用的日志处理功能;

        实现数据压缩功能;

        对传输的数据进行加密;

        实现XML文件的XSLT转换;

       实现Servlet过滤器  

        编写实现javax.servlet.Fillter接口的类;

          package javax.servlet;

          import java.io.IOException;

          public interface Filter{

            public void init(FilterConfig filterConfig)throws ServletException;

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

            public void destroy();

          }

        配置servlet过滤器;

          过滤器需要通过web.xml进行配置

          <filter>定义过滤器的名称,并且声明实现类

          <filter-mapping>将过滤器与Servlet或URL模式关联。

            <filter>

              <filter-name>EncodingFilter</filter-name>

              <filter-class>webbook.hongten.CharacterEncodingFilter</filter-class>

            </filter>

            <filter-mapping>

              <filter-name>EncodingFilter</filter-name>

              <url-pattern>/*</url-pattern>

            </filter-mapping>

    -----------------------------------------------------------------------------

    实例:使用过滤器设定传输参数编码

    新建一个web项目

    CharacterEnccodingFilter.java

    代码:

    /**
     *
     */
    package com.b510.hongten.filter;

    import java.io.IOException;

    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;

    /**
     *
     * @author XHW
     *
     * @date 2011-7-29
     *
     */
    public class CharacterEnccodingFilter implements javax.servlet.Filter {
     private FilterConfig config;

     private String encoding = "ISO8859_1";

     public void destroy() {
      config = null;
     }

     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
       throws IOException, ServletException {
      request.setCharacterEncoding(encoding);
      chain.doFilter(request, response);
     }

     public void init(FilterConfig config) throws ServletException {
      this.config = config;
      encoding = config.getInitParameter("encoding");
     }
    }

    -----------------------------------------------------------------------------

    web.xml

    代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     <filter>
      <filter-name>Encoding</filter-name>
      <filter-class>com.b510.hongten.filter.CharacterEnccodingFilter</filter-class>
      <init-param>
       <param-name>encoding</param-name>
       <param-value>UTF-8</param-value>
      </init-param>
     </filter>

     <filter-mapping>
      <filter-name>Encoding</filter-name>
      <url-pattern>/*</url-pattern>
     </filter-mapping>

     <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
     </welcome-file-list>
    </web-app>

    -----------------------------------------------------------------------------

    index.jsp

    代码:

    <%@page language="java" pageEncoding="UTF-8"%>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <html>
      <head>
        <title>demo Parameter Encoding</title>
      </head> 
      <body>
     用户名:<c:out value="${param.username}" default="none"/><br>
     密码:<c:out value="${param.password}" default="none"/><br>
        <form action="index.jsp" method="post">
          <table border="0">
            <tr>
              <td>用户名:</td>
              <td><input type="text" name="username"></td>
            </tr>
            <tr>
              <td>密码:</td>
              <td><input type="password" name="password"></td>
            </tr>
            <tr>
              <td colspan="2" align="center"><input type="submit"></td>
            </tr>
          </table>
        </form>
      </body>
    </html>

      

  • 相关阅读:
    十条jQuery代码片段助力Web开发效率提升
    C#如何释放已经加载的图片 (转)
    获取文件夹下最新文件 (转)
    时间格式转换
    调整ListBox控件的行间距及设置文本格式
    c++builder调用vc的dll
    mws文件中的tab文件改为相对路径
    .net 对配置文件内容的操作
    winform下mapxtreme2008 v7.0 生成release版提示找不到dll问题
    vue实现按字母A-Z选择城市
  • 原文地址:https://www.cnblogs.com/hongten/p/2120528.html
Copyright © 2011-2022 走看看