我的java歷程

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

           

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

           

          會(huì)話跟蹤:

          1、 使用隱藏表單字段

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

          2、 URL重寫(xiě)

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

          3、 持久Cookie

          4、 會(huì)話HttpSession

           

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

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

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

           

          二、session的常用方法

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

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

          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():注銷當(dāng)前用戶

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

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

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

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

           

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

           

          1、CatalogPage.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>");

                     }

                 }

              }

          }

           

          2、ComputerBook.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");

              }

          }

           

          4、OrderPage.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>");

                     }

                 }

              }

          }

           

          5、ShoppingCart.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;

              }

          }

           

          7、ItemOrder.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", "Hibernate,Hibernate", 57),

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

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

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

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

                     new CatalogItem("book6", "Japanese2", "Japanese2,Japanese2", 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)  編輯  收藏 所屬分類: Jsp&Servlet

          Feedback

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

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

          主站蜘蛛池模板: 赣州市| 泾阳县| 东城区| 镇雄县| 油尖旺区| 广宗县| 凤阳县| 高雄市| 西宁市| 攀枝花市| 乃东县| 昌图县| 瓮安县| 宁海县| 安西县| 邹平县| 体育| 当阳市| 彩票| 舞阳县| 福泉市| 军事| 朝阳市| 青冈县| 廉江市| 会泽县| 玉树县| 疏附县| 邯郸市| 元江| 宣武区| 清河县| 翼城县| 康平县| 南陵县| 虎林市| 乐亭县| 卓尼县| 甘肃省| 绥化市| 张掖市|