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

求教:session.getAttribute()获取不到session.setAttribute()的值很简单的一个web项目中,用户登陆成功后,在后台用session.setAttribute(“user”),记录登陆的用户信息,在跳到主页面(index.jsp)的时候,先经过后台处理,通过登陆的用户信息,查询相应的权限资源,这时用session.getAttribute(“user”),取到用户的信息,现在就是取不到用户信息,取到的值为null,经过不断测试,原因应该在后台登陆方法中的sessi…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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

package 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);
    }

}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181326.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月16日 下午3:46
下一篇 2022年10月16日 下午3:46


相关推荐

  • 【2012】笔试面试总结(一)

    【2012】笔试面试总结(一)

    2021年8月20日
    60
  • fastjson解析多层json_fastjson github

    fastjson解析多层json_fastjson github一、前言通过alibaba的fastjson包中的com.alibaba.fastjson.JSONArray、com.alibaba.fastjson.JSONObject定义JsonObjectUtil对象工具类,实现object转换成JSON的convertMapToJson、JSON转换成Map的convertJsonToMap、判断JSONObject/JSONArray对象是否为空is…

    2026年4月15日
    2
  • java运算符优先级记忆口诀

    java运算符优先级记忆口诀java 运算符优先级记忆口诀

    2026年3月18日
    2
  • ghost备份出错,原系统如何修复_电脑怎么做ghost备份

    ghost备份出错,原系统如何修复_电脑怎么做ghost备份  系统装好了,资料也弄好了.自然想到的就是备份.  一键GHOST备份.结果卡在启动项选择那里.停在BACKUPSYSTEM然后下面显示磁盘I/O出错.死机…..  本来以为挂了.后来查了下,只要改变下默认启动项顺序即可.操作如下:  右键我的电脑->属性->高级->启动和故障恢复(设置) 在里面把默认的操作系统backupsystem改为xp就OK.其他的什么等待时间之

    2025年9月21日
    9
  • MSH FINSH 对比

    MSH FINSH 对比内在的区别我也没看明白,我就把我看到的区别总结下:最明显的,msh命令都带一个__cmd_,而finsh命令不带,__cmd_这个前缀是宏定义时加的,使用FINSH_FUNCTION_EXPORT_ALIA、MSH_CMD_EXPORT这2个宏义就会把命令定义成MSH命令,官方手册也提到了,MSH执行效果FINSH执行效果finSH需要在命令后面加上(),美其名曰“C-Style”模式,MSH->exit->FINSHFINSH-&…

    2022年5月22日
    43
  • SE01(理解重要)

    SE01(理解重要)仅供学习者观看 大佬们勿喷

    2026年3月17日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号