⑴ (java WEB)誰能告訴我在大型購物網站中使用什麼技術實現購物車的,在線等....只有50分了,一定給
目前購物車的實現主要是通過cookie、session或結合資料庫的方式。下面分析一下它們的機制及作用。
1. cookie
cookie是由伺服器產生,存儲在客戶端的一段信息。它定義了一種Web伺服器在客戶端存儲和返回信息的機制,cookie文件它包含域、路徑、生存期、和由伺服器設置的變數值等內容。當用戶以後訪問同一個Web伺服器時,瀏覽器會把cookie原樣發送給伺服器。通過讓伺服器讀取原先保存到客戶端的信息,網站能夠為瀏覽者提供一系列的方便,例如在線交易過程中標識用戶身份、安全要求不高的場合避免用戶重復輸入名字和密碼、門戶網站的主頁定製、有針對性地投放廣告等等。利用cookie的特性,大大擴展了WEB應用程序的功能,不僅可以建立伺服器與客戶機的聯系,因為cookie可以由伺服器定製,因此還可以將購物信息生成cookie值存放在客戶端,從而實現購物車的功能。用基於cookie的方式實現伺服器與瀏覽器之間的會話或購物車,有以下特點:
n cookie存儲在客戶端,且佔用很少的資源,瀏覽器允許存放300個cookie,每個cookie的大小為4KB,足以滿足購物車的要求,同時也減輕了伺服器的負荷;
n cookie為瀏覽器所內置,使用方便。即使用戶不小心關閉了瀏覽器窗口,只要在cookie定義的有效期內,購物車中的信息也不會丟失;
n cookie不是可執行文件,所以不會以任何方式執行,因此也不會帶來病毒或攻擊用戶的系統;
n 基於cookie的購物車要求用戶瀏覽器必須支持並設置為啟用cookie,否則購物車則失效;
n 存在著關於cookie侵犯訪問者隱私權的爭論,因此有些用戶會禁止本機的cookie功能。
2. session
session是實現購物車的另一種方法。session提供了可以保存和跟蹤用戶的狀態信息的功能,使當前用戶在session中定義的變數和對象能在頁面之間共享,但是不能為應用中其他用戶所訪問,它與cookie最重大的區別是,session將用戶在會話期間的私有信息存儲在伺服器端,提高了安全性。在伺服器生成session後,客戶端會生成一個sessionid識別號保存在客戶端,以保持和伺服器的同步。這個sessionid是只讀的,如果客戶端禁止cookie功能,session會通過在URL中附加參數,或隱含在表單中提交等其他方式在頁面間傳送。因此利用session實施對用戶的管理則更為安全、有效。
同樣,利用session也能實現購物車,這種方式的特點是:
n session用新的機制保持與客戶端的同步,不依賴於客戶端設置;
n 與cookie相比,session是存儲在伺服器端的信息,因此顯得更為安全,因此可將身份標示,購物等信息存儲在session中;
n session會佔用伺服器資源,加大伺服器端的負載,尤其當並發用戶很多時,會生成大量的session,影響伺服器的性能;
n 因為session存儲的信息更敏感,而且是以文件形式保存在伺服器中,因此仍然存在著安全隱患。
3. 結合資料庫的方式
這也是目前較普遍的模式,在這種方式中,資料庫承擔著存儲購物信息的作用,session或cookie則用來跟蹤用戶。這種方式具有以下特點:
n 資料庫與cookie分別負責記錄數據和維持會話,能發揮各自的優勢,使安全性和伺服器性能都得到了提高;
n 每一個購物的行為,都要直接建立與資料庫的連接,直至對表的操作完成後,連接才釋放。當並發用戶很多時,會影響資料庫的性能,因此,這對資料庫的性能提出了更高的要求;
n 使cookie維持會話有賴客戶端的支持。
各種方式的選擇:
雖然cookie可用來實現購物車,但必須獲得瀏覽器的支持,再加上它是存儲在客戶端的信息,極易被獲取,所以這也限制了它存儲更多,更重要的信息。所以一般cookie只用來維持與伺服器的會話,例如國內最大的當當網路書店就是用cookie保持與客戶的聯系,但是這種方式最大的缺點是如果客戶端不支持cookie就會使購物車失效。
Session 能很好地與交易雙方保持會話,可以忽視客戶端的設置。在購物車技術中得到了廣泛的應用。但session的文件屬性使其仍然留有安全隱患。
結合資料庫的方式雖然在一定程度上解決了上述的問題,但從上面的例子可以看出:在這種購物流程中涉及到對資料庫表的頻繁操作,尤其是用戶每選購一次商品,都要與資料庫進行連接,當用戶很多的時候就加大了伺服器與資料庫的負荷。
PS:以上是參考網上資料,對購物車實現的分析!
結合你自身的web的訪問及部署情況,可考慮優先或結合使用。
如果使用資料庫存儲,一般考慮使用緩存技術去解決性能問題。
有問題再追問,good luck!~
⑵ JavaWeb開發中,怎麼根據用戶來實現單個的購物車,小白入門,請指教。能附上源碼跟容易理解謝謝!
1、這個如果連抄資料庫就很簡襲單了,cart資料庫,首先有id,proctID,然後userid,就是買家的id,然後PublishID,視為賣家id,其他的數據從proct表裡面讀,避免了重復存。
2、如果單純的起步學習,我還記得我小時候,老師講用session,用戶進入系統後如果要登錄就用用戶id去存session,不登錄就隨即生成一個id存session,購物車就根據用戶id讀session數據。
⑶ javaweb開發 在購物車實現的問題
第3中比較好。第一種,javaweb本身在cookie中存放復雜對象就很麻煩,讀寫量大。第二種,客戶下內線sesson一般就會容被移除,這樣用戶下次登陸時就沒有之前購物車信息了。第3中,可以避免上面的不足
⑷ 急求一個用java web編寫的購物車程序,期末考試要用。
查詢的資料,找到三種方法:
1.用cookie實現購物車;
2.用session實現購物車;
3.用cookie和資料庫(購物車信息持久化)實現購物車;
=========================================================================
分析一下這三種方法的優缺點:
1.單純有cookie實現購物車,這樣的購物車不是很理想,設想一下,如果客戶端的瀏覽器把cookie給禁用了,
這種方法就會在這里流產...
2.session中保存購物車的信息,這個只是在一個會話中可用,如果用戶沒有登錄,或者說登錄了以後,添加購物車,在關閉瀏覽器
或者登出後,之前所添加的購物車通通都流產啦...
其實每次遇到不會的都來求助是很不方便的
如果你想了解和學習更多的JAVA編程,成為一名真正的JAVA高手,你可以來這個裙,前面三個數是四二六 中間是三九六 後面是二八四
把這串數字連起來就可以了,這是一個高手的學習裙,在這里你可以學習到書上學不到的知識,還有大牛相互討論並指導你解答哦!
3.我這里要說就是這種方法啦.....
主要的流程:
A.用戶登錄前的數據流:用戶在沒有登錄系統的時候,對喜歡的商品進行添加購物車,那麼這個時候,我們可以把購物車信息保存
到cookie中,這里會涉及到cookie的添加,修改操作;也即如果之前在cookie中不存對應的cookie,則就對cookie進行添加操作。
如果在cookie中存在對應的cookie,那麼,這時候,就要對cookie進行修改操作了(這里涉及到用戶對同一個商品進行多次添加購物車的情況)。
B.用戶登錄後的數據流:用戶在登錄後,系統首先做的第一件事就是去獲取對應的cookies,如果存在相關的購物車cookies,那麼就對該購物車
信息進行相應用戶User的持久化操作,要麼添加,要麼修改。(添加操作:該用戶所對應的購物車如果沒有相應的信息進行添加操作;修改操作:類似的,
如果存在對應用戶的購物車信息,就進行修改操作)。用戶登錄後,也可以進行購物車的添加操作,不過,這里不是添加到cookie中,而是直接持久化到
資料庫中。註:用戶登錄後的數據都是和資料庫打交道。
===========================================
以上就是我的見解 如果有什麼不懂可以問我 想學習的童鞋秒懂 供參考 滿意請採納
⑸ 怎樣用java web編寫網上書店,我就差個購物車,求大師指教,有源代碼最好
購物車這個和你登陸差不多啦,點擊加入購物車的時候傳商品的id,用戶的id,商品數量等信息,加入到資料庫里就行了
⑹ java web購物車
首先你應該對java有個基礎的了解,什麼是變數,什麼事關鍵字。我先給你每行都注釋下
//公共的類,類名為ShopingServlet 繼承父類HttpServlet
public class ShopingServlet extends HttpServlet {
實現父類方法doGet 意識就是通過get請求的就會進入這個方法,下面還有一個doPost方法就是通過post方式請求的會進入doPost,至於這兩個的區別:doGet安全性差,參數是在瀏覽器連接中直接顯示,然而doPost就是不會顯示的安全性要高,這也是最直觀的區別
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//通過request獲取session
HttpSession session=request.getSession();
//獲取參數為id的值
String id=request.getParameter("id");
//判斷id的值是否為null
if(id!=null)
{
//id不為空進入這裡面,在獲取參數為book的值,book的值為數組類型
Book[]book=(Book[])session.getAttribute("book");
在判斷book是否為null
if(book!=null)
{
//部位空進入,進行循環
for(int i=0;i<book.length;i++)
{
//判斷book數組中的第i個的BookId是否和之前的參數Id相同
if(book[i].getBookId().equals(id))
{
//相同,就把book數組中的第i個的id賦值為空
book[i].setid();
}
}
把當前book存入session中,變數名為book
session.setAttribute("book", book);
}
}
//跳轉到頁面/test4E/Shopping.jsp
response.sendRedirect("/test4E/Shopping.jsp");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//調用上面的doGet方法
doGet(request,response);
}
}
下面的代碼和這個是重復的,不知道為什麼你要發布兩遍,你可以對比一下
⑺ java web 做購物車的大概思路,和實現步奏是什麼
購物車管理模塊主要功能有如下幾個部分:(1)創建購物車 當客戶登錄後,系統會給客戶創建一個購物車放入伺服器的Session會話中。使客戶在整個會話中都擁有一個相同的購物車。這里主要運用了Http協議中的會話機制,將購物車保存在客戶的會話中,這樣在整個客戶游覽不同頁面商品的過程中,都會使用同一個購物車對象。 具體執行步驟:(1)從客戶的請求對象中獲取Session會話對象(2)從會話對象中獲取購物車對象(3)判斷是購物車對象是不是空的,如果是空是就創建一個 /* * 在監聽到session被創建之後,就立即向session中添加一個購物車Car; */ public void sessionCreated(HttpSessionEvent arg0) { HttpSession session = arg0.getSession(); Cart cart=new Cart(); session.setAttribute("cart", cart); } /* * 從session中獲得購物車 */ Cart cart = (Cart) session.getAttribute("cart"); if (cart == null) { cart = new Cart(); }(2)向購物車中添加一個商品項 客戶在查看網頁上的一個商品時,當向伺服器發送一個「添加到購物車」的請求時,會執行這個功能。功能執行過程:(1)從客戶請求對象中獲取商品的ID(2)調用業務層的方法根據商品ID去數據查詢商品的信息,返回商品對象(3)從商品對象中獲取商品名,商品價格,來構建一個商品項對象(4)從Session會話中獲取購物車對象(5)調用業務層的方法來根據購物車對象和商品項對象來執行添加操作(6)將些商品項對象放入到購物車中 部分實現代碼: /* * 從資料庫中把商品取到; */ ProctService proctService = (ProctService) ServiceFactory.getInstance().getService(Globals.PRODUCT_SERVICE); Integer id = Integer.parseInt(request.getParameter("proctid")); Proct proct = proctService.getProctById(id); /* * 在向購物車中添加商品的時候會判斷商品是否已經存在, * 已存在的就不讓在加入了; */ if (cart.isExist(id)) { message = "該商品已經存在!請<a onclick='javascript:history.go(-1)'>返回</a>!"; request.setAttribute("message", message); return mapping.findForward("error"); } else { /* * 向購物車添加一個商品; */ cart.addCart(proct); session.setAttribute("cart", cart); return mapping.findForward("addcartsuccess"); }
⑻ 各位java web大神,求幫忙看個超小的demo,實現一個簡單的購物車功能,出現了很讓人費解的問題,不看後悔
我運行了你的代碼獲取到的是同一個session啊,沒問題啊
⑼ session+cookies實現購物車功能,javaweb開發
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'shop2.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
Map<String,Integer> itm=(Map<String,Integer>)session.getAttribute("item");
if(itm==null){
itm=new HashMap<String,Integer>();
itm.put("電視", 1);
itm.put("蘋果", 0);
itm.put("香蕉", 1);
itm.put("衣服", 0);
}
String [] buy=request.getParameterValues("c");
for(String b:buy){
if(b.equals("電視")){
int num=itm.get("電視");
itm.put(b, num+1);
}
if(b.equals("蘋果")){
int num=itm.get(b);
itm.put(b, num+1);
}
if(b.equals("香蕉")){
int num=itm.get(b);
itm.put(b, num+1);
}
if(b.equals("衣服")){
int num=itm.get(b);
itm.put(b, num+1);
}
}
session.setAttribute("item", itm);
%>
你所購買的物品<br>
電視:<%=itm.get("電視") %>本<br>
蘋果:<%=itm.get("蘋果") %>個<br>
香蕉:<%=itm.get("香蕉") %>個<br>
衣服:<%=itm.get("衣服") %>件<br>
<p><a href="shop.jsp">再次購買</a></p>
</body>
</html>
下面是購買頁面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'shop.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
歡迎光臨本店! <br>
<form action="shop2.jsp" method="post">
<input name="c" type="checkbox" value="電視" />電視
<input name="c" type="checkbox" value="蘋果" />蘋果
<input name="c" type="checkbox" value="香蕉" />香蕉
<input name="c" type="checkbox" value="衣服" />衣服
<img alt="dddd" src="<%=request.getAttribute("path")%>">
<p> <%=request.getAttribute("yy")%></p>
<input name="" type="submit" value="確認購買" />
</form>
</body>
</html>
下面是使用cookie的
添加Cookie
Cookie uname1=new Cookie("lname",username);
uname1.setMaxAge(24*3600);
Cookie upwd1=new Cookie("lpwd",pwd);
upwd1.setMaxAge(24*3600);
response.addCookie(uname1);
response.addCookie(upwd1);
添加session
session.setAttribute("log_name", username);
以下代碼是對cookie和session的數據操作!
<%
String uname="";
String upwd="";
Cookie[] cookies=request.getCookies(); //一request獲范圍獲取一個
cookie實例
if(cookies!=null){
for(Cookie c: cookies){
if("lname".equals(c.getName())){ //判斷cookie裡面的名字是否等於這
個
uname=c.getValue(); //如果等於就獲取它的值
}
if("lpwd".equals(c.getName())){
upwd=c.getValue();
}
}
String sql2="select * from member where username='"+uname+"'";
ResultSet rs2=null;
rs2=DBHelper.executeQuery(sql2);
boolean is=true;
while(rs2.next()){
String pp=rs2.getString("upwd");
if(pp.equals(upwd)){
is=false;
}
}
if(session.getAttribute("log_name")!=null){ //判斷是否有slog_name這
個session
uname=(String)session.getAttribute("log_name");
is=false;
}
if(is){
response.sendRedirect("index1.jsp");
}
}
%>
<%
application.setAttribute("log", uname);
%>
⑽ java web 做購物車的大概思路,和實現步奏是什麼
購物車是網上購物平台中的一個重要模塊,模擬超市中的購物車功能,即用戶在結賬前挑選商品的過程。
看完圖就會明白,採納哦。