页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

       一般情况下,在该servlet中,直接调用Smartbi的Sdk的ClientConnector类的open或openFromDB方法就可以;如果Smartbi接入到cas的话,用CASClientConnector类的 open 方法。

      但此项目比较特殊,登录界面有验证码,一般的做法无法模拟成功登录。考虑到验证码是在业务代码里面执行,所有可以通过将调用模拟登录的代码写在业务代码之前即可。最后的做法是,添加一个filter,访问该servlet之前会访问filter;在filter中调用UserManagerModule的loginFromDB方法。将登录的结果放在request对象。参考附件中的SmartbiCheckLoginFilter但此项目比较特殊,登录界面有验证码,一般的做法无法模拟成功登录。考虑到验证码是在业务代码里面执行,所以可以通过将调用模拟登录的代码写在业务代码之前即可。最后的做法是,添加一个filter,访问该servlet之前会访问filter;在filter中调用UserManagerModule的loginFromDB方法。将登录的结果放在request对象。参考附件中的SmartbiCheckLoginFilter.java文件。

代码块
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 smartbi.framework.rmi.RMIModule;
import smartbi.state.StateModule;
import smartbi.usermanager.UserManagerModule;
public class SmartbiCheckLoginFilter implements Filter {
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
	}
	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		//ScheduleTaskModule stm = ScheduleTaskModule.getInstance();
		HttpServletRequest req = (HttpServletRequest) request; 
		if("/ServerStatus".equals(req.getServletPath()) 
				|| "/MobileServerStatus".equals(req.getServletPath())) {
			UserManagerModule userManagerModule = UserManagerModule.getInstance(); 
			boolean isOk = false;
			isOk = userManagerModule.loginFromDB("xxx", "xxx");
			userManagerModule.logout();
			req.setAttribute("loginStatus", isOk);			
		}
		chain.doFilter(request, response);
	}
	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
	}
}

...