⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sessioncheckedresourcemanager.java

📁 EOS的一个很好的例子.包括页面构件、展现构件
💻 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 + -