📄 sessioncheckedresourcemanager.java
字号:
package com.primeton.eos.fbframe.fbrole.security.impl;
import com.primeton.tp.core.prservice.context.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.Serializable;
import java.util.*;
/**
* @author ZhangXueyong
*
* 保存用户相关的需要验证的 展现逻辑集合 业务逻辑集合 JSP集合,
* 所以SessionCheckedResourceManager实例是放在session中的 。
*
*/
public class SessionCheckedResourceManager implements Serializable {
public static String FBROLE_SESSION_REPOSITORY = "SessionCheckedResourceManager";
private Map myJspsList = null;
private Map myPrsList = null;
private Map myBizsList = null;
private List mymenuList = null;
private String dropMenuScript = null;
private String outLookMenuScript = null;
/**
* 外部不能实例化这个类 。
*/
private SessionCheckedResourceManager(HttpServletRequest request) {
SessionContext sessioncontext = (SessionContext)request.getSession().getAttribute(SessionContext.SESSION_SESSION_CONTEXT);
// myPrsList = DAOUtility.getMyCheckedPrs(request);
// myJspsList = DAOUtility.getMyCheckedJsps(request);
// myBizsList = DAOUtility.getMyCheckedBizs(request);
// 优化性能,一次性读取权限列表
myJspsList = new HashMap();
myPrsList = new HashMap();
myBizsList = new HashMap();
DAOUtility.getMyCheckedEOSFunctions(request, myPrsList, myJspsList, myBizsList);
mymenuList = DAOUtility.getMyMenu(request);
//为了兼容以前的菜单形式
sessioncontext.setMenu(new MenuContext(mymenuList));
//为了兼容以前权限管理的形式
List tempList = new ArrayList();
tempList.addAll(myPrsList.keySet());
sessioncontext.setPermissions(tempList);
}
public static SessionCheckedResourceManager getSessionInstance(HttpServletRequest request){
HttpSession session = request.getSession();
SessionCheckedResourceManager rp = (SessionCheckedResourceManager)session.getAttribute(FBROLE_SESSION_REPOSITORY);
if(rp == null){
rp = new SessionCheckedResourceManager(request);
session.setAttribute(FBROLE_SESSION_REPOSITORY,rp);
}
return rp;
}
/*
* 当前用户是否有权执行指定的"展现逻辑" 。
*/
public boolean exitsInMyPrs(String resource){
if( myPrsList.get(resource) == null){
return false;
}else{
return true;
}
}
/*
* 当前用户是否有权执行指定的jsp 。
*/
public boolean exitsInMyJsps(String resource){
if( myJspsList.get(resource) == null){
return false;
}else{
return true;
}
}
/*
* 当前用户是否有权执行指定的"业务逻辑" 。
*/
public boolean exitsInMyBizs(String resource){
if( myBizsList.get(resource) == null){
return false;
}else{
return true;
}
}
/*
* 为生成OutLook式菜单准备数据 。
*/
public String getOutLookMenuJavaScript(){
if( outLookMenuScript == null ){
StringBuffer eosmenu = new StringBuffer();
//生成所需要的javascript
eosmenu.append("<script language=\"javascript\">\n");
eosmenu.append("var menus=new Array(");
Iterator iterator = mymenuList.iterator();
while( iterator.hasNext()){
eosmenu = creatOutlookMenuScript((FbMenuItem)iterator.next(),eosmenu);
}
eosmenu.append("''\n);</script>");
outLookMenuScript = eosmenu.toString();
}
return outLookMenuScript;
}
private StringBuffer creatOutlookMenuScript(FbMenuItem menuItem,StringBuffer menuScript){
menuScript.append("new Array('");
menuScript.append(menuItem.getMenuID() + "','");
menuScript.append(menuItem.getName() + "','");
menuScript.append(menuItem.getAction() + "','");
menuScript.append(menuItem.getParentID() + "','");
menuScript.append(menuItem.getDisplayOrder() +"'),\n");
int num = menuItem.getChilds().length;
for(int i=0; i<num; i++){
creatOutlookMenuScript((FbMenuItem)menuItem.getChilds()[i],menuScript);
}
return menuScript;
}
/*
* 为生成下来菜单准备数据 。
*/
public String getDropMenuJavaScript(){
if( dropMenuScript == null ){
StringBuffer eosmenu = new StringBuffer();
//生成所需要的javascript
eosmenu.append("<script>");
Iterator iterator = mymenuList.iterator();
int num = 1;
String menuID = "" ;
while( iterator.hasNext()){
menuID = "eosmenu" + num;
eosmenu = creatDropMenuScript(menuID,eosmenu,(FbMenuItem)iterator.next());
num++;
}
eosmenu.append("</script>");
dropMenuScript = eosmenu.toString();
}
return dropMenuScript;
}
private StringBuffer creatDropMenuScript(String menuID, StringBuffer menuScript, FbMenuItem menuItem){
menuScript.append(menuID + "=new Array(" + menuItem.toJavaScriptString() + ");\n");
int num = menuItem.getChilds().length;
String tempMenuID = "";
for(int i=0; i<num; i++){
tempMenuID = menuID + "_" + (i +1);
creatDropMenuScript(tempMenuID,menuScript,(FbMenuItem)menuItem.getChilds()[i]);
}
return menuScript;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -