controllerfilter.java

来自「雷霆论坛是用J2EE技术开发的功能强大、扩展性强、易于定制」· Java 代码 · 共 85 行

JAVA
85
字号
package lightningboard;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.FilterChain;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import lightningboard.action.*;

/**
 * Control all *.do.
 * @version 0.3.5
 * @author Xiaobo Liu
 */
public class ControllerFilter implements Filter {

  /**
   * Action dispatch<BR />
   * example: homde.do will be create HomeAction and call its excute() method.
   */
  protected FilterConfig filterConfig;

  public void init(FilterConfig config) {
    this.filterConfig = config;
  }

  public void destroy() {
    this.filterConfig = null;
  }
  public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain filterChain)
      throws IOException, ServletException{
    HttpServletRequest request = (HttpServletRequest)srequest;
    HttpServletResponse response = (HttpServletResponse)sresponse;

    long timeStart=System.currentTimeMillis();

    Configuration cfg=Configuration.getInstance();
    String encoding=cfg.getValue("SYS.ENCODING");
    request.setCharacterEncoding(encoding);

    String path = (String) request.getRequestURI();
    String actionString = path.substring(path.lastIndexOf("/") + 1,path.lastIndexOf("."));
    String forwardPage=null;
    try {
      if(actionString.equals("forum"))
        forwardPage=new ForumAction().excute(request,response);
      else if(actionString.equals("topic"))
        forwardPage=new TopicAction().excute(request,response);
      else if(actionString.equals("user"))
        forwardPage=new UserAction().excute(request,response);
      else if(actionString.equals("userList"))
        forwardPage=new UserListAction().excute(request,response);
      else if(actionString.equals("login"))
        forwardPage=new LoginAction().excute(request,response);
      else if(actionString.equals("register"))
        forwardPage=new RegisterAction().excute(request,response);
      else if(actionString.equals("post"))
        forwardPage=new PostAction().excute(request,response);
      else if(actionString.equals("postP"))
        forwardPage=new PostPAction().excute(request,response);
      else if(actionString.equals("userEdit"))
        forwardPage=new UserEditAction().excute(request,response);
      else if(actionString.equals("userEditP"))
        forwardPage=new UserEditPAction().excute(request,response);
      else if(actionString.equals("logout"))
        forwardPage=new LogoutAction().excute(request,response);
      else //default: home
        forwardPage=new HomeAction().excute(request,response);
    }catch (ActionException ex) {
      Debug.out(ex);
      request.setAttribute("actionMessage",new ActionMessage("system_error"));
      forwardPage="/actionMessage.jsp";
    }
    // forward page
    if (forwardPage!=null){
      String processTime=""+(System.currentTimeMillis()-timeStart);
      request.setAttribute("processTime",processTime);
      filterConfig.getServletContext().getRequestDispatcher(forwardPage).forward(request,response);
    }
  }
}

⌨️ 快捷键说明

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