我做的是一个web工程,我的数据库中有一个表是用来存储用户身份(Role表,2个字段RoleID和RoleName)的,我想在登陆系统的时候就查找数据库,得到这个表中的结果放到map中,在这一个会话中,我都不再查找数据库,直接从map中取结果,怎么做啊,求教大神
解决方案 »
- 新手求教JAVASE关于Flash调用的问题
- 问个 THINK IN JAVA 的左移位运算问题
- 请教高手 一道有关算法的面试题
- 怎么在jbuilder中创建 bean
- java如何调用第三方的dll
- 帮我看看程序!!
- 多线程用同步了为什么出现的结果是无序的
- & 、&& 有啥区别,具体讲讲???
- jdbc数据库连接每天瞬间断开问题:使用的是proxool连接池,异常类似You can't perform....,请高手指点,在线等....
- 我真的对CSDN快失望了,怎么回事,这种问题我已经花了120分了
- java HashMap中写入writeObject时写入的什么
- 子类怎么访问父类的属性.
//存到session
session.setAttribute("roleMap",map);
再加上登陆者的自身信息,至少要3个session,这么做貌似有点不合理,继续求
1.全局基础类的数据在web服务器启动的时候加载到缓存里,一般像下拉列表里的基础选项,像国家,省市,部门等等。这里的缓存是全局context,例如application,或者直接存储在类的静态变量里。这里的信息都是全局共用的,不是某一个用户特有的。
2.用户相关的基础来数据是每次当用户登录的时候放到session里的。例如:用户所拥有的菜单权限,用户信息,用户角色等等。也就是说和用户相关的特定信息。
控制器:
public void init() throws ServletException{
Map<String,String> r_map = new HashMap<String, String>();
Map<String,String> d_map = new HashMap<String, String>();
ServletContext context = getServletContext();
try {
Connection conn = JDBCutil.getConnection();
r_map = RoleDao.selectRole(conn);
d_map = DepartmentDao.selectDepartment(conn);
} catch (ClassNotFoundException e) {
logger.error(e.getMessage());
return;
} catch (SQLException e) {
logger.error(e.getMessage());
return;
}
context.setAttribute("r_map", r_map);
context.setAttribute("d_map", d_map);
Context.setServletContext(context);
}
获取类Context:
public class Context {
private static ServletContext sc;
public static void setServletContext(ServletContext context){
sc = context;
}
public static ServletContext getServletContext(){
return sc;
}
}
然后就可以在任何地方使用:context.getAttribute(“r_map”)获取到r_map的值了