Session實現簡單購物車
主要用於對Session物件的使用,大致過程由建立到銷燬,即購物車的加入商品和清除購物車等一系列動作。Image類實現動態驗證碼。
(原始碼可以直接使用,注意路徑問題)
Image類實現驗證碼功能
package com.ayit.session; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Image extends HttpServlet { /** *使用response實現驗證碼 * -生成圖片 * -生成隨機的數字和字母 * -把數字和字母畫到圖片上 * -把圖片顯示到頁面上 */ Random r = new Random(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //生成圖片 BufferedImage image = new BufferedImage(200,50,BufferedImage.TYPE_3BYTE_BGR); //設定背景顏色 Graphics2D g2d = (Graphics2D) image.getGraphics(); g2d.setColor(Color.white); g2d.fillRect(0, 0, 200, 50); //建立一個StringBuffer儲存字串 StringBuffer sb = new StringBuffer(); //生成隨機數 String word="23456789abcdefghjkmnopqrstuvwxyz"; g2d.setColor(Color.red); int x =50,y=30; for (int i = 0; i < 4; i++) { //設定字型的樣式 Font font = randomFont(); g2d.setFont(font); //返回字串裡面字元的下標 int len = r.nextInt(word.length()); //根據位置得到具體的字元 char ch = word.charAt(len); sb.append(ch); //旋轉的效果rotate(弧度,x,y) //+-30度旋轉 int jiaodu = r.nextInt(60)-30; double h = jiaodu*Math.PI/180; g2d.rotate(h, x, y);//旋轉 g2d.setColor(randomColor()); //把生成的字元畫到圖片上 g2d.drawString(ch+"", x, y); //旋轉之後在轉回去 g2d.rotate(-h,x,y); x+=25; } // 把驗證碼放到session裡面 request.getSession().setAttribute("image1", sb.toString()); //增加三條幹擾線 int x1,x2,y1,y2; for(int i=1;i<4;i++) { x1 = r.nextInt(200); x2 = r.nextInt(200); y1 = r.nextInt(50); y2 = r.nextInt(50); g2d.setColor(randomColor()); //劃線 g2d.drawLine(x1,y1,x2,y2); } OutputImage(response, image); } private void OutputImage(HttpServletResponse response, BufferedImage image) throws IOException, FileNotFoundException { //把圖片顯示到頁面上 ImageIO.write(image,"jpg",response.getOutputStream()); // int mc = r.nextInt(800); // ImageIO.write(image,"jpg",new FileOutputStream("D:/"+mc+".jpg")); } private Font randomFont () { String[] fontNames = {"宋體", "黑體", "楷體","方正舒體","華文彩雲","華文琥珀"}; int index = r.nextInt(fontNames.length); String fontName = fontNames[index]; int style = r.nextInt(4); int size = r.nextInt(5) + 24; return new Font(fontName, style, size); } private Color randomColor () { int red = r.nextInt(150); int green = r.nextInt(150); int blue = r.nextInt(150); return new Color(red, green, blue); } /** * */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
login.jsp實現看不清換一張功能
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Login.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> </head> <body> <h1>登入頁面</h1> <h2>${msg12}</h2> <form action="/day10/Login" method="post"> Username:<input type="text" name="username"/><br/> Password:<input type="password" name="pwd"/><br/> image:<input type="text" name="image"/><br/> <img id ="img1" alt="code" src="/day10/Image"/><br/> <a href="javascript:void(0)" onclick="loadCode()">看不清,換一張</a> <input type="submit" value="登入"/> </form> </body> <script type="text/javascript"> function loadCode(){ //實現看不清換一張 var img1 = document.getElementById("img1"); //向src重新設定地址 img1.src = "/day10/Image?"+new Date().getTime(); } </script> </html>
Login類實現驗證碼判斷功能,學過資料庫以後,實現使用者名稱和密碼的驗證
package com.ayit.session; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Login extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 得到輸入的驗證碼 request.setCharacterEncoding("utf-8"); String imageText = request.getParameter("image"); // 得到圖片的驗證碼 String imageCode = (String) request.getSession().getAttribute("image1"); if (!imageText.equals(imageCode)) { // 設定一個值request request.setAttribute("msg12", "驗證碼錯誤"); // 轉發到登入頁面 request.getRequestDispatcher("/session/login.jsp").forward(request, response); return; } else { request.getRequestDispatcher("/session/product.jsp").forward( request, response); } } /** * */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
登入成功後來到product.jsp頁面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="com.ayit.utils.MyCookieUtils"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'product.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>
<img alt="1" src="/day10/img/1.jpg" />
<a href="/day10/SessionDemo1?id=1" />手電
</a>
<img alt="2" src="/day10/img/2.jpg" />
<a href="/day10/SessionDemo1?id=2" />手機
</a>
<img alt="3" src="/day10/img/3.jpg" />
<a href="/day10/SessionDemo1?id=3" />電視
</a>
<img alt="4" src="/day10/img/4.jpg" />
<a href="/day10/SessionDemo1?id=4" />冰箱
</a>
</body>
</html>
SessionDemo1類實現加入購物車功能,該類主要體現了Session物件的用法
package com.ayit.session;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SessionDemo1 extends HttpServlet {
/**
* 根據id得到商品名稱
* 1、判斷是否是第一次購物
* 2、如果是,建立購物車,把商品名稱和數量放到購物車
* 3、如果不是
* -判斷購物車是否存在相同的商品
* --存在,原來的商品數量+1,放到購物車
* --不存在,把名稱和數量加到購物車
*
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//根據id得到商品名稱
String id1 = request.getParameter("id");
int id = Integer.parseInt(id1);
String[] names = {"手電","手機","電視","冰箱"};
String name = names[id-1];
//判斷是否是第一次購物
Map<String,Integer> map = (Map<String,Integer>)request.getSession().getAttribute("cart");
if(map==null)
{
map = new HashMap<String, Integer>();
map.put(name, 1);
}
else
{
//不是第一次,判斷購物車是否有相同名稱的商品
if(map.containsKey(name))
{
int num = map.get(name);
map.put(name, num+1);
}else
{
//直接放名稱和數量
map.put(name, 1);
}
}
//把購物車放到session裡面
request.getSession().setAttribute("cart", map);
//輸出兩個超連結,繼續購物和去結算
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("<a href='/day10/session/product.jsp'>繼續購物</a><br/>");
response.getWriter().write("<a href='/day10/session/cart.jsp'>去結算</a>");
}
/**
*
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
cart.jsp結算頁面的實現
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'cart.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>
<h1>結算頁面</h1>
<a href="/day10/clear">清空購物車</a>
<%
Map<String,Integer> map =( Map<String,Integer>) request.getSession().getAttribute("cart");
if(map==null)
{
%>
<h2>沒有任何購物資訊</h2>
<%
}else
{
//有購物資訊,顯示名稱和數量
Set<String> keys = map.keySet();
for(String key : keys)
{
int num = map.get(key);
%>
<h3>
名稱:<%=key%>
, 數量:<%=num %></h3>
<%
}
}
%>
</body>
</html>
clear類最後實現的是清空購物車,主要用於銷燬Session物件
package com.ayit.session;
import java.io.IOException;
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 clear extends HttpServlet {
/**
*清空購物車
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
//銷燬session
session.invalidate();
response.sendRedirect("/day10/session/cart.jsp");
}
/**
*
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
相關推薦
Session實現簡單購物車
主要用於對Session物件的使用,大致過程由建立到銷燬,即購物車的加入商品和清除購物車等一系列動作。Image類實現動態驗證碼。 (原始碼可以直接使用,注意路徑問題) Image類實現驗證碼功能 package com.ayit.session; import
SpringMVC使用session實現簡單登錄
mvc com 實現 技術 csdn 以及 自己 -c tex 1.首先為了能直觀地在jsp頁面體現session的內容,我使用了jstl表達式,首先在pom.xml中引入jstl的依賴 <!-- jstl所需要的依賴 --> <dependency
vue實現簡單購物車
效果圖如下 比較醜哈哈。。 程式碼如下 <template> <div class="user"> <div><input type="checkbox" v-model="checkAll" @click="ch
用List實現簡單購物車類
import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpSession; /** * 購物車 * 現實中是用籃子或車來裝商品的 * 好比記憶體中的List
利用Html+JavaScript實現簡單購物車
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Shopping Car</title> <scr
一起學react native實現簡單購物車
前言 實現比較簡單的購物車例項http://www.jianshu.com/p/c581c48a601f 這裡寫圖片描述 程式碼 程式碼結構 這裡寫圖片描述 紅色部分儲存了listitem的資料跟檢視 黃色部分是對於其的引用 主體實現部分 這裡
一起學react native(4) Mobx實現簡單購物車
前言 知道mobx這個東西 很久了 大概也就1個多月了吧 但是從來沒有下筆寫過程式碼 這兩天嘗試了一下 大概去熟悉了一下Mobx的相關命令 從而實現了 這個比較簡單的購物車例項 如果有寫的不對的地方 可以直接聯絡我的QQ:469373256 專案
python實現簡單購物車
#Encoding = UTF-8 ''' @author:xianyt @vertion:python3 @date:20180723 ''' ''' 21、 模擬實現選購商品 1) 列出所有商品的編號、名稱和價格 2) 選擇多個商品 3)
實現簡單購物車功能
說明:選擇需要購買的物品,計算總價。 <!DOCTYPE html> <html> <head></body> <link href="sohud
Python Django實現簡單購物車功能
Django版本:1.11 作業系統:Windows Python:3.5 歡迎加入學習交流QQ群:657341423 這裡以淘寶為例 這是一個商品的詳情,這裡有2個按鈕功能,一個是立即購買,一個加入購物車,兩者都是生成一個訂單,但兩者實現的方法是不相同的
使用session實現新增購物車功能
session: 伺服器端會話技術. 當我們第一次訪問的伺服器的時候,伺服器獲取id, 能獲取id 要拿著這個id去伺服器中查詢有無此session 若查詢到了:直接拿過來時候,將資料儲存,需要將當
SpringMVC使用session實現簡單登入
1.首先為了能直觀地在jsp頁面體現session的內容,我使用了jstl表示式,首先在pom.xml中引入jstl的依賴 <!-- jstl所需要的依賴 --> <dependency> <groupId>jstl<
Asp.net基於session實現購物車的方法
lai 程序 clas contain ext info border mode man 本文實例講述了asp.net基於session實現購物車的方法。分享給大家供大家參考,具體如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1
session應用之購物車的實現
har head 一維數組 empty img con 維數 htm http 現在網頁中的購物車功能的實現都是依賴的數據庫,相比之下,以前是依賴服務器端的session來儲存。今天來講一下session實現購物車的邏輯。 用一張水果信息表為例子來演示。 1.首先我們寫出來
python實現簡單的循環購物車小功能
iphone6s opp lose pre 選擇 小功能 alt else ret python實現簡單的循環購物車小功能 # -*- coding: utf-8 -*- __author__ = ‘hujianli‘ shopping = [ ("iphon
C#實現簡單獲取及設置Session類
static 相互 如何 相互轉換 per body share line window 本文實例講述了C#實現簡單獲取及設置Session類。分享給大家供大家參考。具體分析如下: 這是一個簡單的C#獲取Session、設置Session類文件,本類主要實現大家最常用的兩
vue實現簡單的購物車功能
src put turn tps html ted lis app content <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" />
Java 2種方法實現簡單的session超時登出
1、使用攔截器 使用者每次和後臺互動,如果使用者長時間未操作,則需要檢測使用者的登入狀態,這樣的場景已經是再正常不過了。 傳統的做法可以在每個controller裡先判斷user的狀態,然後再執行業務操作,但這樣比較程式
session 案例實現簡單的購物
使用session完成簡單的購物功能。 大型的上午網站一般使用cookie來實現,目的是減少伺服器的壓力。 package cn.itcast.shoping; import java.io.IOException; import java.io.PrintWriter; import j
spring-boot+Redis實現簡單的分散式叢集session共享
寫在前面: 首先宣告,筆者是一名Java程式設計屆的小學生。前面一直在幾家公司裡面做開發,其實都是一些傳統的專案,對於像分散式啦,叢集啦一些大型的專案接觸的很少,所以一直沒有自己整合和實現過。由於最近幾天專案不是很忙,自己又有點時間