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(组策略编辑器),出现这样的情况,一般是系统盘里面gpedit.ms丢失或损坏,
在原生中的JavaScript中,获取标签数组的长度(如"li"的个数) var liLists=document.getElementsByTagName("li"); console.log(liLi
与C端产品竞品分析相比,B端产品做竞品分析有哪些注意点?与C端产品竞品分析相比,我们在做B端产品竞品分析时有数据来源有限、公开信息