- 浏览: 79494 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
一辈子的咲子推:
其实很多学生考试不及格未必就是不学习,太多学生把大学几年时间全 ...
真的不想监考 -
jackroomage:
看错了,你写的没有问题。sorry!!!
Java Web实践专题——访问路径问题 -
jackroomage:
<a href="./../bb/b_a.js ...
Java Web实践专题——访问路径问题
主要内容:
l 完成购物车的其他基本功能;
l 生成订单;
l 小结
1、购物车的其它功能
对购物车的物品数量修改和物品删除功能是两外两个基本功能。实现过程与添加工程比较类似,这里只给出参考代码:
1.1 模型部分
文件名:CartManager.java(在上一讲的基础上修改,红色部分为添加的内容)
package javabean;
import java.util.ArrayList;
import java.util.Iterator;
public class CartManager
{
// 表示购物车
private ArrayList cart;
public void setCart(ArrayList cart)
{
this.cart = cart;
}
public ArrayList getCart()
{
return cart;
}
// 添加的物品&数量
public ArrayList addToCart(Goods g,int quantity)
{
if(cart==null){
// 实例化购物车对象
cart=new ArrayList();
// 添加到购物车
Item item = new Item(g,quantity);
cart.add(item);
}
else
{
// 转换成数组
Object items[] = cart.toArray();
boolean find=false; // 表示是否查找到
for(int i=0;i<items.length;i++)
{
Item temp = (Item)items[i];
// 判断购物车中是否存在要添加的物品
if(temp.getGoods().getGoodsid().equals(g.getGoodsid()))
{
temp.setQuantity(temp.getQuantity()+quantity);
find=true;
break;
}
}
if(!find)
{
// 添加到购物车
Item item = new Item(g,quantity);
cart.add(item);
}
}
return cart;
}
public void delete(String goodsid)
{
// 转换成Iterator对象
Iterator i = cart.iterator();
while(i.hasNext())
{
// 得到一个购物项
Item temp = (Item)i.next();
if(temp.getGoods().getGoodsid().equals(goodsid))
{
cart.remove(temp);
break;
}
}
}
public void update(String goodsid,int quantity)
{
Iterator i = cart.iterator();
while(i.hasNext())
{
// 得到一个购物项
Item temp = (Item)i.next();
if(temp.getGoods().getGoodsid().equals(goodsid))
{
temp.setQuantity(quantity);
break;
}
}
}
}
1.2 修改视图部分
文件名:cart.jsp(在上一讲的基础上修改,红色部分为添加的内容)
<%@ page contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
购物车中的信息<br>
<table border=1>
<tr>
<td>物品编号</td>
<td>物品名称</td>
<td>价格</td>
<td>数量</td>
</tr>
<c:forEach var="item" items="${cart}">
<tr>
<form action="processCart">
<input type="hidden" name="goodsid" value="${item.goods.goodsid}">
<td>${item.goods.goodsid}</td>
<td>${item.goods.goodsname}</td>
<td>${item.goods.price}</td>
<td><input type="text" name="quantity" value="${item.quantity}"></td>
<td><input type="submit" name="action" value="修改"></td>
<td><input type="submit" name="action" value="删除"></td>
</form>
</tr>
</c:forEach>
</table>
1.3 控制器
删除和修改功能使用相同的控制器,会根据提交按钮的值确定要完成的功能,参考代码如下:
文件名:ProcessCart.java
package servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javabean.*;
import java.util.*;
public class ProcessCart extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException
{
//response.setContentType("text/html;charset=gb2312");
//PrintWriter out = response.getWriter();
try{
// request.setCharacterEncoding("gb2312");
// 得到要添加的物品的编号
String goodsid = request.getParameter("goodsid");
// 得到执行命令:删除还是修改
String action = request.getParameter("action");
action=new String(action.getBytes("8859_1"));
//out.println(action);
String quantity=null;
if(action.equals("修改"))
{
quantity = request.getParameter("quantity");
}
// 创建JavaBean对象
CartManager cartManager=new CartManager();
// 得到session对象
HttpSession session = request.getSession(true);
// 得到购物车对象
ArrayList cart = (ArrayList)session.getAttribute("cart");
// 用cart初始化cartManager
cartManager.setCart(cart);
if(action.equals("修改"))
{
cartManager.update(goodsid,Integer.parseInt(quantity));
}else
{
cartManager.delete(goodsid);
}
// 把购物车重新存到session
session.setAttribute("cart",cartManager.getCart());
}catch(Exception e){
//out.println(e.toString());
}
response.sendRedirect("cart.jsp");
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException
{
doGet(request,response);
}
}
2、生成订单
如果用户购物完成会下订单,通常需要输入个人的送货信息等,然后把订单信息存储到数据库中。这里这介绍如何组织信息,存储信息的过程不再介绍。
需要两张表:
l 订单表
l 订单明细表
订单表中信息:
l 订单号: 日期+流水号,通常作主键
l 订单的发出者:通常从session中获取信息 或者 让用户输入(没有登录的情况下)
l 订单的日期:
l 订单的状态:
l 付款方式
l 送货地址
l 联系电话
l 接收人
订单明细表(订单号和物品编号作为联合主键):
l 订单号
l 物品的编号
l 该物品的数量
在完成订单添加的时候,最好能进行事务处理。
3、小结
整个JSP培训基本上按照MVC模式进行,自己在完成任何功能的时候都可以按照这个思路来做。
3.1 MVC思路分析
MVC:对于每个功能,都分成3部分考虑。
l 先考虑v:表示试图,与人交户,分别输入和输出。
l M:模型,通常使用JavaBean编写,对于每个功能实际上对应的一个方法(或者多个方法),应该考虑整个方法执行的时候需要的条件(方法的输入),如何反馈(返回值类型和异常类型),具体功能使用Java代码实现。
l C:记住4句话:
n 获取请求信息:request.getParameter方法,getParameterValues方法
n 调用JavaBean:创建对象、实例化、初始化、调用方法
n 传值:request.setAttribute
n 转向: RequestDispatcher或者response.sendRedirect方法
因为控制器的功能非常固定,所以掌握上没有难度。而模型部分属于Java代码,与JSP语法没有太大关系,所以对读者来说,学习JSP的难度主要在视图部分。
3.2 输入和输出
输入:
l 最基本的方式:表单提交,使用表单元素提交信息,通过form的action属性指定处理文件(控制器)。比较典型的隐藏域的使用(修改信息、删除)。
l 超链方法:典型的用法,就是使用“?”传递参数,例如分页显示、删除(超链方式)。
l 通过地址栏。
这些也非常固定。
输出:
l 静态信息的输出:表头,直接输出
l 单个对象:例如user,使用${user.属性名}输出
l 集合对象:<c:forEach>标签输出
l 错误信息,包括提示信息:${error}
l 特定条件下的信息输出:<c:if>标签处理
这些相对比较灵活,主要是JSTL和EL的灵活使用。所以需要把JSTL和EL掌握好。
3.3 文件之间的关系
静态:文件之间的关联关系(多次请求之间):按钮提交、超链、地址栏输入
动态:文件之间的关系(一次请求):<jsp:forward> <jsp:include> response.sendRedirect RequestDispatcher <%@ include file=”” %>。
3.4 信息的存储:
l 持久存储:就是使用数据库存储,主要使用JDBC技术(O/R映射,JPA)。
l 临时存储:内存存储,request(MVC模式传值)、session(登录用户的信息、购物车信息)、appliction(公开的聊天室)
系列培训笔记到此结束。
本人联系方式:lixucheng@dl.cn
参考教材:《Java Web程序设计基础教程》
发表评论
-
网页之间共享值
2007-03-19 13:49 452Web应用是由大量的网页组成的,运行的基本原理是:用户通过客 ... -
Java Web实践专题——Eclipse中CVS的使用
2007-03-19 14:50 597CVS概述 主要作用是管理代码的版本,尤其是多人协同开发的时 ... -
Eclipse中Web应用的开发
2007-03-30 09:35 503Eclipse中Web应用的开发 应用服务器:tomcat ... -
MVC模式在Java Web中的应用
2007-04-21 22:06 395流行的Java Web应用框架基本上都实现了MVC模型,下面分 ... -
Tomcat中连接池的配置和使用
2007-04-27 13:19 464对于大型网站来说,信 ... -
WebLogic中连接池错误Failed to Generate Wrapper Class的解决方案
2007-05-01 13:25 541很多人在使用Weblogic配置连接池之后,会碰到这样一个 ... -
Sun Java System Appliation Server中连接池的配置
2007-05-01 14:16 4991、准备驱动程序 把 ... -
Java Web中的分页显示——通过界面实现
2007-05-04 23:11 670在界面完成分页控制, ... -
Java Web中的分页显示——在模型中实现
2007-05-04 23:25 462在模型中实现分页显示,主要是在把查询的结果集转换成对象集合的 ... -
NetBeans中的几个快捷方式
2007-06-15 12:38 505几个比较常用的方便代码编写的功能如下: 1、引入用到的类 ... -
最好的Java Web开发的书应该是什么样子?
2007-06-20 14:50 685关于Java Web开发的技术非常多,JSP、Servet、J ... -
JSP培训(1)——概述
2007-08-21 08:35 518本文是JSP培训的笔记,是培训的第一次——概述。 (参考 ... -
JSP培训(2)——运行原理、文档结构、简单输入输出
2007-08-23 09:16 599目标: l 掌握Web应用的文档结构; l 掌握JSP ... -
JSP培训(3)——客户端验证、常用输出方式、JSTL基本用法
2007-08-30 09:49 509目标: l 掌握客户端验证的基本过程; l 掌握 ... -
JSP培训(4)——实例:登录功能、jsp:forward标签、jsp:include标签、include指令、EL、c:if
2007-08-30 09:55 764目标: l 进一步体会JSP应用; l 掌握表达 ... -
JSP培训(5)——使用JavaBean完成业务逻辑
2007-08-31 16:42 498目标: l 掌握什么是JavaBean; l 掌握如何 ... -
JSP培训(6)——使用Servlet作为控制器实现MVC模式
2007-09-04 13:38 613目标: l 初步理解MVC ... -
JSP培训(7)——使用JDBC完成动态验证、采用MVC完成数据查询
2007-09-04 13:43 535目标: l 掌握JDBC链接数据库的基本过程; l 掌 ... -
JSP培训(8)——添加功能和分页显示
2007-09-04 13:46 575学习目标: l 进一步掌握MVC设计模式; l 掌握添 ... -
JSP连接Microsoft SQL Server出错:Error establishing socket解决方法
2007-09-06 14:09 498安装SQL Server的补丁即可。 安装的时候需要注意:第 ...
相关推荐
jsp开发实例——购物车,是一个综合开发实例。比较有针对性。
是购物车的源代码,比较简单,易于理解,适合初学者
本人简单做了一个购物车设计 内附项目源码,数据库文件
jsp+servlet+jdbc实现简单的购物车实例,购物数据通过session存储 1、加入购物车时,把数据保存在session中 2、点击系统退出时,购物车中的数据插入到数据库购物车表 3、再次登录时,查询数据库购物车表的数据加载到...
第八章JSP动态网站开发——实例.zip 学习动态网站的建设。
库存商品管理(jsp)——试题讲解源码及资料,本试题使用Jsp+Servlet+Mysql+JDBC等技术实现库存商品管理,资料齐全
介绍采用什么样的数据结构存储购物信息; 编写购物界面; 完成向购物车添加物品的功能。
关于JSP的一些技术性的实现,虽然简单,但是有一定的学习价值,希望大家会喜欢。
JSP程序设计教程中的购物车实例 含光JSP实现的和servlet实现的 还在基础上做了些修改 运行路径自己修改一下
一个简单的 jsp购物车源代码,适合初学者学习用, 初学者不要错过哦。
jsp mysql实例简单的购物车 完整文档
jsp 实例——客户管理系统(clientManger)................
JSP技巧收集——超多超赞的JSP实用小技巧哦!
Tomcat 工程,购物车实例,个人编写,有部分BUG,下载后请评价资源,谢谢
2.利用搭建好的jsp+servlet框架提供http请求及响应视图能力,展示项目所需各个jsp页面。根据响应显示注册页面进行注册操作。 3.根据注册所填写的帐号和密码进行系统登录,如忘记密码,可根据邮件动态验证码形式进行...
用jsp实现购物车有助于我们更好的了解和运用。
JSP核心技术——JSP引擎内幕(2010).pdf 内除了引擎外,还有jsp标签、线程安全
jsp网络编程——源文件(06——09)帮助
jsp网络编程——源文件(10——11)帮助
大家都知道,JavaBean+JSP和Servlet+JavaBean+JSP是JSP最基础的开发模式,也是每个JSP初学者必学的,后者属于MVC开发模式,也就是实现了3层架构的分离,这里为大家带来两个简单的论坛实例,让初学者从简单中体会到这...