我的java歷程

          會(huì)話(huà)跟蹤技術(shù)--session的使用

           

          會(huì)話(huà)跟蹤技術(shù)--session的使用

           

          會(huì)話(huà)跟蹤:

          1、 使用隱藏表單字段

          <INPUT TYPE=”HIDDEN” NAME=”session” VALUE=”landril”

          2、 URL重寫(xiě)

          http://host/path/file.jsp?sessionid=landril

          3、 持久Cookie

          4、 會(huì)話(huà)HttpSession

           

          一、使用session的簡(jiǎn)單步驟

          獲取HttpSessionrequest.getSession()方法)對(duì)象,查找與該會(huì)話(huà)相關(guān)的信息(session.getAttribute()),存儲(chǔ)會(huì)話(huà)中的信息(session.setAttribute()),刪除會(huì)話(huà)中的數(shù)據(jù)(session.removeAttribute()),刪除當(dāng)前會(huì)話(huà)(session.invalidate()

          session中,可以存儲(chǔ)任意數(shù)量的鍵值對(duì),通過(guò)鍵即可獲取相應(yīng)的值,即使用:session.getAttribute(“key”);

           

          二、session的常用方法

          1、 getAttribute():從session中獲取以前存儲(chǔ)的值

          2、 getAttributeNames():返回session中所有屬性的名稱(chēng)

          3、 setAttribute():將鍵與值關(guān)聯(lián)起來(lái),存儲(chǔ)進(jìn)session

          4、 removeAttribute():刪除session中存儲(chǔ)的對(duì)應(yīng)鍵的值

          5、 invalidate():刪除整個(gè)session及其存儲(chǔ)的鍵值

          6、 logout():注銷(xiāo)當(dāng)前用戶(hù)

          7、 getId():獲取每個(gè)session對(duì)應(yīng)的唯一ID

          8、 getCreationTime():獲取session創(chuàng)建的時(shí)間

          9、 getLastAccessedTime():獲取session最后被訪(fǎng)問(wèn)的時(shí)間

          10、              getMaxInactiveInterval():在用戶(hù)沒(méi)有訪(fǎng)問(wèn)的情況下,會(huì)話(huà)在被自動(dòng)廢棄之前應(yīng)該保持多長(zhǎng)時(shí)間

           

          三、使用session的一個(gè)例子,擁有購(gòu)物車(chē)的在線(xiàn)商店

           

          1CatalogPage.java

           

          package com.landril.session;

           

          import java.io.IOException;

          import java.io.PrintWriter;

           

          import javax.servlet.ServletException;

          import javax.servlet.http.HttpServlet;

          import javax.servlet.http.HttpServletRequest;

          import javax.servlet.http.HttpServletResponse;

           

          public class CatalogPage extends HttpServlet {

           

              private CatalogItem[] items;

           

              private String[] itemIds;

           

              private String title;

           

              protected void setItems(String[] itemIds) {

                 this.itemIds = itemIds;

                 items = new CatalogItem[itemIds.length];

                 for (int i = 0; i < items.length; i++) {

                     items[i] = Catalog.getItem(itemIds[i]);

                 }

              }

           

              protected void setTitle(String title) {

                 this.title = title;

              }

           

              public void doGet(HttpServletRequest request, HttpServletResponse response)

                     throws ServletException, IOException {

                

                 if(items == null){

                     response.sendError(response.SC_NOT_FOUND,"Missing Items:");

                     return;

                 }

                

                 response.setContentType("text/html");

                 PrintWriter out = response.getWriter();

                 out.println("<html><head><title>"+title+"</title></head><body><h3>"+title+"</h3>");

                 CatalogItem item;

                 for (int i = 0; i < items.length; i++) {

                     out.println("<hr>");

                     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("<form action='"+formURL+"'>");

                        out.println("<input type='hidden' name='itemId' value='"+item.getItemId()+"'>");

                        out.println(new String(item.getSDesc().getBytes("utf-8"),"GBK")+"$"+item.getPrice()+item.getLDesc());

                        out.println("<input type='submit' value='add to shopping cart'></form></body></html>");

                     }

                 }

              }

          }

           

          2ComputerBook.java

           

          package com.landril.session;

           

          public class ComputerBook extends CatalogPage{

              public void init(){

                 String[] ids = {"book1","book2","book3","book4"};

                 setItems(ids);

                 setTitle("Japanese Book");

              }

          }

           

          3JapaneseBook.java

           

          package com.landril.session;

           

          public class JapaneseBook extends CatalogPage{

              public void init(){

                 String[] ids = {"book5","book6"};

                 setItems(ids);

                 setTitle("Computer Book");

              }

          }

           

          4OrderPage.java

           

          package com.landril.session;

           

          import java.io.IOException;

          import java.io.PrintWriter;

          import java.util.List;

           

          import javax.servlet.ServletException;

          import javax.servlet.http.HttpServlet;

          import javax.servlet.http.HttpServletRequest;

          import javax.servlet.http.HttpServletResponse;

          import javax.servlet.http.HttpSession;

           

          public class OrderPage extends HttpServlet {

           

              public void doGet(HttpServletRequest request, HttpServletResponse response)

                     throws ServletException, IOException {

                 HttpSession session = request.getSession();

                 ShoppingCart cart;

                 synchronized(session){

                     cart = (ShoppingCart)session.getAttribute("shop");

                     if(cart == null){

                        cart = new ShoppingCart();

                        session.setAttribute("shop", cart);

                     }

                     String itemId = request.getParameter("itemId");

                     if(itemId != null){

                        String num = request.getParameter("num");

                        if(num == null)

                            cart.addItem(itemId);

                        else{

                            int numItems;

                        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("<html><head><title>"+title+"</title></head><body><h3>"+title+"</h3>");

                 synchronized(session){

                     List<ItemOrder> itemOrders = cart.getItemOrders();

                     if(itemOrders.size() == 0)

                        out.println("No items");

                     else{

                        out.println("<table border=1><tr><th>Item ID<th>Short Description<th>Long Description<th>Unit Price<th>Number<th>Total Price");

                        ItemOrder order;

                        for (int i = 0; i < itemOrders.size(); i++) {

                            order = (ItemOrder)itemOrders.get(i);

                            out.println("<tr><td>"+order.getItemId()+"<td>"+order.getSDesc()+"<td>"+order.getLDesc()+"<td>"+order.getUnitPrice()+"<td>");

                            out.println("<form><input type='hidden' name='itemId' value='"+order.getItemId()+"'>");

                            out.println("<input type='text' name='num' size=3 value='"+order.getNum()+"'>");

                            out.println("<input type='submit' value='update order'></form><td>");

                            out.println(order.getTotalPrice());

                         }

                       

                        String checkURL = response.encodeURL(request.getContextPath()+"/check.html");

                        out.println("</table><form action='"+checkURL+"'>");

                        out.println("<input type='submit' value='submit'></form></body></html>");

                     }

                 }

              }

          }

           

          5ShoppingCart.java

           

          package com.landril.session;

           

          import java.util.ArrayList;

          import java.util.List;

           

          public class ShoppingCart {

              private List<ItemOrder> itemOrders;

           

              public ShoppingCart() {

                 itemOrders = new ArrayList<ItemOrder>();

              }

             

              public List<ItemOrder> getItemOrders(){

                 return itemOrders;

              }

             

              public synchronized void addItem(String itemId){

                 ItemOrder order;

                 for(int i=0;i<itemOrders.size();i++){

                     order = (ItemOrder)itemOrders.get(i);

                     if(itemId.equals(order.getItemId())){

                        order.addNum();

                        return;

                     }

                 }

                 ItemOrder newOrd = new ItemOrder(Catalog.getItem(itemId));

                 itemOrders.add(newOrd);

              }

             

              public synchronized void setNum(String itemId,int num){

                 ItemOrder order;

                 for (int i = 0; i < itemOrders.size(); i++) {

                     order = (ItemOrder)itemOrders.get(i);

                     if(itemId.equals(order.getItemId())){

                        if(num <=0)

                            itemOrders.remove(i);

                        else

                            order.setNum(num);

                     }

                     return;

                 }

                 ItemOrder newOrd = new ItemOrder(Catalog.getItem(itemId));

                 itemOrders.add(newOrd);

              }

          }

           

          6CatalogItem.java

           

          package com.landril.session;

           

          public class CatalogItem {

              private String itemId;

           

              private String sDesc;

           

              private String lDesc;

           

              private float price;

           

              public String getItemId() {

                 return itemId;

              }

           

              public void setItemId(String itemId) {

                 this.itemId = itemId;

              }

           

              public String getLDesc() {

                 return lDesc;

              }

           

              public void setLDesc(String desc) {

                 lDesc = desc;

              }

           

              public float getPrice() {

                 return price;

              }

           

              public void setPrice(float price) {

                 this.price = price;

              }

           

              public String getSDesc() {

                 return sDesc;

              }

           

              public void setSDesc(String desc) {

                 sDesc = desc;

              }

           

              public CatalogItem(String itemId, String desc, String desc2, float price) {

                 super();

                 this.itemId = itemId;

                 sDesc = desc;

                 lDesc = desc2;

                 this.price = price;

              }

          }

           

          7ItemOrder.java

           

          package com.landril.session;

           

          public class ItemOrder {

              private CatalogItem item;

           

              private int num;

           

              public ItemOrder(CatalogItem item) {

                 setItem(item);

                 setNum(1);

              }

           

              public CatalogItem getItem() {

                 return item;

              }

           

              public void setItem(CatalogItem item) {

                 this.item = item;

              }

           

              public int getNum() {

                 return num;

              }

           

              public void setNum(int num) {

                 this.num = num;

              }

           

              public String getItemId() {

                 return item.getItemId();

              }

           

              public String getSDesc() {

                 return item.getSDesc();

              }

           

              public String getLDesc() {

                 return item.getLDesc();

              }

           

              public float getUnitPrice() {

                 return item.getPrice();

              }

           

              public void addNum() {

                 setNum(num + 1);

              }

           

              public void cancelOrder() {

                 setNum(0);

              }

           

              public float getTotalPrice() {

                 return num * getUnitPrice();

              }

           

          }

           

          8Catalog.java

           

          package com.landril.session;

           

          public class Catalog {

              private static CatalogItem[] items = {

                     new CatalogItem("book1", "Hibernate", "HibernateHibernate", 57),

                     new CatalogItem("book2", "Spring", "SpringSpring", 36),

                     new CatalogItem("book3", "Tomcat", "TomcatTomcat", 23),

                     new CatalogItem("book4", "Jboss", "JbossJboss", 35),

                     new CatalogItem("book5", "Japanese1", "Japanese1Japanese1", 35),

                     new CatalogItem("book6", "Japanese2", "Japanese2Japanese2", 23) };

           

              public static CatalogItem getItem(String itemId) {

                 CatalogItem item;

                 if (itemId == null)

                     return null;

                 for (int i = 0; i < items.length; i++) {

                     item = items[i];

                     if (itemId.equals(item.getItemId()))

                        return item;

                 }

                 return null;

              }

          }

           

          9check.html

           

          <html>

          <head>

          <title>checking out</title>

          </head>

          <body>

          Checking out

          </body>

          posted on 2007-04-28 21:33 landril 閱讀(2646) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): Jsp&Servlet

          Feedback

          # re: 會(huì)話(huà)跟蹤技術(shù)--session的使用 2008-07-14 22:30 宋雨

          沒(méi)有注釋看不懂啊  回復(fù)  更多評(píng)論   

          主站蜘蛛池模板: 太康县| 桃江县| 宽甸| 玛沁县| 灵山县| 云龙县| 奇台县| 大同市| 手游| 秀山| 灵武市| 天水市| 格尔木市| 辽阳市| 晋州市| 榕江县| 龙口市| 利津县| 达拉特旗| 新绛县| 商洛市| 平昌县| 吴桥县| 河南省| 甘孜| 济宁市| 芷江| 佳木斯市| 上林县| 新河县| 东阳市| 古浪县| 互助| 凉城县| 景德镇市| 武义县| 无锡市| 彰武县| 土默特左旗| 开原市| 肃南|