java logout session_会话跟踪技术--session的使用
會話跟蹤技術--session的使用
會話跟蹤:
1、使用隱藏表單字段
2、URL重寫
http://host/path/file.jsp?sessionid=landril
3、持久Cookie
4、會話HttpSession
一、使用session的簡單步驟
獲取HttpSession(request.getSession()方法)對象,查找與該會話相關的信息(session.getAttribute()),存儲會話中的信息(session.setAttribute()),刪除會話中的數據(session.removeAttribute()),刪除當前會話(session.invalidate())
在session中,可以存儲任意數量的鍵值對,通過鍵即可獲取相應的值,即使用:session.getAttribute(“key”);。
二、session的常用方法
1、getAttribute():從session中獲取以前存儲的值
2、getAttributeNames():返回session中所有屬性的名稱
3、setAttribute():將鍵與值關聯起來,存儲進session
4、removeAttribute():刪除session中存儲的對應鍵的值
5、invalidate():刪除整個session及其存儲的鍵值
6、logout():注銷當前用戶
7、getId():獲取每個session對應的唯一ID
8、getCreationTime():獲取session創建的時間
9、getLastAccessedTime():獲取session最后被訪問的時間
10、getMaxInactiveInterval():在用戶沒有訪問的情況下,會話在被自動廢棄之前應該保持多長時間
三、使用session的一個例子,擁有購物車的在線商店
1、CatalogPage.java
packagecom.landril.session;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclassCatalogPageextendsHttpServlet {
privateCatalogItem[]items;
privateString[]itemIds;
privateStringtitle;
protectedvoidsetItems(String[] itemIds) {
this.itemIds= itemIds;
items=newCatalogItem[itemIds.length];
for(inti = 0; i
items[i] = Catalog.getItem(itemIds[i]);
}
}
protectedvoidsetTitle(String title) {
this.title= title;
}
publicvoiddoGet(HttpServletRequest request, HttpServletResponse response)
throwsServletException, IOException {
if(items==null){
response.sendError(response.SC_NOT_FOUND,"Missing Items:");
return;
}
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("
"+title+""+title+"
");CatalogItem item;
for(inti = 0; i
out.println("
");
item =items[i];
if(item ==null)
out.println("Unknow itemId: "+itemIds[i]);
else{
out.println();
String formURL = request.getContextPath()+"/orderPage";
formURL = response.encodeURL(formURL);
out.println("
");out.println("");
out.println(newString(item.getSDesc().getBytes("utf-8"),"GBK")+"$"+item.getPrice()+item.getLDesc());
out.println("
");}
}
}
}
2、ComputerBook.java
packagecom.landril.session;
publicclassComputerBookextendsCatalogPage{
publicvoidinit(){
String[] ids = {"book1","book2","book3","book4"};
setItems(ids);
setTitle("Japanese Book");
}
}
3、JapaneseBook.java
packagecom.landril.session;
publicclassJapaneseBookextendsCatalogPage{
publicvoidinit(){
String[] ids = {"book5","book6"};
setItems(ids);
setTitle("Computer Book");
}
}
4、OrderPage.java
packagecom.landril.session;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.util.List;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
publicclassOrderPageextendsHttpServlet {
publicvoiddoGet(HttpServletRequest request, HttpServletResponse response)
throwsServletException, IOException {
HttpSession session = request.getSession();
ShoppingCart cart;
synchronized(session){
cart = (ShoppingCart)session.getAttribute("shop");
if(cart ==null){
cart =newShoppingCart();
session.setAttribute("shop", cart);
}
String itemId = request.getParameter("itemId");
if(itemId !=null){
String num = request.getParameter("num");
if(num ==null)
cart.addItem(itemId);
else{
intnumItems;
try{
numItems = Integer.parseInt(num);
}catch(NumberFormatException e) {
numItems = 1;
}
cart.setNum(itemId, numItems);
}
}
}
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title ="Your Order";
out.println("
"+title+""+title+"
");synchronized(session){
List itemOrders = cart.getItemOrders();
if(itemOrders.size() == 0)
out.println("No items");
else{
out.println("
| "+order.getItemId()+" | "+order.getSDesc()+" | "+order.getLDesc()+" | "+order.getUnitPrice()+" | "); out.println(" ");out.println(""); out.println(" | "); out.println(order.getTotalPrice()); } String checkURL = response.encodeURL(request.getContextPath()+"/check.html"); out.println(" |
out.println("
");}
}
}
}
5、ShoppingCart.java
packagecom.landril.session;
importjava.util.ArrayList;
importjava.util.List;
publicclassShoppingCart {
privateListitemOrders;
publicShoppingCart() {
itemOrders=newArrayList();
}
publicList getItemOrders(){
returnitemOrders;
}
publicsynchronizedvoidaddItem(String itemId){
ItemOrder order;
for(inti=0;i
order = (ItemOrder)itemOrders.get(i);
if(itemId.equals(order.getItemId())){
order.addNum();
return;
}
}
ItemOrder newOrd =newItemOrder(Catalog.getItem(itemId));
itemOrders.add(newOrd);
}
publicsynchronizedvoidsetNum(String itemId,intnum){
ItemOrder order;
for(inti = 0; i
order = (ItemOrder)itemOrders.get(i);
if(itemId.equals(order.getItemId())){
if(num <=0)
itemOrders.remove(i);
else
order.setNum(num);
}
return;
}
ItemOrder newOrd =newItemOrder(Catalog.getItem(itemId));
itemOrders.add(newOrd);
}
}
6、CatalogItem.java
packagecom.landril.session;
publicclassCatalogItem {
privateStringitemId;
privateStringsDesc;
privateStringlDesc;
privatefloatprice;
publicString getItemId() {
returnitemId;
}
publicvoidsetItemId(String itemId) {
this.itemId= itemId;
}
publicString getLDesc() {
returnlDesc;
}
publicvoidsetLDesc(String desc) {
lDesc= desc;
}
publicfloatgetPrice() {
returnprice;
}
publicvoidsetPrice(floatprice) {
this.price= price;
}
publicString getSDesc() {
returnsDesc;
}
publicvoidsetSDesc(String desc) {
sDesc= desc;
}
publicCatalogItem(String itemId, String desc, String desc2,floatprice) {
super();
this.itemId= itemId;
sDesc= desc;
lDesc= desc2;
this.price= price;
}
}
7、ItemOrder.java
packagecom.landril.session;
publicclassItemOrder {
privateCatalogItemitem;
privateintnum;
publicItemOrder(CatalogItem item) {
setItem(item);
setNum(1);
}
publicCatalogItem getItem() {
returnitem;
}
publicvoidsetItem(CatalogItem item) {
this.item= item;
}
publicintgetNum() {
returnnum;
}
publicvoidsetNum(intnum) {
this.num= num;
}
publicString getItemId() {
returnitem.getItemId();
}
publicString getSDesc() {
returnitem.getSDesc();
}
publicString getLDesc() {
returnitem.getLDesc();
}
publicfloatgetUnitPrice() {
returnitem.getPrice();
}
publicvoidaddNum() {
setNum(num+ 1);
}
publicvoidcancelOrder() {
setNum(0);
}
publicfloatgetTotalPrice() {
returnnum* getUnitPrice();
}
}
8、Catalog.java
packagecom.landril.session;
publicclassCatalog {
privatestaticCatalogItem[]items= {
newCatalogItem("book1","Hibernate","Hibernate,Hibernate", 57),
newCatalogItem("book2","Spring","Spring,Spring", 36),
newCatalogItem("book3","Tomcat","Tomcat,Tomcat", 23),
newCatalogItem("book4","Jboss","Jboss,Jboss", 35),
newCatalogItem("book5","Japanese1","Japanese1,Japanese1", 35),
newCatalogItem("book6","Japanese2","Japanese2,Japanese2", 23) };
publicstaticCatalogItem getItem(String itemId) {
CatalogItem item;
if(itemId ==null)
returnnull;
for(inti = 0; i
item =items[i];
if(itemId.equals(item.getItemId()))
returnitem;
}
returnnull;
}
}
9、check.html
checking outChecking out
posted on 2007-04-28 21:33 landril 閱讀(2497) 評論(1) ?編輯 ?收藏 所屬分類: Jsp&Servlet
總結
以上是生活随笔為你收集整理的java logout session_会话跟踪技术--session的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++学习之路 | PTA乙级—— 10
- 下一篇: linux 基础训练题,Linux习题练