|

楼主 |
发表于 2018-2-6 09:49:33
|
显示全部楼层
自定义.j文件内容如下:
public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
JSONObject content = null;
String bsessionid = "";
//从cookie中获取已有的bsessionid
Cookie[] cookies = request.getCookies();
if (cookies != null){
for (int i = 0; i < cookies.length; i++) {
String name = cookies.getName();
if(name.equals("bsessionid")){
bsessionid = cookies.getValue();
}
}
}
//判断bsessionid是否超时-------session时间设置长些20分钟,ip必须来自osn才行(以后去限制)
ActionResult checkResult = ActionEngine.checkSession(bsessionid, ActionUtils.JSON_CONTENT_TYPE);
if (checkResult.isSessionTimeOut()){
String username = request.getParameter("username");
//String password = request.getParameter("password");
.....................
StreamCallback callback = new StreamCallback(response);
String accept = NetUtils.getAccept(request);
String contentType = NetUtils.getContentType(request);
System.out.println("accept="+accept+" contentType="+contentType);
ActionResult actionResultCheck=ActionEngine.invokeActions(JustepConfig.getBusinessServer() + "/onlineUsers", null, null, null, accept, contentType, null, null, "get", callback);
System.out.println("actionResultCheck="+actionResultCheck);
/* 检测如果已经在线,则注销原先的,重新登陆 end */
..........
ActionResult actionResult = ActionEngine.login2(username, password, ip, language, loginDate, map, ActionUtils.JSON_CONTENT_TYPE, null);
content = (JSONObject) actionResult.getContent();
bsessionid = actionResult.getBSessionID();
//把bsessionid放到Cookie中
Cookie cookie = new Cookie("bsessionid",bsessionid);
cookie.setMaxAge(-1);
cookie.setPath("/");
response.addCookie(cookie);
} else {
content = (JSONObject) checkResult.getContent();
}
content.put("bsessionid", bsessionid);
response.setCharacterEncoding("UTF-8");
response.addHeader("Access-Control-Allow-Origin", "*");
response.setContentType(ActionUtils.JSON_CONTENT_TYPE);
response.sendRedirect("/x5/UI2/portal/pc3/index.w");
response.flushBuffer();
} |
|