到 Google 资讯主页   
EasyJF首页   资料   源码   软件    论坛   网站    
   使用帮助    
    该信息为本站MyRSS系统缓存内容,部分图片及附件有可能无法正常使用.easyjf.comwww.matrix.org.cn无关,不对该信息负责.通过http://www.matrix.org.cn//resource/article/43/43638_struts_Filter.html访问该信息的原始内容.
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   
Web App struts框架里实现Filter.
作者:tyrone1979 来源:www.matrix.org.cn  发布时间:2006-02-22 17:51:36.983

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()
        {
        }
        
}


 
相关文章
 
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   


EasyJF.com 2006 隐私政策 使用EasyJF前必读