我的java歷程

          會話跟蹤技術--session的使用

           

          會話跟蹤技術--session的使用

           

          會話跟蹤:

          1、 使用隱藏表單字段

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

          2、 URL重寫

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

          3、 持久Cookie

          4、 會話HttpSession

           

          一、使用session的簡單步驟

          獲取HttpSessionrequest.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

           

          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");

              }

          }

           

          3、JapaneseBook.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>");

                     }

                 }

              }

          }

           

          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);

              }

          }

           

          6、CatalogItem.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", "Jboss,Jboss", 35),

                     new CatalogItem("book5", "Japanese1", "Japanese1,Japanese1", 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;

              }

          }

           

          9、check.html

           

          <html>

          <head>

          <title>checking out</title>

          </head>

          <body>

          Checking out

          </body>

          posted on 2007-04-28 21:33 landril 閱讀(2647) 評論(1)  編輯  收藏 所屬分類: Jsp&Servlet

          Feedback

          # re: 會話跟蹤技術--session的使用 2008-07-14 22:30 宋雨

          沒有注釋看不懂啊  回復  更多評論   

          主站蜘蛛池模板: 洛宁县| 清河县| 津市市| 茂名市| 翁源县| 绵竹市| 湟中县| 新龙县| 辰溪县| 玉林市| 集安市| 延长县| 怀宁县| 玉龙| 胶南市| 娄烦县| 沈阳市| 潼南县| 怀宁县| 资中县| 贡山| 霍山县| 余庆县| 佛坪县| 玛纳斯县| 朔州市| 如东县| 祁门县| 金湖县| 章丘市| 乐安县| 九台市| 太和县| 天津市| 西丰县| 阜城县| 金川县| 洛阳市| 和政县| 开封县| 同心县|