考试首页 | 考试用书 | 培训课程 | 模拟考场 | 考试论坛  
全国  |             |          |          |          |          |         
  当前位置:计算机等级 > 二级考试 > Java语言程序设计 > 考试辅导 > 文章内容
  

全国计算机等级考试二级Java重点内容(49)

中华IT学院   【 】  [ 2016年11月16日 ]

1.课程回顾(理解)

  1)ValueStack结构和数据存储状态

   ValueStack包含3个组成

   a. OGNL引擎:负责解析OGNL表达式

   b. root对象:CompountRoot(栈结构)

       存放了当前请求的Action对象(处于栈顶位置)

   c. context对象:Map结构

       存放了其他象.

       request:Object

       session:Object

       application:Object

   2) ValueStack原理

    a.当客户发送一个请求后,控制器会创建一个ValueStack对象

    b.控制器创建请求对应的Action对象,并压入到ValueStack的root栈中

    c.将request,session等对象的引用,存入到ValueStack的context中

    d.将ValueStack再存入到request对象中,struts.valueStack

    e.客户再发新请求,重复以上操作.

*2.重构列表显示示例

3.EL表达式在Struts2中的使用(理解)

  EL为什么可以获取Action对象的属性?

  可以访问pageContext,request,action,session,application范围数据

  在原有的JavaWeb程序中,JSP如果使用${username},会调用如下方法查找.

   HttpServletRequest接口

    request.getAttribute("username")

    session.getAttribute("username")

    application.getAttribute("username")

  在Struts2中,将request对象进行了封装,类型为StrutsRequestWapper.

   public class StrutsRequestWapper

                   extends HttpServletRequestWrapper{

      //重写了getAttribute

      public Object getAttribute(String expression){

         //首先去原始的request中查找

         Object val = super.getAttribute(expression));

         //如果找不到,去valuestack查找

           if(val == null){

               val = ValueStack.findValue(expression);

           }

           return val;

      }

   }

   JSP使用 ${"username"} -->先去原有request中查找

    找不到调用ValueStack.findValue("username");

    触发Ognl.getValue("username")//获取root中栈顶action的username属性

4. Struts2中Action组件的核心应用

   1)Action组件原理

     a.当客户发生一个请求,控制器会创建一个Action对象

        不必担心线程并发,不安全问题.

     b.Action对象创建后会放入ValueStack中,当root对象的栈顶

     c.Action对象提供一个业务方法,默认是execute

     d.Action对象在请求处理完毕后销毁

   2)Action如何使用request,session,application

     a.利用工具类ActionContext,ServletActionContext

     如何将HttpServletRequest,HttpSession等对象转换成Map结构

    public class SessionMap extends AbstractMap{

           private HttpSession session;

           public SessionMap(HttpSession session){

                   this.session = session;

           }

         public void put(Object key,Object value){

                   session.setAttribute(key.toString(),value);

         }

         public Object get(Object key){

首页 1 2 尾页
分享到:
本文纠错】【告诉好友】【打印此文】【返回顶部
将考试网添加到收藏夹 | 每次上网自动访问考试网 | 复制本页地址,传给QQ/MSN上的好友 | 申请链接 | 意见留言 TOP
关于本站  网站声明  广告服务  联系方式  站内导航  考试论坛
Copyright © 2006-2017 中华考试网(Examw.com) All Rights Reserved  营业执照