SSH框架中session问题

  使用SSH框架做项目的时候避免不了使用session,有时候使用session会很方便,但是有时候也是个很麻烦的事情,我今天就遇到一个这样的情况,搞的我很不爽,还是记录一下吧。

  首先是登录的时候,如果用户名密码正确就把该用户的信息存到session中去,

//登录成功后将用户信息保存到session中
            SessionUtils.setSysUserToSession(request, sysUser);
/**
     * 保存当前登录用户的信息到session中去
     * @param request
     * @param sysUser
     */
    public static void setSysUserToSession(HttpServletRequest request,
            SysUser sysUser) {
        HttpSession session=request.getSession();
        if(sysUser==null){
            return;
        }
        session.setAttribute("sysUserKey",sysUser);
    }

登录成功后,在一个页面上需要弹出一个模态窗口,在模态窗口上添加一条部门信息,然后关闭模态窗口,在页面上显示出来数据列表。

显示数据列表采用的是JQUERY和AJAX联合异步加载,就是在$(function(){})中使用ajax从后台取到数据,然后以JSON的方式返回到前台,在将具体的数据给表格对应的列。

  开始的时候弹出模态窗口没有问题,添加一条数据也没有问题,但是关闭模态窗口之后数据列表的数据并没有更新,必须刷新之后才可以再数据列表中看到信添加的一条数据,

刚开始还以为是弹出模态窗口的问题,也以为是页面缓存的问题,反正就是各种纠结啊,但是后来无意识的看到了后台代码才想到了问题的关键,下面先上解决的代码:

<SCRIPT type="text/javascript">
        $(function(){
            //alert("0000");
            //异步加载组织信息
            $.ajax({
                url: "user/organizaAction_selectAllOrg.do",
                type: "post",
                dataType: "json",
                cache : false,
                success: function(da){
                    $("#orgTbody").empty();
                    $.each(da,function(index,value){
                        if(value.owner==value.currentUser){
                        var    tr="<tr>" +
                                    "<td>"+value.orgname+"</td>" +
                                    "<td>"+value.owner+"</td>" +
                                    "<td>"+value.orgremark+"</td>" +
                                    "<td>" +
                                        "<a class=‘btn btn-default‘ onclick=‘showModal("+value.id+")‘ href=‘javascript:;‘><i class=‘fa fa-cog‘></i> 设置</a>" +
                                        "<a class=‘btn btn-default‘ href=‘javascript:;‘ onclick=‘showUser("+value.id+")‘><i class=‘fa fa-male‘></i> 组织成员</a>" +
                                    "</td>" +
                                "</tr>";
                        }else{
                        var    tr="<tr>" +
                                    "<td>"+value.orgname+"</td>" +
                                    "<td>"+value.owner+"</td>" +
                                    "<td>"+value.orgremark+"</td>" +
                                    "<td>" +
                                        "<a class=‘btn btn-default‘  href=‘javascript:;‘><i class=‘fa fa-sign-in‘></i> 退出</a>" +
                                        "<a class=‘btn btn-default‘ href=‘javascript:;‘><i class=‘fa fa-male‘></i> 组织成员</a>" +
                                    "</td>" +
                                "</tr>";
                        }
                        $("#orgTbody").append(tr);
                    });
                }
            });
        });
    </SCRIPT>

这个是异步加载的js

public void selectAllOrg(){
        SysUser sysUser=SessionUtils.getSysUserFromSession(request);

        Integer id=sysUser.getId();
        SysUser curUser=sysUserService.findSysUserById(id);

        Set<Organization> setList=curUser.getOrganizations();
        OrgUtil org;
        List<OrgUtil> orgList=new ArrayList<OrgUtil>();
        for(Organization o:setList){
            org=new OrgUtil();
            org.setId(o.getId());
            org.setOrgname(o.getOrgname());
            org.setOrgremark(o.getOrgremark());
            org.setOwner(o.getOwner());
            org.setCurrentUser(sysUser.getCnname());
            orgList.add(org);
        }
        writeJson(orgList);
    }

这个是后台的查找全部信息的代码,关键在哪呢?就在

SysUser sysUser=SessionUtils.getSysUserFromSession(request);

        Integer id=sysUser.getId();
        SysUser curUser=sysUserService.findSysUserById(id);

这三行代码中,开始的时候是没有查找用户的这两行代码的,直接从session中取出的用户,然后根据取出的用户来查找。

之所以查找不出来是因为:从session中拿过来的用户是登录时候的用户,此时这个用户并没有跟你新建的部门关联,所以是查找不到新建的部门的,只有重新load一下用户才能拿到新建的部门信  息。

      恩,暂时就是这样了。

时间: 2024-10-14 18:06:11

SSH框架中session问题的相关文章

spring在SSH框架中的作用

从网上了搜了下sring 在ssh中起的作用,在百度知道上看到下面的回答,觉得简单移动,记录下来备查,原文地址: http://zhidao.baidu.com/link?url=JiONrax-Flkpi5hqs_g1HQOrMm1Dk8U1WT88l5T0Gg01bm3M8fMcjUCpqastVxQTd63gxUl5NLyHUQPdq6E-OK 在SSH框假中spring充当了管理容器的角色.我们都知道Hibernate用来做持久层,因为它将JDBC做了一个良好的封装,程序员在与数据库进行

在SSH框架中使用Spring的好处(转)

以下是我总结下今天笔试中SSh中的总结: 在SSH框架中spring充当了管理容器的角色.我们都知道Hibernate用来做持久层,因为它将JDBC做了一个良好的封装,程序员在与数据库进行交互时可以不用书写大量的SQL语句.Struts是用来做应用层的,他它负责调用业务逻辑serivce层.所以SSH框架的流程大致是:Jsp页面----Struts------Service(业务逻辑处理类)---Hibernate(左到右)    struts负责控制Service(业务逻辑处理类),从而控制了

在SSH框架中,如何得到POST请求的URL和参数列表

在做项目的API通知接口的时候,发现在SSH框架中无法获取到对方服务器发来的异步通知信息.最后排查到的原因可能是struts2对HttpServletRequest进行了二次处理,那么该如何拿到post的请求数据呢,方法很多,下面只给出一种方式. 在servlet中GET请求可以通过HttpServletRequest的getRequestURL方法和getQueryString()得到完 整的请求路径和请求所有参数列表, POST的需要getParameterMap()方法遍历得到,不论GET

ssh框架中.xml文件小技巧分离xml

struts.xml文件 struts.xml文件里的action可以分离出来,如: <!-- 预警信息监测 --> <include file="config/struts/warningInformAtion-struts.xml"></include> 注: include是放在</struts>标签的前面 在src下面新建 package 名为:config.struts,再新建xml文件为warningInformAtion-s

SSH框架中hibernate 出现 user is not mapped 问题

SSH框架中hibernate 出现 user is not mapped 问题 在做SSH框架整合时,在进行DAO操作时.这里就只调用了chekUser()方法.运行时报  user is not mapped 错误 :  chekUser()方法如下:  public boolean chekUser(User user){           String hql="from user u where u.id=? and u.name=?";        Query quer

在SSH框架中使用Spring的好处

在SSH框假中spring充当了管理容器的角色.我们都知道Hibernate用来做持久层,因为它将JDBC做了一个良好的封装,程序员在与数据库进行交互时可以不用书写大量的SQL语句.Struts是用来做应用层的,他它负责调用业务逻辑serivce层.所以SSH框架的流程大致是:Jsp页面----Struts------Service(业务逻辑处理类)---Hibernate(左到右)   struts负责控制Service(业务逻辑处理类),从而控制了Service的生命周期,这样层与层之间的依

SSH框架中Spring框架搭建的初步理解(一)

接手基于SSH框架的web项目已经一个月有余了.早有听说javaweb三大框架,第一次接触,先来说下感受. 我感觉SSH框架最明显的优点有如下: 采用MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现. 通过配置文件,就可以掌握整个系统各个部分之间的关系. 通过AOP,可以实现事务管理和日志管理. 其中Spring框架能使你通过最简单可行的方法来解决问题,这是非常高效的.但是它的搭建也略微复杂,尤其是对于我这样的新手来说,所以开此篇记录一下SPring框架的搭建: 创建web项目,导入SS

SSH框架中spring的原理

在ssh项目中,是有明确分工的,spring的作用就相当于将struts和hibernate连接起来,是将两个没有关系的框架的特性,方法,action都放在spring的配置文件中使他们建立关系.取他门各自所长.而这些做法他们自己不知道,他们是听命于spring调度的,他的的任务只是做好自己的事情.    这样做的好处就是任务结构分明,struts只管理显示与做什么,hibernate只关心怎么做,而spring就相当于领导,所以一切的类都要交给spring的工厂创建,这是一种良好的开发模式,体

SSH框架中NoSuchMethodError: antlr.collections.AST.getLine()的解决方案

问题: 当配置好SSH框架后,使用Hibernate的Query功能时发生如下异常: NoSuchMethodError: antlr.collections.AST.getLine() 原因: Struts2中的antlr-2.7.2jar包与Hibernate中的antlr-2.7.2冲突. 解决方案: 1 在MyEclipse中将Strut2的antlr-2.7.2移除 2 在Tomcat的webapps对应的项目下,将lib目录的antlr-2.7.2.jar包删除(这是Struts2的