JAVA WEB 购物车实验报告.doc
南昌大学实验报告学生姓名: 张 志 煋 学 号: 专业班级: 网工121班 实验类型: 验证 综合 设计 创新 实验日期: 2015-4-15 实验成绩: 一、 实验项目名称购物车项目二、 实验目的通过完成购物车的项目,初步学会并掌握JSP+JavaBean项目开发三、实验基本原理本实验运用的技术主要有:HTML、JSP、MySQL数据库技术、JavaBean、以及DAO接口、DAO实现类、DAO工厂类。四、 实验步骤1、 运行My Eclipse,新建一个Shopping的web工程,部署;2、 利用navicat新建一个数据库javaweb,按照老师要求设计各表;3、新建一个com.sanqing.bean包,包中编写一个Commodity.java的JavaBean,参 考书上购物车代码,在DAO接口中新增一个方法 List<Commodity>findCommodityByType(int type);并在DAO实现类中实现:4、新建一个com.sanqing.util包,包中编写一个DBConnection.java的文件,用于连 接数据库;5、编写一个login.jsp的文件,供用户输入用户名和密码;6、编写一个login1.jsp的文件,用户判断用户名和密码是否正确;7、编写一个cxit.jsp的文件,供用户查询物品;8、编写一个cxit1.jsp的文件,根据用户选择的类型查询物品;9、编写一个AddToCart.jsp的文件,将用户购买的物品添加进购物车;10、编写一个buyitem.jsp的文件,将用户购买的物品添加到数据库中;11、编写一个show.jsp的文件,利用数据库中的item视图显示用户确定购买的物品; 12、启动Tomcat服务器,打开浏览器,在地址栏中输入首页地址:测试结果五、实验数据及处理结果1. login.jsp的程序代码如下:<%page language="java" import="java.util.*" pageEncoding="GBK"%><html> <head> <title>用户登录</title> </head> <body> <form action="login1.jsp" method="post"> 用户名:<input type="text" name="username" /> 密 码:<input type="password" name="password" /> <input type="submit" value="登录"> </form> </body></html>2. login1.jsp的程序代码如下:<%page language="java" import="java.util.*" pageEncoding="GBK"%><%page import="java.sql.*" %><%page import="com.sanqing.util.DBConnection"%><html> <head> <title>查询物品</title> </head> <body> <% request.setCharacterEncoding("gb2312"); String username=request.getParameter("username"); String pwd=request.getParameter("password"); boolean b=false; Connection conn = DBConnection.getConnection(); String sql="SELECT* FROM usertable" PreparedStatement pstmt = null; try pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); while(rs.next() if(username.equals(rs.getString("Username")&&pwd.equals(rs.getString("Userpwd") b=true; session.setAttribute("id",rs.getString("UserID"); out.println("用户登陆成功!"); catch (SQLException e) e.printStackTrace(); finallyDBConnection.close(pstmt);/关闭预处理对象DBConnection.close(conn);/关闭连接对象 if(!b) out.println("用户名或密码错误!请重新登录"); %> <%if(b)%> <br/> <a href="index.html" >点击进入</a> <% %> <%if(!b)%> <a href="login.jsp" >确定</a> <% %> </body></html>3. cxit.jsp的程序代码如下:<%page language="java" import="java.util.*" pageEncoding="GBK"%><%page import="java.sql.*" %><%page import="com.sanqing.util.DBConnection"%><html> <head> <title>查询物品</title> </head> <body> <% Connection conn = DBConnection.getConnection(); String sql="SELECT * FROM typename" PreparedStatement pstmt = null; try pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); %> <form action="cxit1.jsp" method="post"> 商品类型: <select name="cType"> <%while(rs.next()%> <option value=<%=rs.getInt("typeID")%>><%=rs.getString("typeName")%></option> <% %> </select> <br><br> <input type="submit" value="确定"> </form> <% catch (SQLException e) e.printStackTrace(); finallyDBConnection.close(pstmt);/关闭预处理对象DBConnection.close(conn);/关闭连接对象%> </body></html>4. cxit1.jsp的程序代码如下:<%page language="java" pageEncoding="gbk" import="java.util.List"%><%page import="com.sanqing.dao.CommodityDAO"%><% taglib prefix="c" uri="<% taglib prefix="fmt" uri="<%page import="com.sanqing.factory.CommodityDAOFactory"%><%page import="com.sanqing.bean.Commodity"%><html> <head> <title>查询物品</title> </head> <body> <% request.setCharacterEncoding("gb2312"); int type=Integer.parseInt(request.getParameter("cType"); %> <%/通过DAO工厂类获得DAO实现类实例CommodityDAO commodityDAO = CommodityDAOFactory.getCommodityDAOInstance();/查找所有商品记录List<Commodity> commodityList = commodityDAO.findCommodityByType(type);/将所有记录保存到page范围pageContext.setAttribute("commodityList",commodityList);%> <table width="700" border="1"> <tr> <td>商品ID</td> <td>商品名称</td> <td>商品价格</td> <td>商品折扣</td> <td>优惠价格</td> <td>购买</td> </tr> <c:forEach var="commodity" items="$pageSmodityList"><%- 循环输出商品信息 -%> <tr> <td>$modityId </td> <td>$modityName </td> <td><fmt:formatNumber type="currency" value="$commodity.price"/></td> <td>$commodity.agio </td> <td><fmt:formatNumber type="currency" value="$commodity.price * commodity.agio"/></td> <td><a href="AddToCart.jsp?commodityId=$modityId">购买</a></td> </tr> </c:forEach> <tr> <td colspan="3" align="center"><a href="AddToCart.jsp">查看购物车>></a></td> <td colspan="3" align="center"><a href="buyitem.jsp">确定购买>></a></td> </tr> </table> </body></html>5. AddToCart.jsp的程序代码书上已有,buyitem.jsp的程序代码如下:<%page language="java" import="java.util.*" pageEncoding="GBK"%><%page import="java.sql.*" %><% page import="java.text.SimpleDateFormat" %> <%page import="com.sanqing.bean.Commodity"%><%page import="com.sanqing.dao.CommodityDAO"%><%page import="com.sanqing.factory.CommodityDAOFactory"%><% taglib prefix="c" uri="<% taglib prefix="fmt" uri="<html> <head> <title>确定购买</title> </head> <body> <% Connection conn=null; Statement stat=null; Class.forName("com.mysql.jdbc.Driver").newInstance(); String url="jdbc:mysql:/localhost:3306/javaweb" String user="root" String password="" conn=DriverManager.getConnection(url,user,password); stat=conn.createStatement(); %> <c:forEach var="commodit" items="$sessionScope.car" varStatus="stat1"> <% int commodityId=(Commodity)pageContext.findAttribute("commodit").getCommodityId(); int userId=Integer.parseInt(session.getAttribute("id").toString(); java.util.Date date=new java.util.Date (); java.sql.Date date1=new java.sql.Date(date.getTime(); String sql="INSERT INTO Buyitem(buycommodityId,buyUser,buyDate) VALUES('"+commodityId+"','"+userId+"','"+date1+"')" stat.executeUpdate(sql); %> </c:forEach> <% if(stat!=null) stat.close(); if(conn!=null) conn.close(); %>购买成功!<a href="show.jsp" >查看您购买的商品</a> </body></html>6. show.jsp的程序代码如下:<%page language="java" import="java.util.*" pageEncoding="GBK"%><%page import="java.sql.*" %><%page import="com.sanqing.util.DBConnection"%><html> <head> <title>显示商品</title> </head> <body> 您购买的商品如下:<% request.setCharacterEncoding("gb2312"); int userId=Integer.parseInt(session.getAttribute("id").toString(); Connection conn = DBConnection.getConnection(); String sql="SELECT * FROM Item WHERE buyUser='"+userId+"'"PreparedStatement pstmt = null;try pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); %> <table border="5" style="border-color=red"> <tr> <td>商品名称</td> <td>用户名称</td> <td>商品价格</td> <td>商品折扣</td> <td>优惠价格</td> <td>购买日期</td> </tr> <% while(rs.next()out.print("<tr>");out.print("<td>"+rs.getString("commodityName")+"</td>");out.print("<td>"+rs.getString("Username")+"</td>");out.print("<td>¥"+rs.getDouble("price")+"</td>");out.print("<td>"+rs.getDouble("agio")+"</td>");out.print("<td>¥"+rs.getDouble("x")+"</td>");out.print("<td>"+rs.getDate("buyDate")+"</td>");out.print("</tr>");catch (SQLException e) e.printStackTrace(); finallyDBConnection.close(pstmt);/关闭预处理对象DBConnection.close(conn);/关闭连接对象 %></table> </body></html>7. 测试结果如下:六、 实验总结通过这个购物车项目,我基本掌握了JSP+JavaBean的项目开发技术,在编写代码的过程中遇到了很多问题,比如数据库中文乱码问题,在一些相关的参考书中,我基本解决了这些问题。另外,经过网上搜索,在老师同学的帮助下,购物车项目一步步完善起来,我知道还有很多不足之处,但是在这个实验过程中我学到了很多东西,值得欣慰。同时在以后的学习中,除了学习知识外,还要不断地实践,这样才会有更大的提高。