设为首页 收藏本站
查看: 2552|回复: 0

[经验分享] EclipseEE+Tomcat8+MySQL+花生壳 实现简单的购物网站(外网可访问)

[复制链接]

尚未签到

发表于 2018-12-6 13:16:57 | 显示全部楼层 |阅读模式
/*集大成者,美若天成*/
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}


   
        
        用户名 :
          密&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;
  }




   


  

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


  这是网站采用的背景,个人觉得还不错。
  这样代码部分就完工了。虽然还是缺少某些功能,以及有些处理不恰当,但总体还是可以的。接下来我们往数据库添加内容。注意网页字符集和数据库字符集,可能会出现乱码。

  接着我们下载花生壳并安装好,申请一个免费域名(要花1元钱实名认证来着),然后将你的ip映射到外网。


  由于我的tomcat的8080端口被占用了,所以改成了8088端口。那么怎么改端口号还有需要改什么,网上教程有很多,我这里简单陈述一下。进入tomcat文件夹,打开conf文件夹里的server.xml,搜索一下第一个8080,将其改成8088或其他,如果没被占用就不必改了。除此之外,搜索localhost并替换成xxxx.xicp.net。这样就可以了。
  最后我们看一下成果。



  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-644020-1-1.html 上篇帖子: tomcat登录后出现XDB输入用户名密码问题 下篇帖子: 一步一步搭建apache+tomcat 负载均衡集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表