必威体育Betway必威体育官网
当前位置:首页 > IT技术

求教:session.getAttribute()获取不到session.setAttribute()的值

时间:2019-06-29 21:43:21来源:IT技术作者:seo实验室小编阅读:59次「手机版」
 

session.getattribute

很简单的一个web项目中,用户登陆成功后,在后台用session.setattribute(“user”),记录登陆的用户信息,在跳到主页面(index.jsp)的时候,先经过后台处理,通过登陆的用户信息,查询相应的权限资源,这时用session.getattribute(“user”),取到用户的信息,现在就是取不到用户信息,取到的值为null,经过不断测试,原因应该在后台登陆方法中的session.setAttribute(“user”),在其他方法里面都可以使用,但是登陆方法里面的session发送的任何信息,其他地方都接收不到,只有在本方法里面可以接收到,代码如下:

paC++kage com.hs.Iservice;

import java.io.IOException;
import java.io.printwriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import javax.annotation.Resource;
import javax.servlet.HTTP.HttpServletrequest;
import javax.servlet.http.HttpServletresponse;
import javax.servlet.http.HttpSession;

import org.apache.struts2.Servletactioncontext;
import org.Springframework.stereotype.Service;

import com.hs.dao.IGroupDAO;
import com.hs.dao.ipermissionDAO;
import com.hs.dao.IUserDAO;
import com.hs.model.Group;
import com.hs.model.permission;
import com.hs.model.User;
import com.hs.service.IUserService;

@Service
public class UserService implements IUserService {

    @Resource
    private IUserDAO dao;
    @Resource
    private IGroupDAO gdao;
    @Resource
    private IPermissionDAO pdao;

    //登陆 判断用户名、密码是否正确
    @Override
    public void login(User user, Boolean ptys , Boolean zgys) throws IOException {
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpServletResponse response = ServletActionContext.getResponse();
        HttpSession session = request.getSession();
        String urlName = request.getRequestURI();
        System.out.println("request地址:"+urlName);
        session.setAttribute("abc", "abc");
        PrintWriter out = response.getWriter();
        User u = dao.login(user.getLoginId(),user.getPassword());
        //判断登陆账号、密码是否存在
        if (null != u) {
            // 普通医生登陆判断
            if (ptys == true && u.getGid() == 2) {
                session.setAttribute("user", u);
                out.write("{\"msg\":\"ok\"}");
                // 主管医生登陆判断
            } else if (zgys == true && u.getGid() == 1) {
                session.setAttribute("user", u);
                out.write("{\"msg\":\"ok\"}");
                // 管理员登陆判断
            } else if (ptys == false && u.getGid() == 0) {
                session.setAttribute("user", u);
                out.write("{\"msg\":\"ok\"}");
            } else {
                out.write("{\"msg\":\"gid\"}");
            }
        } else {
            out.write("{\"msg\":\"no\"}");
        }
    }
    //登陆成功后 跳转主页面 根据登陆的用户 查询相应的权限并发送至前台
    @Override
    public void index() {
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpSession session = request.getSession();
        session.setAttribute("b", "b");
        String urlName = request.getRequestURI();
        System.out.println("request时间:"+urlName);
        /*User u = (User) session.getAttribute("user");
        System.out.println("asdadasdad:"+u.getName());*/
        String a = (String) session.getAttribute("abc");
        System.out.println("dadadad:"+a);
        User use = dao.findById(4);
        List<Group> group = gdao.findByGroupId(use.getGid());
        List<Permission> list = new ArrayList<Permission>();
        String[] strs = group.get(0).getModuleId().split(",");
        for (String str : strs) {
            list.add(pdao.findById(integer.parseInt(str)));
        }
        //处理list集合里面的数据按照指定顺序排序
        collections.sort(list, new Comparator<Permission>(){
            @Override
            public int compare(Permission arg0, Permission arg1) {
                int i = arg0.getNumber()-arg1.getNumber();
                return i;
            }
        });
        request.setattribute("list", list);
    }

}

相关阅读

你绝对想不到,美团、大众点评和赶集的首席运营官, 都有

美团的COO是干嘉伟。2000年,干嘉伟从中石油跳槽到阿里巴巴,工号67,从一线业务员做起,历任网站运营总监、市场总监、区域经理、大区总

使用Sina API获取新浪财经的证券股票数据接口(时价 K

从网上找到的Sina API的财经API说,Mark一下,以供以后参考http://market.finance.sina.com.cn/downxls.php?date=2011-07-08&symbol=

win10找不到gpedit.msc

win10找不到gpedit.msc怎么办 分步阅读win10找不到gpedit.msc(组策略编辑器),出现这样的情况,一般是系统盘里面gpedit.ms丢失或损坏,

jQuery——获取标签数组的长度

在原生中的JavaScript中,获取标签数组的长度(如"li"的个数) var liLists=document.getElementsByTagName("li"); console.log(liLi

B端产品竞品分析:如何用低成本方法获取更多信息?

与C端产品竞品分析相比,B端产品做竞品分析有哪些注意点?与C端产品竞品分析相比,我们在做B端产品竞品分析时有数据来源有限、公开信息

分享到:

栏目导航

推荐阅读

热门阅读