⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 refererfilter.java

📁 这个weblogging 设计得比较精巧
💻 JAVA
字号:
package org.roller.presentation.filters;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.roller.model.RefererManager;import org.roller.presentation.RollerContext;import org.roller.presentation.RollerRequest;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;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Keep track of referers. *  * @web.filter name="RefererFilter" * *web.filter-mapping url-pattern="/page/*" *  * @author David M. Johnson */public class RefererFilter implements Filter{    private FilterConfig   mFilterConfig = null;    private static Log mLogger =         LogFactory.getFactory().getInstance(RefererFilter.class);       /**     * destroy     */    public void destroy()    {    }    /**     * doFilter     */    public void doFilter(        ServletRequest req, ServletResponse res, FilterChain chain)        throws IOException, ServletException    {        HttpServletRequest request = (HttpServletRequest)req;        boolean isRefSpammer = false;               try        {            RollerRequest rreq = RollerRequest.getRollerRequest(request);            RollerContext rctx = RollerContext.getRollerContext(                mFilterConfig.getServletContext());                        if ( rreq.getUser() != null )            {                String userName = rreq.getUser().getUserName();                                                // Base page URLs, with and without www.                String basePageUrlWWW =                     rctx.getAbsoluteContextUrl(request)+"/page/"+userName;                                        String basePageUrl = basePageUrlWWW;                          if ( basePageUrlWWW.startsWith("http://www.") )                {                    // chop off the http://www.                    basePageUrl = "http://"+basePageUrlWWW.substring(11);                }                                                 // Base comment URLs, with and without www.                  String baseCommentsUrlWWW =                     rctx.getAbsoluteContextUrl(request)+"/comments/"+userName;                   String baseCommentsUrl = baseCommentsUrlWWW;                          if ( baseCommentsUrlWWW.startsWith("http://www.") )                {                    // chop off the http://www.                    baseCommentsUrl= "http://"+baseCommentsUrlWWW.substring(11);                }                                // Don't process hits from same user's blogs as referers by                // ignoring Don't process referer from pages that start with base URLs.                 String referer = request.getHeader("Referer");                               if (  referer==null ||                      (                          !referer.startsWith( basePageUrl )                       && !referer.startsWith( basePageUrlWWW )                      && !referer.startsWith( baseCommentsUrl )                      && !referer.startsWith( baseCommentsUrlWWW )                      )                   )                {                    RefererManager refMgr =                         rreq.getRoller().getRefererManager();                    isRefSpammer = refMgr.processRequest(rreq);                }                else                {                    if (mLogger.isDebugEnabled())                    {                        mLogger.debug("Ignoring referer="+referer);                    }                }            }        }        catch (Exception e)        {            mLogger.error("Processing referer",e);        }                if (isRefSpammer)        {            HttpServletResponse response = (HttpServletResponse)res;            response.sendError(HttpServletResponse.SC_FORBIDDEN);                    }        else        {            chain.doFilter(req, res);        }    }    /**     * init     */    public void init(FilterConfig filterConfig) throws ServletException    {        mFilterConfig = filterConfig;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -