angela 发表于 2017-12-16 13:42:47

使用MongoDB和JSP实现一个简单的购物车系统

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的暂时存放货物编号的一维数组   
  // 连接到 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 = good_sid_temporary;
  }
  return good_sid;
  }
  //返回数据库中全部货物名称sname
  public static String[] getGood_sname(){
  String[] good_sname_temporary = new String;//定义一个长度为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 = good_sname_temporary;
  }
  return good_sname;
  }
  //返回数据库中全部货物价格sprice
  public static String[] getGood_sprice(){
  String[] good_sprice_temporary = new String; //定义一个长度为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 = good_sprice_temporary;
  }
  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的数组,用于存放一个物品的编号、名称、价格信息
  good_temp=good_sid;
  good_temp=good_sname;
  good_temp=good_sprice;
  v.add(good_temp);      //将1个物品的信息存入Vector集合中
  }

  int>  result=new String[];   //根据Vercotr大小,给result指定行数大小
  for(int j=0;j<size;j++)
  {
  //返回Vector中一个值(其中即表示一个物品的sid,名称和价格),并赋值给result,即result二维数组一行表示一个物品具体信息
  result=(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;
  String[] good_sname = getGood_sname();   //获取全部物品名称
  String[] good_sprice = getGood_sprice();   //获取全部物品价格
  int i =Integer.parseInt(sid);      //将String类型的物品编号sid转换为int型
  good_detail = good_sname;      //根据物品编号sid,得到名称存入数组good_detail中
  good_detail = 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);
  
//            System.out.println("货物sname:"+good_sname);
  
//            System.out.println("货物是price:"+good_sprice);
  
//            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);
  System.out.println(ss);
  System.out.println(ss);
  System.out.println("***********");
  }
  int n = ss.length;
  System.out.println("数组长度为:"+n);
  }
  

  
}
页: [1]
查看完整版本: 使用MongoDB和JSP实现一个简单的购物车系统