session內(nèi)置對象
一.認(rèn)識session
1.session在jsp中是
javax.servlet.http.HttpSession
的對象,用于區(qū)分不同的用戶,每
一個session就表示一個用戶。
2.它的主要功能就是判斷用戶的登陸,常用的方法如下:
(1)設(shè)置屬性:
public void setAttribute(String name,Object value)
(2)取得屬性:
public Object getAttribute(String name)
(3)刪除屬性:
public void removeAttribute(String name)
(4)判斷是否新session:
public boolean isNew()
(5)返回sessionid:
public String getId()
(6)讓session失效:
public void invalidate()
(7)設(shè)置屬性:
public void setValue(String name,Object value)
(8)取得屬性:
public Object getValue(String name)
(9)刪除屬性:
public void removeValue(String name)
(注意后三種方法是session最早的操作,后來為了jsp四種屬性范圍進(jìn)行修改,
現(xiàn)在不建議使用.)
二.session主要操作方法
1.取得session id
服務(wù)器是靠session id對用戶進(jìn)行區(qū)分的,此session id在客戶端第一次連接到服務(wù)器時
由服務(wù)器自動分配,不能手工設(shè)置
例1:
新建session1.jsp文件,取得session id:
<%@ page contentType=”text/html;charset=GBK”%><h1><%=session.getId()%></h1>復(fù)制代碼
2.讓session失效,即注銷
每次執(zhí)行invalida()方法是,表示session失效。
例2:
新建session2.jsp文件,觀察session失效:
<%@ page contentType=”text/html;charset=GBK”%><h1><%=session.getId()%></h1><%session.invalidate() ; // 讓session失效%>復(fù)制代碼
3.判斷是否為新的session
當(dāng)用戶第一次連接到服務(wù)器時,可通過isNew()方法判斷是否為新用戶。
此方法的原理在于cookie的設(shè)置
(1)若用戶第一次訪問服務(wù)器,則cooki中不存在JSESSIONID
(2)若用戶第二次訪問服務(wù)器,則cookie中已經(jīng)存在JSESSIONID
例3:
新建session3.jsp文件,進(jìn)行判斷:
<%@ page contentType=”text/html;charset=GBK”%><%if(session.isNew()){%><h2>歡迎新用戶光臨!</h2><%}else{%><h2>你不是新用戶了!</h2><%}%>復(fù)制代碼
例4:
新建session4.jsp文件,檢驗JSESSIONID和session id的值是否一致:
<%@ page contentType=”text/html;charset=GBK”%><h1><%=session.getId()%></h1><%Cookie c[] = request.getCookies() ;if(c!=null){for(int i=0;i<c.length;i++){%><%=c[i].getName()%> –> <%=c[i].getValue()%><%}}%>復(fù)制代碼
4.注意session和cookie的關(guān)系:session是在服務(wù)器端的,cookie是在客戶端的
5.sessio用于系統(tǒng)登錄
在所有系統(tǒng)中,session對象中使用最多的操作就是設(shè)置和取得屬性
例5:
新建login.jsp文件,負(fù)責(zé)登錄:
<%@ page contentType=”text/html;charset=GBK”%><h1>系統(tǒng)登陸</h1><form action=”login.jsp” method=”post”>用戶名:<input type=”text” name=”name”><br>密 碼:<input type=”password” name=”password”><br><input type=”submit” value=”登陸”><input type=”reset” value=”重置”></form><%String name = request.getParameter(“name”) ;String pass = request.getParameter(“password”) ;if(!((“”.equals(name)||name==null)&&(“”.equals(pass)||pass==null))){// 假設(shè)用戶名是abc,密碼是123if(“abc”.equals(name)&&”123″.equals(pass)){session.setAttribute(“name”,name) ; // 登陸了設(shè)置sessionresponse.sendRedirect(“welcome.jsp”) ;}else{%><h3>錯誤的用戶名或密碼</h3><%}}%>復(fù)制代碼
新建logout.jsp文件,負(fù)責(zé)注銷:
<%@ page contentType=”text/html;charset=GBK”%><%session.invalidate() ;%>復(fù)制代碼
新建welcome.jsp,表示歡迎界面:
<%@ page contentType=”text/html;charset=GBK”%><%if(session.getAttribute(“name”)!=null){ // 合法用戶%><h1>歡迎光臨!</h1><h2><a href=”logout.jsp”>注銷</a></h2><%}else{%><h1>請先<a href=”login.jsp”>登陸</a>!</h1><%}%>復(fù)制代碼
------------------完整例子-----------------------------------------------
1.bankname.jsp
<html><head><title>First Page</title></head><body><form method="post" action="custid.jsp">what is you Bank Name?<input type="text" name="bank" ></input><p><input type="submit" value="submit" ></input></p></form></body></html>復(fù)制代碼
2.custid.jsp
<html><head><title>Second Page</title></head><body><%! String name = ""; %><%name = request.getParameter("bank");session.putValue("bankname",name);%>The name is <%= name %><p><form method="post" action="bank.jsp" >what is your customer ID?<input type="text" name="custid" ></input></p><input type="submit" value="submit" ></input></form></body></html>復(fù)制代碼
3.bank.jsp
<html><head><title>Third Page</title></head><body><%! String name = ""; String CustId = "";%><%CustId = request.getParameter("custid");name = (String)session.getValue("bankname");%>Your bank name is <b><%= name %></b><p>Your customer ID is <b><%= CustId%></b></p></body></html>
建站咨詢
如您有網(wǎng)站建設(shè)方面的需要,歡迎給我們留言或在線咨詢 *