案例6-管理Session变量

   Session 代表一次会话。session主要有setAttribute(),getAttribute(),removeAttribute(),getAttributeNames() 方法,可通过session开发 购物车程序。

  
  
  
  
  1. <%!  
  2. static final String PREFIX_LABEL="SessionTest"
  3. //删除前缀 
  4. private String removePrefix(String name) { 
  5. if (name.startsWith(PREFIX_LABEL)) 
  6. namename = name.substring(PREFIX_LABEL.length()); 
  7. return name; 
  8. }  
  9. //增加前缀 
  10. private String addPrefix(String name) { 
  11. if (!name.startsWith(PREFIX_LABEL)) 
  12. name = PREFIX_LABEL + name; 
  13. return name; 
  14. %> 
  15. <%@ page contentType="text/html; charset=GB2312" %> 
  16. <%@ page import="java.util.*" %> 
  17. <%@ page language="java" %> 
  18. <html> 
  19. <head> 
  20. <title>管理Session变量</title> 
  21. </head> 
  22. <body> 
  23. <center> 
  24. <font size=5 color=#DB1260> 
  25. 管理Session变量 
  26. </font> 
  27. <BR> 
  28.  
  29. <BR> 
  30. <
  31. //增加值 
  32. if (request.getParameter("AddValue") != null) { 
  33. session.setAttribute(addPrefix(request.getParameter("NameField")),  
  34. request.getParameter("ValueField")); 
  35. //减小值 
  36. } else if (request.getParameter("DeleteValue") != null) { 
  37. session.removeAttribute(addPrefix(request. 
  38. getParameter("NameField"))); 
  39. %> 
  40. <center> 
  41. <table border=1 cellspacing=2 cellpadding=5 width=400 bgcolor=#EEEEEE> 
  42. <th colspan=2>Session 
  43. </th> 
  44. <tr> 
  45. <td><B>变量名</B></td> 
  46. <td><B>变量值</B></td> 
  47. </tr> 
  48. <
  49. Enumeration sessionsessionNames = session.getAttributeNames(); 
  50. String name; 
  51. while (sessionNames.hasMoreElements()) { 
  52. name = (String)sessionNames.nextElement();  
  53. %> 
  54. <tr> 
  55. <td><%= removePrefix(name) %></td> 
  56. <td><%= (String)session.getAttribute(name) %></td> 
  57. </tr> 
  58. <
  59. } // end of while loop for session names 
  60. %> 
  61. </table> 
  62. </center> 
  63. <p> 
  64. <form method="post" name="SessionTest"  
  65. action="SessionAdmin.jsp"> 
  66. <center> 
  67. <table border=0 cellspacing=2 cellpadding=5 width=400> 
  68. <th>变量名</th> 
  69. <th>变量值</th> 
  70. <tr> 
  71. <td><input type="text" name="NameField"></td> 
  72. <td><input type="text" name="ValueField"></td> 
  73. </tr> 
  74. <tr> 
  75. <td colspan=2 align=center><input type="submit"  
  76. value=" Add  " name="AddValue"></td> 
  77. </tr> 
  78. <tr> 
  79. <td colspan=2 align=center><input type="submit"  
  80. value="Delete" name="DeleteValue"></td> 
  81. </tr> 
  82. </table> 
  83. </center> 
  84. </form> 
  85. </font> 
  86. </font> 
  87. </center> 
  88. </body> 
  89. </html> 

 

管理Session变量

Session
变量名 变量值

 

变量名 变量值

如何用session开发购物车

首先学习一些session常用的API(这些API都可以在文档中找到)以方便了解session的一些常规操作。

1.将内容放入购物车

在session中,有一个函数:void session.setAttribute(String name,Object obj); ,通过该函数,可以将一个对象放入购物车。

在该函数里面,参数1:name就是来为每一个物品起一个属性(attribute)的名字(标记);参数2: obj,就是内容本身。

例如:

         
         
         
         
  1. session.setAttribute("book1","三国演义"); 

就是将一个"三国演义"放入session,命名为" book1"。

特别提醒

1. 如果两次调用setAttribute(String name,Object obj);并且name相同,那么后面放进去的内容将会覆盖以前放进去的内容。

2. setAttribute(String name,Object obj);的第二个参数是Object类型,即可以放入session的不仅仅是一些简单字符串,还可以是Object。集合、数据结构对象都可以放入session,这大大提升了session的功能。

2.读取购物车中的内容

读取购物车的内容,通过session中的一个函数:Object session.getAttribute(String name);。

在该函数里面,name就是被取出的内容所对应的标记;返回值,就是内容本身。例如:

cart3_1.jsp

  
  
  
  
  1. <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> 
  2. <html> 
  3.     <body> 
  4.         <
  5.             ArrayList books = new ArrayList(); //向books中添加       
  6.             books.add("三国演义");      
  7.             books.add("西游记");       
  8.             books.add("水浒传");      //将books放入session       
  9.             session.setAttribute("books",books); 
  10.         %> 
  11.         <a href=" cart3_2.jsp">查看购物车</a> 
  12.     </body> 
  13. </html> 

cart3_2.jsp

   
   
   
   
  1. <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> 
  2. <html> 
  3.     <body> 
  4.         购物车中内容为: 
  5.         <HR> 
  6.         <
  7.             //从购物车中取出books      
  8.             ArrayList books = (ArrayList)session.getAttribute("books");     
  9.  //遍历books      
  10.             for(int i=0;i<books.size();i++){         
  11.              String book = (String)books.get(i);          
  12.              out.println(book + "<BR>");      
  13.         %> 
  14.     </body> 
  15. </html> 

输出结果:

购物车中内容为:

三国演义
西游记
水浒传


当然这个甚至还不能算做购物车程序,连最基本的添加、删除功能都没有实现,只是练习了 session的

一些常用操作,真正的 购物车程序要比这复杂的多。要抽象出商品类(包含商品基本信息),商品项类

(包含商品,和商品个数),还要实现分页功能,以及基本的添加删除查看操作。待以后修改

 

 

你可能感兴趣的:(java-web)