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/