当前位置: 代码迷 >> Web前端 >> 施用Cookie记录登录信息
  详细解决方案

施用Cookie记录登录信息

热度:189   发布时间:2012-08-27 21:21:57.0
使用Cookie记录登录信息
以下为struts2的BaseAction里的处理方法。
public HttpServletResponse getResponse()
	{
		return ServletActionContext.getResponse();
	}
	
	public HttpSession getSession(boolean flag)
	{
		return this.getRequest().getSession(flag);
	}
	
	/**
	 * 获取当前登录的会员信息
	 * @return
	 */
	public Member getLoginMember() throws Exception
	{
		Member member=null;
		String memberId=this.getCookieValue("memberId");
		String memberName=this.getCookieValue("memberName");
		String grade=this.getCookieValue("grade");
		String subject=this.getCookieValue("subject");
		if(memberId!=null&&memberName!=null&&grade!=null&&subject!=null)
		{
			member=new Member();
			member.setMemberId(Integer.valueOf(memberId));
			member.setMemberName(memberName);
			member.setGrade(Integer.valueOf(grade));
			member.setSubject(Integer.valueOf(subject));
		}
		return member;
	}
	
	/**
	 * 获取指定Cookie的值
	 * @param cName
	 * @return
	 * @throws Exception
	 */
	public String getCookieValue(String cName) throws Exception
	{
		String cValue=null;
		Cookie cookie=this.getCookie(cName);
		if(cookie!=null)
		{
			cValue=cookie.getValue();
		}
		return cValue;
	}
	
	/**
	 * 获取指定Cookie
	 * @param cName
	 * @return
	 * @throws Exception
	 */
	public Cookie getCookie(String cName) throws Exception
	{
		Cookie cookie=null;
		Cookie[] cs=this.getRequest().getCookies();
		if(cs!=null)
		{
			for(Cookie c:cs)
			{
				String name=c.getName();
				if(cName.equals(name))
				{
					cookie=c;
				}
			}
		}
		return cookie;
	}
	
	/**
	 * 将设置cookie独立出来便于对cookie的配置统一控制
	 * @param sName
	 * @param sValue
	 */
	public void addACookie(String cName,String cValue) throws Exception
	{
		Cookie cookie=new Cookie(cName,cValue);
		cookie.setMaxAge(365*24*60*60);
		this.getResponse().addCookie(cookie);
	}
	
	/**
	 * 将登录的用户信息存放到cookie中
	 * @param member
	 */
	public void setLoginMember(Member member) throws Exception
	{
		this.addACookie("memberId",member.getMemberId().toString());
		this.addACookie("memberName",member.getMemberName());
		this.addACookie("grade",member.getGrade().toString());
		this.addACookie("subject",member.getSubject().toString());
	}
	
	/**
	 * 删除所有Cookie
	 * @throws Exception
	 */
	public void invalidateCookies() throws Exception
	{
		Cookie[] cs=this.getRequest().getCookies();
		if(cs!=null)
		{
			for(Cookie c:cs)
			{
				c.setMaxAge(0);
				this.getResponse().addCookie(c);
			}
		}
	}
  相关解决方案