cfsky 发表于 2018-12-6 13:16:57

EclipseEE+Tomcat8+MySQL+花生壳 实现简单的购物网站(外网可访问)

/*集大成者,美若天成*/
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 ";
}
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}


   
      
      用户名 :
          密&nbsp&nbsp&nbsp&nbsp码:
         &nbsp &nbsp    &nbsp &nbsp   
          返回                  
   








用户登录


   
body{   
      background-image: url(background.jpg);   
      background-size :100%;
}



p.serif{font-family:Arial,Verdana,Sans-serif}


   
      
      用户名 :
          密&nbsp&nbsp&nbsp&nbsp码:
         &nbsp &nbsp    &nbsp &nbsp   
          返回                  
   









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%;
}   







选择送货地址:

福建

&nbsp &nbsp

厦门
泉州
漳州

&nbsp &nbsp
具体地址 :
&nbsp &nbsp









我的购物车


   
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;
}




   




      
         
            商品编号   
            商品名称
            商品品牌
            商品价格
            购买数量
            单品总价
            退回商品
            修改数量
      
      
   
      
   
         
      
   

http://s3.运维网.com/wyfs02/M00/6F/FA/wKioL1WvF9qgaNN5AAKiloHS950621.jpg
  这是网站采用的背景,个人觉得还不错。
  这样代码部分就完工了。虽然还是缺少某些功能,以及有些处理不恰当,但总体还是可以的。接下来我们往数据库添加内容。注意网页字符集和数据库字符集,可能会出现乱码。
http://s3.运维网.com/wyfs02/M00/6F/FA/wKioL1WvGy2wUU-3AAGCf3qvQ-g268.jpg
  接着我们下载花生壳并安装好,申请一个免费域名(要花1元钱实名认证来着),然后将你的ip映射到外网。
http://s3.运维网.com/wyfs02/M01/6F/FD/wKiom1WvGwTwZhU8AAEsc8mdrb4473.jpg
http://s3.运维网.com/wyfs02/M02/6F/FA/wKioL1WvHOiS4aweAAEgRVYp3_0682.jpg
  由于我的tomcat的8080端口被占用了,所以改成了8088端口。那么怎么改端口号还有需要改什么,网上教程有很多,我这里简单陈述一下。进入tomcat文件夹,打开conf文件夹里的server.xml,搜索一下第一个8080,将其改成8088或其他,如果没被占用就不必改了。除此之外,搜索localhost并替换成xxxx.xicp.net。这样就可以了。
  最后我们看一下成果。
http://s3.运维网.com/wyfs02/M00/6F/FD/wKiom1WvHa2DDFVIAAKoOlGhPDI292.jpg
http://s3.运维网.com/wyfs02/M01/6F/FA/wKioL1WvH5KA3IJDAAIxTBruOdQ475.jpg
http://s3.运维网.com/wyfs02/M01/6F/FD/wKiom1WvHbDhQESjAAMmdoNuGZY826.jpg
  




页: [1]
查看完整版本: EclipseEE+Tomcat8+MySQL+花生壳 实现简单的购物网站(外网可访问)