服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

web app struts框架里实现filter


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

扫描关注微信公众号