servlet国人一般叫做控制器
理解session的运用其实就是要掌握它的原理
当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中.
Session 是 用于保持状态的基于 Web 服务器的方法。Session 允许通过将对象存储在 Web 服务器的内存中在整个用户会话过程中保持任何对象
随着越来越多用户登录,Session 所需要的服务器内存量也会不断增加。 访问 Web 应用程序的每个用户都生成一个单独的 Session 对象。每个 Session 对象的持续时间是用户访问的时间加上不活动的时间。 如果每个 Session 中保持许多对象,并且许多用户同时使用 Web 应用程序(创建许多 Session),则用于 Session 持久性的服务器内存量可能会很大,从而影响了可伸缩性。
Jsp的session是使用bean的一个生存期限,一般为page,session意思是在这个用户没有离开网站之前一直有效,如果无法判断用户何时离开,一般依据系统设定,tomcat中设定为30分钟.
JSP使用一个叫HttpSession的对象实现同样的功能。HTTPSession 是一个建立在cookies 和URL-rewriting上的高质量的界面。Session的信息保存在服务器端,Session的id保存在客户机的cookie中。事实上,在许多服务器上,如果浏览器支持的话它们就使用cookies,但是如果不支持或废除了的话就自动转化为URL-rewriting,session自动为每个流程提供了方便地存储信息的方法。
servlet购物车的理解: 购物车,就相当于你进入一家超市,你推的一个车车。 站在程序的角度来说: 你登录网站(进入超市),买的东西放在购物车里。 ( 这个问题不知道你想问什么。我没太理解,所以随便说说) session:的理解:你打开网页,你进入程序。创建一个sesion,那么在IE中你就可以访问到这个session。 如果你重新打开一个IE(不是新建选项卡)。那么他又是另一个session好象回答的有点抽象。。呵呵。
这下面是我当初做当当网demo的购物车设计笔记,希望对你有所帮助购物车功能
点击购买,将产品添加到购物车,存储购物车里面,把购物车里的产品以列表的形式显示出来,而且有变更功能删除功能
借助存储用session,为了内聚性高些,封装购物车组件
构建组件car
构建cart接口
方法public void add(int id)throws Exception;添加,尽可能传入有用的参数
组建写好以后,调用购买的action,AddCartAction,接受的请求参数,private id;写一个baseAction类,来获取session用的
public String execute(){
Cart cart=(Cart)session.get("cart");
if(cart=null){
cart=new CartImpl;
session.put("cart",cart);
}
cart.add(id);
session.put("cart", cart);
return success;
}
构建删除的action,也需要参数id
public String execute(){
Cart cart=(Cart)session.get("cart");
if(cart=null){
cart=new CartImpl;
session.put("cart",cart);
}
cart.delete(id);
session.put("cart", cart);
return success;
}
我想使用cart组件,所以要提取再封装
引入工厂,CartFactory干吗用的?
这样的,来个静态的static返回一个对像,类型cart类型
public static Cart getCart(Map
Cart cart=(Cart)session.get(Constant.CART_SESSION);
if(cart=null){
cart=new CartImpl;
session.put("cart",cart);
}
return cart;
}
而后cart代码以上全部更换代码
定义共通的常量
public class Constant{
//session key
public static finnal String CART_SESSION="cart";
//application key
}
显示购物车
划分显示
需要写一个CartAction来初始化显示界面
private List
private List
private double total;//总计金额
private double sale;//优惠金额 需要Cart对象往回传,继续在Cart里追加方法,public double totalDangPrice()throws Exception
public double totalshijiPrice()throws Exception;
private String execute{
获取cart
通过那个CartFactory获取cart
实例化上面的属性,之后到页面显示
}
在 CartInterface中追加方法,public List
从store将=buy标示的pro返回
已进入购物车界面先去查找,有没有cookie存在