Session Shopping Cart Example one
The code is as follows |
Copy Code |
Package cn.com.shopping; Import java.io.IOException; Import java.util.ArrayList; 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; Complete purchase public class Buyservlet extends HttpServlet { Private static final long serialversionuid = 1L; protected void doget (HttpServletRequest request, httpservletresponse response) throws Servletexception, IOException { String id=request.getparameter ("id"); Book book= (book) Db.getall (). get (ID); Plus the 剞 something bad behind program that closes the cookie session Solution when blocking session HttpSession session=request.getsession (FALSE); A collection of all books that are saved by the user from the session (CART) List list= (list) session.getattribute ("list"); if (list==null) { List=new ArrayList (); Session.setattribute ("list", list); } List.add (book); String Url=response.encoderedirecturl ("/session/sessioncountdemo"); Response.sendredirect (URL); } protected void DoPost (HttpServletRequest request, httpservletresponse response) throws Servletexception, IOException { Doget (Request,response); } } Package cn.com.shopping; Import java.io.IOException; Import Java.io.PrintWriter; Import Java.util.LinkedHashMap; Import Java.util.Map; Import javax.servlet.ServletException; Import Javax.servlet.http.HttpServlet; Import Javax.servlet.http.HttpServletRequest; Import Javax.servlet.http.HttpServletResponse; Import javax.servlet.http.HttpSession; Show book public class Listbookservlet extends HttpServlet { Private static final long serialversionuid = 1L; protected void doget (HttpServletRequest request, httpservletresponse response) throws Servletexception, IOException { Response.setcharacterencoding ("UTF-8"); Response.setcontenttype ("Text/html;charset=utf-8"); PrintWriter Out=response.getwriter (); HttpSession session=request.getsession (); Out.print ("Our store is like the merchandise:<br/>"); map<string, Book > Map=db.getall (); For (map.entry<string, book> entry:map.entrySet ()) { Book Book=entry.getvalue (); String Url=response.encodeurl ("/session/buyservlet?id=" +book.getid ()); Out.print (Book.getname () + "<a href= '" +url+ "' target= ' _blank ' > Buy </a><br/>"); } } protected void DoPost (HttpServletRequest request, httpservletresponse response) throws Servletexception, IOException { Doget (Request,response); } } DB as a database Class Db { private static map<string,book> map=new Linkedhashmap (); Static { Map.put ("1", New book ("1", "Java Web Development", "WY", "Good Books")); Map.put ("2", New book ("2", "Web Development", "ZT", "General")); Map.put ("3", New book ("3", "Program Design", "DF", "Better Books")); Map.put ("4", New book ("4", "Computer composition", "as", "General Good Books")); Map.put ("5", New book ("5", "Principles of compilation", "Ty", "very Good books")); Map.put ("6", New book ("6", "Network Maintenance", "HJ", "very Good books")); } public static Map GetAll () { return map; } } Book Class Book { Private String ID; private String name; Private String author; Private String description; Public book () { Super (); TODO auto-generated Constructor stub } Public book (string ID, string name, string author, string description) { Super (); This.id = ID; THIS.name = name; This.author = author; this.description = description; } Public String getId () { return ID; } public void SetId (String id) { This.id = ID; } Public String GetName () { return name; } public void SetName (String name) { THIS.name = name; } Public String Getauthor () { return author; } public void Setauthor (String author) { This.author = author; } Public String getdescription () { return description; } public void SetDescription (String description) { this.description = description; } } Package cn.com.shopping; 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 Sessioncountdemo extends HttpServlet { Private static final long serialversionuid = 1L; protected void doget (HttpServletRequest request, httpservletresponse response) throws Servletexception, IOException { Response.setcharacterencoding ("UTF-8"); Response.setcontenttype ("Text/html;charset=utf-8"); PrintWriter Out=response.getwriter (); HttpSession session=request.getsession (); if (session==null) { Out.write ("You didn't buy any goods!") "); Return } Out.write ("You have purchased the following goods:"); list<book> list= (list) session.getattribute ("list"); for (book Book:list) { Out.write (Book.getname ()); } } protected void DoPost (HttpServletRequest request, httpservletresponse response) throws Servletexception, IOException { Doget (Request,response); } } |
The above is just a reference, the following detailed introduction to the Java Shopping cart some implementation methods
For information, find three ways to:
1. Use cookies to realize the shopping cart;
2. Implement the shopping cart with session;
3. Use cookies and database (shopping cart information persistence) to achieve the shopping cart;
analyze the pros and cons of these three approaches:
1. Simple cookies to implement a shopping cart, such a shopping cart is not ideal, imagine if the client's browser to disable the cookie,
This way it's going to miscarry here ...
2.session Save the shopping cart information, this is only available in a session, if the user is not logged in, or said to log in after the Add shopping cart, in the closing browser
or log out, before the addition of the shopping cart are all aborted ...
3. I would say this is the way ...
The main process:
A. User log in before the data flow: Users do not login to the system, the favorite items to add shopping cart, then this time, we can store the shopping cart information
To cookies, this involves adding cookies, modifying the operation, or adding the cookie if the cookie is not stored in the cookie before.
If there is a cookie in the cookie, then it is time to modify the cookie (this involves the user adding a cart to the same item multiple times).
B. User logon Data flow: After the user login, the system first thing to do is to obtain the corresponding cookies, if there is a relevant shopping cart cookies, then the cart
The information is persisted by the corresponding user, either added or modified. (Add action: This user's corresponding shopping cart if there is no corresponding information to add action; Modify operation: similar,
If there is a corresponding user's shopping cart information, modify the operation. When a user logs in, the shopping cart can also be added, but this is not added to the cookie, but is persisted directly to the
Database. Note: The data that the user logs in to deal with the database.
=========================================================================
Code section:
=========================================================================
The code is as follows |
Copy Code |
Note: 1 conf.iduona_cashticket_cookie_startname = "iduona_cashticket_";
/** * User Login * * @author Hongten */ public void Login () { When the user log in, to read cookies, and the operation of persistent words, more login operation here omitted .... Peristshoppingcartwhenuserlogin (NewUser); } /** * Add Shopping cart <br> * ============================================<br> * User Login before:<br> * When the user selects the cash coupon, click on the cash coupon to add to the cart, the information of the cash coupon (Cash coupon ID, purchase quantity) <br> * Passed here, this time, backstage to do is to query from the cookie whether there is the same record, if the same record <br> * Update the corresponding records; otherwise, add new records <br> * User Login after:<br> * After the user has logged in, if there are additional shopping cart operations, then do not save to the cookie, but the direct persistence of the cart information <br> * * @throws Exception */ public void AddToShoppingCart () throws Exception { if (Cashticket = null | | Cashticket.getid () = null | | Cashticket.getid () < 1) { Write ("Nullid"); else if (q = = NULL | | | q = = "") { Purchase quantity, by default, below 1 Q = string.valueof (1); } else { Read All Cookies Cookie cookies[] = Servletactioncontext.getrequest (). GetCookies (); if (cookies = null | | Cookies.length < 0) { No cookies System.out.println ("There is no cookie ..."); } else { To determine whether a user is logged on if (getuserinsession () = null) { Boolean flag = true; for (Cookie c:cookies) { if (C.getname (). Equals (Conf.iduona_cashticket_cookie_startname + Cashticket.getid ())) { Indicates that cookies are available in existing cookies and are updated. Integer OldValue = integer.valueof (C.getvalue ()); Integer newvalue = integer.valueof (OldValue + integer.valueof (q)); Fixcookie (c, newvalue.tostring (). Trim ()); Flag = false; } } To indicate that there is no corresponding cookie in the existing cookies, add the operation if (flag) { Addcookie (Conf.iduona_cashticket_cookie_startname + cashticket.getid (), Q.trim ()); } // ================================================== Test with, read all cookies Readshoppingcartfromcookie (); // ================================================== Write ("Success"); } else { If the user logs in, the session exists with user, then the shopping cart information is persisted Cashticket cashtickettemp = Cashticketservice.get (Cashticket.getid ()); if (Shoppingcartservice.isexistuserandcashticket (Getuserinsession (), cashtickettemp)) { ShoppingCart Oldshoppingcart = Shoppingcartservice.getbyuserandcashticket (Getuserinsession (), cashTicketTemp); Oldshoppingcart.setamount (Oldshoppingcart.getamount () + integer.valueof (q)); if (Shoppingcartservice.update (Oldshoppingcart)) { Write ("Success"); } } else { ShoppingCart shoppingcarttemp = new ShoppingCart (); Shoppingcarttemp.setamount (integer.valueof (q)); Shoppingcarttemp.setuser (Getuserinsession ()); Shoppingcarttemp.setcashticket (cashtickettemp); Shoppingcarttemp.setcreatetime (New Date ()); Shoppingcarttemp.setstatustype (statustype.positive); Shoppingcarttemp.setuuid (Uuid.randomuuid (). toString ()); if (Shoppingcartservice.save (shoppingcarttemp)) { Write ("Success"); } } } } } } /** * Read the shopping cart information from the cookie * * @throws Exception * @return */ public void Readshoppingcartfromcookie () throws Exception { System.out.println ("======================================================"); Cookie cookies[] = Servletactioncontext.getrequest (). GetCookies (); if (cookies = null | | Cookies.length < 0) { System.out.println ("There is no cookie ..."); No cookies } else { for (Cookie c:cookies) { SYSTEM.OUT.PRINTLN ("haha there are many cookies:" + c.getname () + "" + C.getvalue ()); } } } /** * Add cookie Operation * & nbsp; * @param name * Cookie's name * @param value * the value of the cookie */ public void Addcookie (string name, String value) { cookie cookie = n EW Cookie (Name.trim (), Value.trim ()); cookie.setmaxage (2 * 60 * 60 * 1000);//set to 2 clock & nbsp; servletactioncontext.getresponse (). Addcookie (cookie); } /** * Update Cookie operation * * @param c * The cookie to be modified * @param value * The value of the modified cookie */ public void Fixcookie (Cookie C, String value) { C.setvalue (Value.trim ()); C.setmaxage (2 * 60 * 60 * 1000);//set to 2 clock Servletactioncontext.getresponse (). Addcookie (c); } /** * When the user is logged in, the shopping cart information in the cookie is persisted and updated to the user's cart information. */ public void Peristshoppingcartwhenuserlogin (user user) { if (null!= user) { Cookie cookies[] = Servletactioncontext.getrequest (). GetCookies (); if (cookies!= null) { for (Cookie c:cookies) { if (C.getname (). StartsWith (Conf.iduona_cashticket_cookie_startname)) { Get the name of the cookie: "Iduona_cashticket_45" and the value of the cookie: "21" String name = C.getname (); Integer amount = integer.valueof (integer.valueof (C.getvalue ()) +integer.valueof (q)); Integer ct_id = integer.valueof (name.substring (Name.lastindexof ("_") + 1)); Cashticket temp = Cashticketservice.get (ct_id); ShoppingCart shoppingcarttemp = new ShoppingCart (); if (null!= temp) { if (shoppingcartservice.isexistuserandcashticket (user, temp)) { Perform an update operation ShoppingCart Oldshoppingcart = shoppingcartservice.getbyuserandcashticket (user, temp); Oldshoppingcart.setamount (amount); Shoppingcartservice.update (Oldshoppingcart); } else { Otherwise save the record Shoppingcarttemp.setamount (amount); Shoppingcarttemp.setuser (user); Shoppingcarttemp.setcashticket (temp); Shoppingcarttemp.setcreatetime (New Date ()); Shoppingcarttemp.setstatustype (statustype.positive); Shoppingcarttemp.setuuid (Uuid.randomuuid (). toString ()); Shoppingcartservice.save (shoppingcarttemp); } } } } Remove all cash coupons from cookies Removeallcookies (); } } } /** * Remove all cash coupons cookies operation */ public void Removeallcookies () { Cookie cookies[] = Servletactioncontext.getrequest (). GetCookies (); if (cookies = null | | Cookies.length < 0) { No cookies System.out.println ("There is no cookie ..."); } else { System.out.println ("Start removing cookies ..."); for (Cookie c:cookies) { if (C.getname (). StartsWith (Conf.iduona_cashticket_cookie_startname)) { C.setmaxage (0);//set to 0 Servletactioncontext.getresponse (). Addcookie (c); } } } } |
This is part of the code ....
Effect:
The situation inside the database: