ex6_20.txt

来自「j2ee core design patterns」· 文本 代码 · 共 36 行

TXT
36
字号
Example 6.20 RequestContextFactory
// POJO ContextObject Factory
public class RequestContextFactory {
  public RequestContext createRequestContext(ServletRequest request) {

    RequestContext requestContext = null;
    try {
      // Identify command string from request object
      String commandId = getCommandId(request);
      // Identify POJO RequestContext Class for the given Command, 
      // using CommandMap
      CommandMapper commandMapper = CommandMapper.getInstance();
      CommandMap  mapEntry = commandMapper.getCommandMap(commandId);
      Class requestContextClass = mapEntry.getContextObjectClass();

      // Instantiate POJO
      requestContext  = (RequestContext)
          requestContextClass.newInstance();

      // Set Protcol-specific Request object
      requestContext.initialize(request);
    } catch(java.lang.InstantiationException e) { 
      // Handle Exception
    } catch(java.lang.IllegalAccessException e) { }
    return requestContext;
  }

  private String getCommandId(ServletRequest request) {
    String commandId = null;
    if ( request instanceof HttpServletRequest) {
      String pathInfo = ((HttpServletRequest)request).getPathInfo();
      commandId =  pathInfo.substring(1);   // skip the leading '/'
    }
    return commandId;
  }
}

⌨️ 快捷键说明

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