求教: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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Bulma_bulimia

    Bulma_bulimiaBulma 是一个基于 Flexbox 构建的免费、开源的CSS框架,已经有超过200,000开发者在使用。https://bulma.zcopy.site/ht

    2022年8月4日
    4
  • 图片批量重命名编号不要括号c语言_文件批量重命名001开始

    图片批量重命名编号不要括号c语言_文件批量重命名001开始很多人会采用传统的方法来实现,不过得到的文件名称是这样的:文件名+(编号),这样批量重命名后的文件名有括号,很多人不喜欢,所以网上很多人在网上搜索图片批量重命名不要括号的方法。如果你采用传统的方法对图片进行批量重命名操作,那么得到的图片名称中肯定会包含括号,很多小伙伴嫌这些括号很难看,不利于图片的后续查看和使用。所以今天小编就来教大家如何实现吧,我们需要借助一个批量重命名工具来帮助我们,有了这个方法之后我们就无需手动一个一个的进行修改了,批量重命名能帮助我们节省很多的时间。步骤3,进行重命名设置。…

    2022年9月5日
    6
  • CAN协议通信「建议收藏」

    CAN协议通信「建议收藏」CAN协议广泛应用于车辆诊断通信中,学习它的过程,就像学习一种与车辆沟通的语言,让我更深入的了解汽车的世界。感受汽车的精彩

    2022年6月28日
    61
  • windows Netstat命令详解

    windows Netstat命令详解Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。如果你的计算机有时候接收到的数据报导致出错数据或故障,你不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么你就应该使用…

    2022年5月29日
    217
  • 格雷码与二进制的转换[通俗易懂]

    格雷码与二进制的转换[通俗易懂]一、什么是格雷码?格雷码,又叫循环二进制码或反射二进制码,格雷码是我们在工程中常会遇到的一种编码方式,它的基本的特点就是任意两个相邻的代码只有一位二进制数不同,这点在下面会详细讲解到。格雷码的基本特点就是任意两个相邻的代码只有一位二进制数不同,这点很重要。常用的二进制数与格雷码间的转换关系如下表:二、二进制格雷码与自然二进制码的互换1、二进制码转换成二进制格雷码  二进制码转换成二进制格雷码,

    2022年10月17日
    0
  • Jenkins(5)生成allure报告

    Jenkins(5)生成allure报告前言jenkins集成了allure插件,安装插件后运行pytest+allure的脚本即可在jenkins上查看allure报告了。allure安装在运行代码的服务器本机,我这里是用的dock

    2022年7月28日
    0

发表回复

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

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