HttpSession常用方法
void |
setAttribute(String name, Object value)
设置属性值
|
Object |
getAttribute(String name)
获取上面设定的值,注意反回的是Object,需要进行(强制转化)
|
void |
invalidate()
解除session的绑定
|
代码
<body>
<p>请输入用户名和密码:</p>
<form id="login" method="post" action="./abc/LoginServlet">
用户名:<input type="text" name="username" width="100"/><br/>
密码:<input type="password" name="password" width="100"/> <br/>
<input type="submit" name="登录" value="上交表单">
</form>
</body>
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String encoding;
ServletConfig config=this.getServletConfig();
encoding=config.getInitParameter("encoding");
request.setCharacterEncoding(encoding);
response.setContentType("text/html;charset="+encoding);//设置编码
PrintWriter out=response.getWriter();//获取输出到网页的对象
HttpServletRequest requ=(HttpServletRequest)request;
HttpSession session=requ.getSession();//获得session
String uesrValue=(String)session.getAttribute("user");//获取session存储的属性值
String params[]=session.getValueNames();//获得session里所有的属性名
out.println("session中参数的个数:"+params.length+"<br/>");
if(uesrValue==null){//还没有登录过
String username=request.getParameter("username");//从表单中获取用户名
String password=request.getParameter("password");//从表单中获取密码
out.println("你还未登录<br/>");
session.setAttribute("user", username);//设定session中的用户名
session.setAttribute("password",password);//设定session中的密码
out.println(session.getId());//打印session ID
}
else{
String username=(String)session.getAttribute("user");//从session中获取用户名
String password=(String)session.getAttribute("password");//从session获取密码
out.println("用户名:"+username+"<br/>");
out.println("密 码:"+password+"<br/>");
session.invalidate();//使session无效
}
out.close();
//Cookie里不能有中文
// Cookie cookie1=new Cookie("usrname","bcd");
// Cookie cookie2=new Cookie("password","buzhidao");
// response.addCookie(cookie1);
// response.addCookie(cookie2);
// response.sendRedirect("/JavaEEDemo/first.jsp");
}
运行结果
登录界面
第一次登录
第二次登录
由于在第二次登录后,使session无效了,所以第三次与第一次登录session的id不同。
更多方法介绍请参阅http://docs.oracle.com/javaee/7/api/