写了一个登陆接口,打算在登录时创建一个session存放账户的信息
@ResponseBody
@RequestMapping(value = "/login1",method = {RequestMethod.POST})
public SignInRes signIn(@RequestBody SignInReq signInReq, Model map, HttpSession session){
UsersInfo usersInfo= new UsersInfo();
SignInRes signInRes =new SignInRes();
Map<String,Object> params=new HashMap<String, Object>();
params.put("account", signInReq.getUsername());
usersInfo = dao.selectByAccount(params);
if (usersInfo.getPwd().equals(signInReq.getPassword()))
{
map.addAttribute("name",signInReq.getUsername());
map.addAttribute("company",usersInfo.getCompany());
map.addAttribute("permissions",usersInfo.getPermissions());
System.out.println(session.getAttribute("name"));
System.out.println(session.getAttribute("company"));
System.out.println(session.getAttribute("permissions"));
System.out.println(session.getId());
signInRes.setMsg("成功登录");
signInRes.setCode(200);
signInRes.setRole(usersInfo.getPermissions());
}
else {
signInRes.setMsg("登录失败");
signInRes.setCode(500);
}
return signInRes;
然后之后在需要根据账户获取该账户在数据库中的某些信息条目时调用比如这个接口
@ResponseBody
@RequestMapping(value="/repairs/accept",method= {RequestMethod.GET})
public AcceptList findAcceptListByPageAndStatus(String status, int page, HttpSession session) {
PageParam pageParam = new PageParam();
pageParam.setCurrPage(page);
System.out.println(session.getId());
return mainatinAnddeclareservice.findAcceptListByPageAndStatus(status, pageParam,session.getAttribute("name").toString());
}
如果我用postman处理请求是能够正确返回数据库里的内容的,但是如果在浏览器中使用这个url,就会报错空指针异常,按F12里session也是空的。
请问这是什么原因呢?
先确定你登录的那个操作时在哪儿做的?如果登录是在postman里面做的登录操作,这个session存在postman里面的,不在浏览器,
所以就会出现你说的问题,浏览器没有session。举个例子,postman就像一个浏览器,不同的浏览器session是不同的,也不是共用的