首页

购物车的对象分析、application、EL表达式

搜索

1. 购物车的对象分析:

1)购物项类:CartItem,包含属性book,quantity

2)购物车类:ShoppingCart

属性:Map<Integer,CartItem> items;

//存放购物项的Map集合,key-bookId,value-CarItem

方法:

public void addBook(int booId,int quantity)

public void updateQuantity(int bookId,int quantity)

public void removeBook(int bookId)

public Map getItems()

3)数据传递的方式:

Book ---->CartItem---->Map---->ShoppingCart--->Session

quantity->

4)MVC模式的应用:

M:CartItem,ShoppingCart    (模型)

V:cartlist.jsp    (视图)

C:CartServlet    (控制器)

2. 掌握内置对象application的使用

   

2.1 application对象的主要作用:

    在应用程序范围内绑定数据和传递数据

-->绑定数据

application.setAttribute("name",obj);

-->获取绑定在应用程序范围内的数据

Object obj=application.getAttribute("name");

2.2 理解不同的作用域的概念:

    将数据绑定在应用程序范围内 - 位于应用程序作用域内

    将数据绑定在会话对象上 - 位于会话作用域内

    将数据绑定在请求对象上 - 位于请求作用域内

    将数据绑定在pageContext上 - 位于页面作用域内

    

-->绑定数据

void setAttribute(String name,Object value)

-->获取绑定的数据

Object getAttribute(String name)

    说明:

a.不同作用域内绑定的对象数据,是相互不影响的

b.不同作用域内可以绑定同名的对象数据

c.应用程序作用域的范围>会话作用域>请求作用>页面作用域

2.3 理解状态管理的概念:

将数据在不同范围内传递,称为状态管理

状态管理的方式:使用应用程序作用域、会话作用域、请求作用域、页面作用域

通过会话作用域进行状态管理,通常称为会话跟踪技术

[JSP中四种会话跟踪技术(状态管理的4种方式)?]

--------------------------------------------------------------

3. 重点:掌握EL表达式

3.1 什么是EL表达式

EL表达式 - JSP Expression Language,用于在JSP页面上输出作用域范围内的JavaBean的值或其属性的值,从而简化JSP页面的编写

EL表达式时视图(V)层的技术。

如:${book.title},${cart.items}

3.2 EL表达式的基本语法:

1)输出基本类型的JavaBean的值:${bean}

//输出名称为bean的值s

2)输出集合类型的JavaBean的值:${arr[0]}

${map['key']}  //Map集合(key,value)

例如:arr=${arr} //int[] arr={2,3,5,8};

      arr[0]=${arr[0]}  //int[] arr={2,3,5,8};

      list=${list}  //List list=Arrays.asList(2,4,6,8);

      list[0]=${list[0]}  //List集合,同上

      map=${map} //Map map=new HashMap();

      ${map['Android']}  //map.put("Android", 100.0);

3)使用运算符:

a.算术运算符 + - * / %

  如:${v1+100},${list[0]/2}

      ${map['Android']/2} 

b.关系运算符:

== eq

!= ne

> gt

>= ge

< lt

<= le

如:${v1>100},${v1 eq list[0]}

c.逻辑运算符

&& and

|| or

! not

如:${v1>100 && v2<10}

    ${list[0] or list[1]<100}

d.empty运算符 - 用于判断字符串是否为空串、集合中是否存在元素、作用域中是否存在指定的JavaBean

如:${empty str},${empty list},${empty bean}

    ${not empty str}

4)指定特定的作用域:${scope.bean}

scope指定特定的作用域,可以使用    pageScope,requestScope

sessionScope,applicationScope

如:${pageScope.v1}

当省略scope时,从pageScope,requestScope,

sessionScope,applicationScope范围内依次寻找对应的Bean,找到后就不再使用其他的作用域。

当在所有的作用域中都没有找到,输出空串

----------------------------------------------------------------

3.3 输出JavaBean的属性

1)什么是JavaBean  (javabean就是对象,也就是类)

一个可以复用(重复使用)的Java类,需要遵循特定的规范

2)JavaBean规范:

a.提供无参默认的构造方法

b.定义私有属性(属性要定义为私有)

  如:private String title;

c.提供对应的getter和setter方法,如:

//用于访问title属性

public String getTitle(){

return this.title;

}

3)难点:掌握什么是JavaBean的属性

在EL中使用的JavaBean的属性,是通过getter方法的命名模式得到的: (点后面的都是属性)

public String getTitle() --->${book.title}

public double getTotalPrice()

--->${sessionScope.cart.totalPrice}

4)语法:${bean,attr_name}或{bean['attr_name']}

5)EL表达式的执行过程:${book.title}

对应的JSP代码段和JSP表达式:(伪代码?)

<%

    Book book=(Book)pageContext.getAttribute("book");

    if(book=null){

book=(Book)request.getAttribute("book")

if(book==null){

//查找会话作用域session

if(book=null){

//查找应用程序作用域application

}

}

    }

%>

<%=book.getTitle()%>

即:${book.title}  --->调用方法book.getTitle();

------------------------------------------------------------------

    实现购物车页面中修改数量的功能:

a.ShoppingCart类:

public void updateQuantity(int bookId,int quantity)

b.CartServlet类(C):

public void updateQuantity(HttpServletRequest request,HttpServletResponse response)

//接收请求参数:bid和num

//调用模型中的方法

//重定向回购物车页面

作业:完成数量的修改和删除购物项的功能

------------------------------------------------------------------

3.4 el表达式的基本语法:

${el表达式}

1)第一种:访问bean属性

${user.name}或者使用${user["name"]}或者${user[propname]}

说明:

${requestScope.user.name}只到request中去找,不再依次到4个范围找

2)第二种:获得请求参数值

a.${param.username}

  等价于request.getParameter("username");

b.${paramValues.interest}

  等价于request.getParameterValues("interest");

3)第三种:计算一个表达式,将结果作为标签的属性值或者直接输出

a.算数运算

b.关系运算

c.逻辑运算

d.empty运算

 

 

上一页 下一页