|
/*集大成者,美若天成*/
package cart;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Map;
import java.util.TreeMap;
import util.JDBCUtil;
/* 购物车类 */
public class Cart {
/* 属性:商品,采用Map;Key为商品编号,Value为商品 */
private Map product =new TreeMap();
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
PreparedStatement prstat = null;
/* 根据商品编号向购物车添加商品 */
public void addProduct(int id) throws SQLException{
conn = JDBCUtil.getConnection(); /* 与数据库建立连接 */
stat = conn.createStatement();
String sql = "select * from product";
rs = stat.executeQuery(sql);
/* 从ResultSet获取商品信息,加入Map中 */
while(rs.next()){
Product teppro =new Product(
rs.getInt("idproduct"),
rs.getString("name"),
rs.getString("brand"),
rs.getInt("price")
);
product.put(teppro.getId(), teppro);
}
/* foreach遍历Map */
for(Map.Entry pro : product.entrySet()) {
int pid = pro.getKey();
if(pid == id){ /* 找到要加入的商品id */
sql = "select * from cart where idproduct = "+pid;
System.out.println(sql);
rs = stat.executeQuery(sql); /* */
/* 查询购物中是否已存在该商品 */
if(rs.next()){
int amo = 1 + rs.getInt("amount") ; /* 商品数量加一 */
sql = "update cart set amount = ? where idproduct = ?";
System.out.println(sql);
prstat = conn.prepareStatement(sql);
prstat.setInt(1, amo);
prstat.setInt(2, pid);
prstat.execute();
/* 设置单品总价 */
sql = "update cart set total = ? where idproduct = ?";
prstat = conn.prepareStatement(sql);
prstat.setInt(1, amo*rs.getInt("price"));
prstat.setInt(2, pid);
prstat.execute();
}else { /* 当购物车中不存在该商品,添加该商品 */
Product p = pro.getValue();System.out.println(p.toString());
sql = "insert into cart(idproduct,name,brand,price,amount,total) "
+ "values(?,?,?,?,?,?)";
prstat = conn.prepareStatement(sql);
prstat.setInt(1, p.getId());
prstat.setString(2, p.getName());
prstat.setString(3, p.getBrand());
int pr = p.getPrice();
prstat.setInt(4,pr);
prstat.setInt(5, 1);/* 商品个数为1 */
prstat.setInt(6,pr);
prstat.execute();
}
}
}
JDBCUtil.closeConnection(conn);
}
/* 清除购物车所有商品 */
public void clearCart() throws SQLException{
conn = JDBCUtil.getConnection();
stat = conn.createStatement();
String sql = "select * from cart";
rs = stat.executeQuery(sql);
while(rs.next()){
Product teppro =new Product(
rs.getInt("idproduct"),
rs.getString("name"),
rs.getString("brand"),
rs.getInt("price")
);
product.put(teppro.getId(), teppro);
}
for(Map.Entry pro : product.entrySet()) {
int pid = pro.getKey();
sql = "delete from cart where idproduct = ? ";
prstat = conn.prepareStatement(sql);
prstat.setInt(1, pid);
prstat.execute();
}
JDBCUtil.closeConnection(conn);
}
/* 清除购物车单一商品 */
public void clearProduct(int id) throws SQLException{
conn = JDBCUtil.getConnection();
stat = conn.createStatement();
String sql = "select * from cart";
rs = stat.executeQuery(sql);
while(rs.next()){
Product teppro =new Product(
rs.getInt("idproduct"),
rs.getString("name"),
rs.getString("brand"),
rs.getInt("price")
);
product.put(teppro.getId(), teppro);
}
for(Map.Entry pro : product.entrySet()) {
int pid = pro.getKey();
if(id==pid){
sql = "delete from cart where idproduct = ? ";
prstat = conn.prepareStatement(sql);
prstat.setInt(1, pid);
prstat.execute();
}
}
JDBCUtil.closeConnection(conn);
}
/*修改单品数量*/
public void changeAmount(int idp ,int amon) throws SQLException{
conn = JDBCUtil.getConnection();
stat = conn.createStatement();
String sql = "select * from cart";
rs = stat.executeQuery(sql);
while(rs.next()){
Product teppro =new Product(
rs.getInt("idproduct"),
rs.getString("name"),
rs.getString("brand"),
rs.getInt("price")
);
product.put(teppro.getId(), teppro);
}
for(Map.Entry pro : product.entrySet()) {
int pid = pro.getKey();System.out.println(pid);
if(pid==idp){
sql = "update cart set amount = ? where idproduct = ? ";
prstat = conn.prepareStatement(sql);
prstat.setInt(1, amon);
prstat.setInt(2 , idp);
prstat.execute();
}
}
JDBCUtil.closeConnection(conn);
}
}package cart;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import util.JDBCUtil;
/* 用户类 */
public class User {
private String username;
private String password;
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
/* 验证登录信息 */
public boolean login() throws SQLException{
Connection conn = JDBCUtil.getConnection();
Statement stat = conn.createStatement();
String sql = "select * from user";
ResultSet rs = stat.executeQuery(sql);
while(rs.next()){
User us = new User(rs.getString("username"),rs.getString("psd"));us.toString();
if(us.equals(this)){
return true;
}
}return false;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + "]";
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((password == null) ? 0 : password.hashCode());
result = prime * result + ((username == null) ? 0 : username.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (password == null) {
if (other.password != null)
return false;
} else if (!password.equals(other.password))
return false;
if (username == null) {
if (other.username != null)
return false;
} else if (!username.equals(other.username))
return false;
return true;
}
}package cart;
/* 商品类 */
public class Product {
private int id;/* 商品编号 */
private String name;/*商品名称*/
private String brand;/*商品品牌*/
private int price;/*商品价格*/
/* 构造函数 */
public Product(int id, String name, String brand, int price) {
super();
this.id = id;
this.name = name;
this.brand = brand;
this.price = price;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
@Override
public String toString() {
return "Product [id=" + id + ", name=" + name + ", brand=" + brand
+ ", price=" + price + "]";
}
}package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCUtil {
private static String driverName = "com.mysql.jdbc.Driver";
private static String URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=GBK";
private static String userName = "root";//根据自己数据库
private static String password = "12345";
/* 注册驱动 */
public static void registerDriver() {
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("找不到驱动");
}
}
/* 连接数据库 */
public static Connection getConnection() throws SQLException {
registerDriver();
Connection conn = null;
System.out.println("正在连接数据库...");
conn = DriverManager.getConnection(URL, userName, password);
System.out.println("数据库已连接!");
return conn;
}
/* 关闭连接 */
public static void closeConnection(Connection conn) {
System.out.println("正在释放所有资源...");
try {
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/*
* 释放所有资源
*/
public static void realeaseAll(Statement st,Connection conn){
if (st!=null){
try {
st.close();
st = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
closeConnection(conn);
}
}
商品信息
body{
background-image: url(background.jpg);
background-size :100%;
}
#product
{
font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
width:70%;
border-collapse:collapse;
}
#product td, #product th
{
font-size:1em;
border:1px solid #98bf21;
padding:3px 7px 2px 7px;
}
#product th
{
font-size:1.1em;
text-align:left;
padding-top:5px;
padding-bottom:4px;
background-color:#A7C942;
color:#ffffff;
}
#product tr.blt td
{
color:#000000;
background-color:#FFFFFF;
}
#product tr.alt td
{
color:#000000;
background-color:#EAF2D3;
}
商品编号
商品名称
商品品牌
商品价格
点击购买
用户登录
body{
background-image: url(background.jpg);
background-size :100%;
}
p.serif{font-family:Arial,Verdana,Sans-serif}
用户名 :
密    码:
       
返回
用户登录
body{
background-image: url(background.jpg);
background-size :100%;
}
p.serif{font-family:Arial,Verdana,Sans-serif}
用户名 :
密    码:
       
返回
operating
body{
background-image: url(background.jpg);
background-size :100%;
}
function RepNumber(obj) {
var reg = /^[\d]+$/g;
if (!reg.test(obj.value)) {
var txt = obj.value;
txt.replace(/[^0-9]+/, function (char, index, val) {//匹配第一次非数字字符
obj.value = val.replace(/\D/g, "");//将非数字字符替换成""
var rtextRange = null;
if (obj.setSelectionRange) {
obj.setSelectionRange(index, index);
} else {//支持ie
rtextRange = obj.createTextRange();
rtextRange.moveStart('character', index);
rtextRange.collapse(true);
rtextRange.select();
}
})
}
}
支付页面
body{
background-image: url(background.jpg);
background-size :100%;
}
选择送货地址:
福建
   
厦门
泉州
漳州
   
具体地址 :
   
我的购物车
body{
background-image: url(background.jpg);
background-size :100%;
}
#product
{
font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
width:70%;
border-collapse:collapse;
}
#product td, #product th
{
font-size:1em;
border:1px solid #98bf21;
padding:3px 7px 2px 7px;
}
#product th
{
font-size:1.1em;
text-align:left;
padding-top:5px;
padding-bottom:4px;
background-color:#A7C942;
color:#ffffff;
}
#product tr.blt td
{
color:#000000;
background-color:#FFFFFF;
}
#product tr.alt td
{
color:#000000;
background-color:#EAF2D3;
}
商品编号
商品名称
商品品牌
商品价格
购买数量
单品总价
退回商品
修改数量
这是网站采用的背景,个人觉得还不错。
这样代码部分就完工了。虽然还是缺少某些功能,以及有些处理不恰当,但总体还是可以的。接下来我们往数据库添加内容。注意网页字符集和数据库字符集,可能会出现乱码。
接着我们下载花生壳并安装好,申请一个免费域名(要花1元钱实名认证来着),然后将你的ip映射到外网。
由于我的tomcat的8080端口被占用了,所以改成了8088端口。那么怎么改端口号还有需要改什么,网上教程有很多,我这里简单陈述一下。进入tomcat文件夹,打开conf文件夹里的server.xml,搜索一下第一个8080,将其改成8088或其他,如果没被占用就不必改了。除此之外,搜索localhost并替换成xxxx.xicp.net。这样就可以了。
最后我们看一下成果。
|
|