运行平台:jsp 软件评级:
文件大小:2k 软件语言:简体中文
软件授权:免费版 演示地址:官方演示地址
下载次数:1 软件类别:电子商务
下载地址:下载地址一

软件简介:

  以下介绍如何创建一个在线交易CD的商店。
  在线商店系统共包括如下6个文件:
  eshop.jsp——主页面。
  Cart.jsp——显示购物车的页面。
  Checkout.jsp——结账程序。
  ShoppingServlet.java——总程序文件,电子商店的核心。
  CD.jsp——分解Vector类里面的数据Bean。
  error.html——错误信息显示文件。


eshop.jsp的具体代码如下:
    <%@ page session="true"%>
    <%@ page contentType="text/html;charset=GBK"%>
    <html>
    <head>
    <title>Music</title>
    </head>
    <body bgcolor=" ||=33CCFF">
    <%
    //创建一个session对象,并进行赋值,说明该用户已经进入主界面了。
    session.setAttribute("login","true");
    %>
    <center>
    <!--插入form标识,使用servlet/ShoppingServlet处理商品的增、删操作-->
    <form name="shoppingForm"

       <option>Dance the Devil Away | Outback | Australia | $14.95</option>
    <option>Record of Changes | Samulnori | Korea | $12.95</option>
    <option>Djelika | Tounami Diabate | Mali | $14,95</option>
    <option>Rapture | Nusrat Fateh Ali Khan | Pakistan | $12.95</option>
    <option>Cesaria Evora | Cesaria Evora | Cape Verde | $16.95</option>
    <option>Ibuki | Kodo | Japan | $13.95</option>
</select>
<b>Quantity:</b><input type="text" name="qty" size="3" value=1>
<input type="hidden" name="action" value="ADD">
<input type="submit" name="Submit" value="Add to cart">
</form>
</center>
<p>
<!--动态插入Cart.jsp,用flush="true"指示每次购买完商品后,都进行更新-->
<jsp:include page="Cart.jsp" flush="true"/>
    </body>
    </html>
ShoppingServlet.java的具体代码如下:
    /*引入java.util.*包,该类中包括Vector类,Vector类可以方便的插入对象和删除对象,
    Vector类的对象是用数字进行标识的。购物车的商品便是使用Vector管理,存种类和
    存数量*/
    import java.util.*;
import java.io.*;
//该类包有RequestDispatcher()方法,可以利用该方法在Servlet中处理JSP文件
import javax.servlet.*;
//主要使用HttpServletRequest , HttpServletResponse 两个类
import javax.servlet.http.*;
//该类用于存放CD的各种信息
import shopping.CD;
//声明ShoppingServlet 类,是HttpServlet的扩展类
public class ShoppingServlet extends HttpServlet
{
     //类初始化
          public void init(ServletConfig conf) throws ServletException
     {
               super.init(conf);
     }
     //创建由form提交的post指令
    public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException,   IOException
    {
         //创建一个Session类
         HttpSession session = req.getSession(false);
         //若session中的变量为空,则网页转向
         if  (session==null)
         {
              //some changes
                   res.sendRedirect("error.html");
         }
//试图从session中获取shopping.shoppingcart变量,并将该变量赋给Vector类
Vector buylist=(Vector)session.getValue("shopping.shoppingcart");
//获得隐藏变量action, 不同的action值将进行不同的操作
String action = req.getParameter("action");
//如果action不是CHECKOUT,将执行下面的操作
if  (!action.equals("CHECKOUT"))
{
           //如果action是DELETE,将执行删除操作
           if (action.equals("DELETE"))
           {
String del = req.getParameter("delindex");
int d= (new Integer(del)).intValue();
//具体应用removeElementAt()方法删除
buylist.removeElementAt(d);
if (buylist==null)
{PrintWriter out = res.getWriter();
      res.setContentType("text/html");
      out.println("<H1>HELLO FROM ASE</H1>" + d);}
  String url="/EShop.jsp";
  ServletContext sc = getServletContext();
  RequestDispatcher rd=sc.getRequestDispatcher(url);
  rd.forward(req,res);
}
//增加操作
else if (action.equals("ADD"))
{
//值用于判断新选购商品的种类是否在购物车中
  boolean match=false;
//创建一个CD类,该类在CD.java中创建,该CD主要将eshop
//传过来的商品分解
CD aCD = getCD(req);
//判断购物车是否有商品
  if  (buylist==null)
{
//添加第一个cd到购物车,新建一个类,并添加各种信息
    buylist = new Vector(); //第一个订单
    buylist.addElement(aCD);
  }
      else//购物车存在商品则执行下面
    { // 不是第一次购买
          for (int i=0; i<buylist.size(); i++)
          {
            CD cd = (CD) buylist.elementAt(i);
    //将从购物车中取得的商品名称与新增加的商品名称对比
    if (cd.getAlbum().equals(aCD.getAlbum()))
    {
    //将新增加的商品数量加上原来商品的数量
    cd.setQuantity(cd.getQuantity()+aCD.getQuantity());
//使用setElementAt()方法更新Vector类中i位置的CD商品数量值
    buylist.setElementAt(cd, i);
    //表明两个字符相等
    match = true;
    } // for循环结束
    //表明新增加的商品不在购物车中,程序将增加这个商品
    if (!match)
    buylist.addElement(aCD);
    }
    }
     //更新session中的shopping.shoppingcart的变量
session.putValue("shopping.shoppingcart", buylist);
     //创建路径变量
     String url="/EShop.jsp";
           //创建ServletContext类,这是一个Servlet的应用程序类
           ServletContext sc = getServletContext();
           RequestDispatcher rd = sc.getRequestDispatcher(url);
           //在Servlet中执行JSP代码
           rd. forward(req, res);
      }
}
//结账操作
else if(action.equals("CHECKOUT"))
{
      //声明要交的费用
float total =0;
//遍历购物车的所有商品
for (int i=0; i< buylist.size();i++)
{//将购物车的商品还原为CD类
       CD anOrder = (CD) buylist.elementAt(i);
       //获得该商品的价钱、数量、总价
       float price= anOrder.getPrice();
       int qty = anOrder.getQuantity();
         total += (price * qty);
       }
       total += 0.005;
      //总价钱取小数点后3位
String amount = new Float(total).toString();
int n=amount.indexOf('.');
amount = amount.substring(0,n+3);
//利用setAttribute()方法传递变量 amount
req.setAttribute("amount",amount);
//创建路径并执行jsp代码
String url="/Checkout.jsp";
ServletContext sc = getServletContext();
RequestDispatcher rd=sc.getRequestDispatcher(url);
rd.forward(req,res);
              }
}
//创建一个过程,对商品数据进行分解
private CD getCD(HttpServletRequest req)
{
  String myCd = req.getParameter( "CD" );
  String qty = req. getParameter ( "qty" );
  //用|分开商品的信息
  StringTokenizer t = new StringTokenizer (myCd,"|");
  //分别获得4个变量
  String album= t.nextToken();
  String artist = t.nextToken();
  String country = t.nextToken();
  String price = t.nextToken();
  //去除$
  price = price.replace('$',' ').trim();
  //创建一个新的CD类,并将数据加入
  CD cd= new CD();
  //往该类中输入数据
  cd.setAlbum(album);
  cd.setArtist(artist);
  cd.setCountry(country);
  cd.setPrice((new Float(price)).floatValue());
  cd.setQuantity((new Integer(qty)).intValue());
  return cd;
}
 }
如果session中的login变量为空,那么该网页便转向error.html

 



上一篇:[SQL]在SQL日期的不同格式化输出 下一篇:没有了.. 【加入收藏】【打印此文】