servlert生成session传到jsp,servlert从jsp页面获取session的值

今天更是进一步理解了对象的含义。是的,楼主是条单身狗。但是我还是更深一步的理解了面向对象中对象的含义呀(呸,卖什么萌。。。。。。)。

首先做个简单的例子,jsp页面偏爱于el标签。el标签真的很舒服的说,虽然学的不行。

login的servlert

public class Login extends HttpServlet {

	private static final long serialVersionUID = 1L;
	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		String uname = request.getParameter("username");
		String pword = request.getParameter("password");
		
		List<UserBean> list = Db.getAll();//这里并没有新建一个对象,但是下面static定义的内容已经加载了
		for(UserBean u: list)
		{
			if(u.getUname().equals(uname) && u.getPword().equals(pword))
			{
				request.getSession().setAttribute("user", u);
                                response.sendRedirect("index.jsp");
				return;
			}
			
			out.write("erererererer");
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doGet(request,response);
	}

}

//新建一个类,类里先放一些用户的信息,方便登录验证,暂时替代了SQL的相同部分
class Db
{
	public static List<UserBean> list = new ArrayList<UserBean>();
	//方便在没有创建对象的情况下来进行调用(方法/变量)。
	static{
		list.add(new UserBean("a","1"));
		list.add(new UserBean("b","1"));
		list.add(new UserBean("c","1"));
		
	}
	public static List<UserBean> getAll()
	{
		return list;
	}
}

对应的登录jsp页面

<body>
    <form action="Login" method="post">
	帐号:<input type="text" name="username"><br>
	密码:<input type="password" name="password"><br>
	<input type="submit" value="登录">
</form>
  </body>

登录成功的页面

 <body>
    欢迎您,${user.uname} <br>
   <a href="Logout">退出登录</a>
  </body>
要知道session在生成了之后会一直存在的,所以在其他的页面也都可以直接显示出来登录名

<body>
    欢迎您,${user.uname}
  </body>
当然具体会有一些操作session的方法和内容,这些等待我这个渣渣去学习。

对应的退出servlert

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		HttpSession session = request.getSession(false);
		if(session == null)
		{
			response.sendRedirect("index.jsp");
			return;
		}
		session.removeAttribute("user");
		response.sendRedirect("index.jsp");
	}
对应的userbean

public class UserBean {

	private String uname;
	
	private String pword;
	
	public UserBean(String uname,String pword)
	{
		this.uname = uname;
		this.pword = pword;
	}

	public String getUname() {
		return uname;
	}

	public void setUname(String uname) {
		this.uname = uname;
	}

	public String getPword() {
		return pword;
	}

	public void setPword(String pword) {
		this.pword = pword;
	}
	
	
}
当然大多数时候我们需要获取到当前的用户信息,比如当前的用户名,密码。

正常的获取servlert的方法是

HttpSession session =request.getSession();
session.getAttribute("user");
这个时候我们就获取到了user这个对象。为了获取对象中包含的用户名,我们需要强制转换,然后get我们需要的值

((UserBean)session.getAttribute("user")).getUname();

这个过程中,对于面向对象的理解会更好一点。

当然其实有一个方法就不需要这么麻烦了。

在创建session的时候,只把登录名放进去。

if(u.getUname().equals(uname) && u.getPword().equals(pword))
  {
    request.getSession().setAttribute("username", u.getUname());
    response.sendRedirect("index.jsp");
    return;
  }
然后获取的时候就直接获取

System.out.println(session.getAttribute("username"));

这样子就可以了

但是实际上,不可能只在session里放一个名字的。



  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值