首页 > 技术 > JAVA技术
JAVA
.NET
MDA
Core Patterns
JMX
AXIS
SOA
Hibernate
Struts
AJAX
XMLHTTP
测试
 

Web App struts框架里实现Filter

ChinaITLab收集整理 2005-8-26

 1 web.xml里添加filter配置信息。
   <filter>
   <filter-name>Authentication</filter-name>
   <filter-class>
   com.nova.colimas.web.filters.AuthenticationFilter
   </filter-class>
   <init-param>
   <param-name>onError</param-name>
   <param-value>/pages/index.jsp</param-value>
   </init-param>
   </filter>
   <filter-mapping>
   <filter-name>Authentication</filter-name>
   <url-pattern>/protect/*</url-pattern>
   </filter-mapping>
   <filter-class>定义使用com.nova.colimas.web.filters.AuthenticationFilter类执行过滤Action。
   <init-param>当验证失败后Forward到/pages/index.jsp
   <filter-mapping>只有当地址包括/protect/时运行filter类
  
   2 实现com.nova.colimas.web.filters.AuthenticationFilter
   package com.nova.colimas.web.filters;
   import java.io.IOException;
   import javax.servlet.RequestDispatcher;
   import javax.servlet.ServletException;
   import javax.servlet.http.*;
   import javax.servlet.Filter;import javax.servlet.FilterChain;
   import javax.servlet.FilterConfig;
   import com.nova.colimas.web.bean.UserBean;
   import javax.servlet.ServletRequest;
   import javax.servlet.ServletResponse;import org.apache.struts.Globals;
   import org.apache.struts.action.*;
   import com.nova.colimas.web.constants.Constants;
   /**
   * Filter implementation for user authentication。必须实现Filter接口
   * @author tyrone * @version $Id: AuthenticationFilter.java,v 1.0
   */public class AuthenticationFilter implements Filter{
   /**
   * filterConfig will store the reference of FilterConfig
   */  private FilterConfig filterConfig;
   private String onErrorUrl;
   /**
   * store the reference of the FilterConfig.
   * @param config FilterConfig object
   * @throws ServletException
   */  public void init(FilterConfig config) throws ServletException
   {//获得验证失败forward地址
   filterConfig = config;
   onErrorUrl=filterConfig.getInitParameter("onError");
   if (onErrorUrl==null || "".equals(onErrorUrl)){
   onErrorUrl="/pages/index.jsp";
   }
   }
   /**
   * User Authentication is done. If User is authenticated successful then
   * control is transferred to logon URI
   * @param ServletRequest Request
   * @param ServletRequest Response
   * @param FilterChain Filter Chain
   * @throws ServletException,IOException
   */  public void doFilter(ServletRequest request, ServletResponse response, FilterChain next)
   throws IOException, ServletException
   {
   HttpServletRequest httpRequest = (HttpServletRequest)request;
   HttpServletResponse httpResponse=(HttpServletResponse)response;
   // Current session
   HttpSession httpSession = httpRequest.getSession();
   //Session里是否有用户信息。
   if (httpSession.getAttribute(Constants.USER_KEY) == null)
   {
   ActionErrors errors=new ActionErrors();
   errors.add(ActionErrors.GLOBAL_ERROR,
   new ActionError("error authentication"));
   httpRequest.setAttribute(Globals.ERROR_KEY,errors);
   //没有,验证失败forward到/pages/index.jsp
   httpRequest.getRequestDispatcher(onErrorUrl).forward(httpRequest,httpResponse);
   }else//成果过滤Action结束
   next.doFilter(request,response);
   }
   /**
   * destroy() method is called by the servlet container
   */  public void destroy()
   {
   }
   }

本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。

相关产品
Unified Application Builder

下一篇
解析J2EE1.4新特性(2)-Servlet 2.4的新特性

 Copyright © 1999-2006 Imagination Solutions Group 版权所有