// 拦截Action处理的拦截方法
 public String intercept(ActionInvocation invocation) throws Exception {
   // 取得请求相关的ActionContext实例
   ActionContext ctx = invocation.getInvocationContext();
   Map session = ctx.getSession();
   // 取出名为user的Session属性
   String user = (String) session.get("user");
   // 如果没有登录,或者登录所用的用户名不是scott,都返回重新登录
   if (user != null && user.equals("crazyit.org")) {
     return invocation.invoke();
   }
   // 没有登录,将服务器提示设置成一个HttpServletRequest属性
   ctx.put("tip", "您还没有登录,请输入crazyit.org,leegang登录系统");
   // 直接返回login的逻辑视图
   return Action.LOGIN;
 }
  // Convenience functions for sending various upnp service requests
  public static ActionInvocation send(
      final Device dev, String instanceID, String service, String action, String... args) {
    Service svc = dev.findService(ServiceId.valueOf("urn:upnp-org:serviceId:" + service));
    final String uuid = getUUID(dev);
    if (svc != null) {
      Action x = svc.getAction(action);
      String name = getFriendlyName(dev);
      boolean log = !action.equals("GetPositionInfo");
      if (x != null) {
        ActionInvocation a = new ActionInvocation(x);
        a.setInput("InstanceID", instanceID);
        for (int i = 0; i < args.length; i += 2) {
          a.setInput(args[i], args[i + 1]);
        }
        if (log) {
          LOGGER.debug("Sending upnp {}.{} {} to {}[{}]", service, action, args, name, instanceID);
        }
        new ActionCallback(a, upnpService.getControlPoint()) {
          @Override
          public void success(ActionInvocation invocation) {
            rendererMap.mark(uuid, ACTIVE, true);
          }

          @Override
          public void failure(
              ActionInvocation invocation, UpnpResponse operation, String defaultMsg) {
            LOGGER.debug("Action failed: {}", defaultMsg);
            rendererMap.mark(uuid, ACTIVE, false);
          }
        }.run();

        if (log) {
          for (ActionArgumentValue arg : a.getOutput()) {
            LOGGER.debug(
                "Received from {}[{}]: {}={}",
                name,
                instanceID,
                arg.getArgument().getName(),
                arg.toString());
          }
        }
        return a;
      }
    }
    return null;
  }