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

[经验分享] 使用MongoDB和JSP实现一个简单的购物车系统

[复制链接]

尚未签到

发表于 2017-12-16 13:42:47 | 显示全部楼层 |阅读模式
package com.liuzhen.shop;  

  
import java.util.Map;
  
import java.util.Vector;
  

  
import com.mongodb.*;
  


  
public>  static int span=5;    //设定JSP页面表单单页显示物品信息行数为5行
  //返回数据库中全部货物编号sid
  public static String[] getGood_sid(){
  String[] good_sid_temporary = new String[100];    //定义一个长度为100的暂时存放货物编号的一维数组   
  // 连接到 mongodb 服务
  MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  //此处采用无用户名和密码验证方式登陆
  @SuppressWarnings("deprecation")
  DB db = mongoClient.getDB( "library" );  //连接到数据库library
  DBCollection coll = db.getCollection("good");  //获取library数据库中集合good
  System.out.println("Collection userInfo selected successfully");
  DBCursor cursor = coll.find();  //查询集合good中文档信息
  int i=0;
  while (cursor.hasNext()) {     //检索集合good中所有文档信息
  DBObject show = cursor.next();
  @SuppressWarnings("rawtypes")
  Map show1 = show.toMap();  //将检索结果show(Bson类型)转换为Map类型
  String tosid = (String)show1.get("sid");  //提取Map中字段名为sid的属性值                     
  good_sid_temporary = tosid;         //将数据库中查询的货物编号存储入数组good_sid                              
  i++;
  }
  String[] good_sid = new String;   //根据查询数据遍历集合中文档信息i值来确定最终返回数组长度
  for(int j=0;j<i;j++){
  good_sid[j] = good_sid_temporary[j];
  }
  return good_sid;
  }
  //返回数据库中全部货物名称sname
  public static String[] getGood_sname(){
  String[] good_sname_temporary = new String[100];  //定义一个长度为100的暂时存放货物名称的一维数组
  // 连接到 mongodb 服务
  MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  //此处采用无用户名和密码验证方式登陆
  @SuppressWarnings("deprecation")
  DB db = mongoClient.getDB( "library" );  //连接到数据库library
  DBCollection coll = db.getCollection("good");  //获取library数据库中集合good
  System.out.println("Collection userInfo selected successfully");
  DBCursor cursor = coll.find();  //查询集合good中文档信息
  int i=0;
  while (cursor.hasNext()) {     //检索集合good中所有文档信息
  DBObject show = cursor.next();               
  @SuppressWarnings("rawtypes")
  Map show1 = show.toMap();  //将检索结果show(Bson类型)转换为Map类型         
  String tosname = (String)show1.get("sname"); //提取Map中字段名为sname的属性值                           
  good_sname_temporary = tosname;     //将数据库中查询的货物名称存储入数组good_sname                        
  i++;
  }
  String[] good_sname = new String;   //根据查询数据遍历集合中文档信息i值来确定最终返回数组长度
  for(int j=0;j<i;j++){
  good_sname[j] = good_sname_temporary[j];
  }
  return good_sname;
  }
  //返回数据库中全部货物价格sprice
  public static String[] getGood_sprice(){
  String[] good_sprice_temporary = new String[100]; //定义一个长度为100的暂时存放货物价格的一维数组
  // 连接到 mongodb 服务
  MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  //此处采用无用户名和密码验证方式登陆
  @SuppressWarnings("deprecation")
  DB db = mongoClient.getDB( "library" );  //连接到数据库library
  DBCollection coll = db.getCollection("good");  //获取library数据库中集合good
  System.out.println("Collection userInfo selected successfully");
  DBCursor cursor = coll.find();  //查询集合good中文档信息
  int i=0;
  while (cursor.hasNext()) {     //检索集合good中所有文档信息
  DBObject show = cursor.next();               
  @SuppressWarnings("rawtypes")
  Map show1 = show.toMap();  //将检索结果show(Bson类型)转换为Map类型         
  String tosprice = (String)show1.get("sprice"); //提取Map中字段名为sname的属性值                    
  good_sprice_temporary = tosprice;   //将数组库中查询的货物价格存储入数组good_sprice                     
  i++;
  }
  String[] good_sprice = new String;   //根据查询数据遍历集合中文档信息i值来确定最终返回数组长度
  for(int j=0;j<i;j++){
  good_sprice[j] = good_sprice_temporary[j];
  }
  return good_sprice;
  }
  

  //根据分页当前page数,从数据库中获取当前单个页面货物种类的具体信息,并以二维数据返回具体信息
  public static String[][] getGoodList(int page)
  {
  String[][] result=null;
  Vector<String[]> v=new Vector<String[]>();  //定义一个Vector集合,一个记录存放一个货物的具体信息
  String[] good_sid = getGood_sid();        //获取货物编号
  String[] good_sname = getGood_sname();    //获取货物名称
  String[] good_sprice = getGood_sprice();  //获取货物价格      
  int len = good_sid.length;
  for(int i=0;i<span;i++){
  int t = (page-1)*span+i;   //获取货物编号
  if(t >= len){
  //如果当前货物编号大于数据库中已有编号,则跳出循环
  break;
  }
  String[] good_temp=new String[3];   //定义一个长度为3的数组,用于存放一个物品的编号、名称、价格信息
  good_temp[0]=good_sid[t];
  good_temp[1]=good_sname[t];
  good_temp[2]=good_sprice[t];
  v.add(good_temp);      //将1个物品的信息存入Vector集合中
  }

  int>  result=new String[size][];   //根据Vercotr大小,给result指定行数大小
  for(int j=0;j<size;j++)
  {
  //返回Vector中一个值(其中即表示一个物品的sid,名称和价格),并赋值给result[j],即result二维数组一行表示一个物品具体信息
  result[j]=(String[])v.elementAt(j);
  }
  return result;
  }
  //根据货物sid,返回其价格信息
  public static double getPrice(String sid)
  {
  double price = 0;  //定义返回物品的价格
  String[] good_sprice = getGood_sprice();  //获取全部物品的价格
  int i =  Integer.parseInt(sid);        //将String类型的物品编号sid转换为int型
  String sprice = good_sprice;        //根据sid获取物品的价格
  price = Double.parseDouble(sprice);    //将String类型的价格信息转换为double型,并赋值给price
  return price;
  }
  //根据货物sid,返回货物的名称和价格,一一个长度为2的数组返回
  public static String[] getDetail(String sid)
  {
  String[] good_detail=null;
  good_detail = new String[2];
  String[] good_sname = getGood_sname();     //获取全部物品名称
  String[] good_sprice = getGood_sprice();   //获取全部物品价格
  int i =  Integer.parseInt(sid);        //将String类型的物品编号sid转换为int型
  good_detail[0] = good_sname;        //根据物品编号sid,得到名称存入数组good_detail中
  good_detail[1] = good_sprice;       //根据物品编号sid,得到物品价格存入数组good_detail中        
  return good_detail;
  }
  //通过查询数据库中货物种类数目,以5行为一页,返回现有货物页数
  public static int getTotalPage()
  {
  int page = 0;
  String[] good_sid = getGood_sid();
  int len = good_sid.length;
  page = len/span+((len%span==0)?0:1);   //以span(span值为5)行为一页,计算货物具有的页数page
  return page;            
  }
  //返回一个二维数组的行数大小
  public static int getlength(String[][] a){
  return a.length;
  }
  public static void main(String args[]){
  
//        String[] good_sid = getGood_sid();    //定义一个存放货物编号的一维数组
  
//        String[] good_sname = getGood_sname();  //定义一个存放货物名称的一维数组
  
//        String[] good_sprice = getGood_sprice(); //定义一个存放货物价格的一维数组
  
//                                      
  
//        for(int j=0;j<10;j++){
  
//            System.out.println("货物sid:"+good_sid[j]);
  
//            System.out.println("货物sname:"+good_sname[j]);
  
//            System.out.println("货物是price:"+good_sprice[j]);
  
//            System.out.println("**************************");
  
//            System.out.println();
  
//        }
  System.out.println("分页数目(测试):"+MongodbBean.getTotalPage());
  String[][] ss=MongodbBean.getGoodList(MongodbBean.getTotalPage());
  for(int i=0;i<ss.length;i++)
  {
  System.out.println(ss[0]);
  System.out.println(ss[1]);
  System.out.println(ss[2]);
  System.out.println("***********");
  }
  int n = ss.length;
  System.out.println("数组长度为:"+n);
  }
  

  
}

运维网声明 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-424706-1-1.html 上篇帖子: MongoDB:分片(简介 & 自动分片 & 片键) 下篇帖子: 在Spring MVC框架下利用RESTful API和MongoDB实现用户留言与邮件反馈
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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