1、Action获取Web元素,本讲要点与教学目标,【教学要点】 1、依赖于容器的Map类型Web元素获取 2、依赖于容器的真实类型Web元素获取,Action中获取Web元素的方法,1.依赖于容器(ActionContext)获取Map类型的Web元素 2.依赖于容器(ServletActionContext)获取真实类型的Web元素,Action对Web请求的处理中,仅获取Web请求参数是不够的,还需要获取request、session、application等Web元素的信息。Struts2框架中获取Web元素的方法有:,通过ActionContext获取Map类型Web元素,【Action
2、Context】是Action执行的上下文,提供一系列相关方法用于访问保存在HttpServletRequest、HttpSession、ServletContext中的信息,并将其存储在Map中。 【ActionContext对象获取】 通过ActionConext类的静态方法getContext() 【ActionContext常用方法】 public Object get(String key):获取ActionContext中指定键名的元素对象 public Map getSession():获取session元素对象 public Map getApplication():获取app
3、lication元素对象 【Map常用方法】 public void put(String key,Object value):向Map对象中添加一个具有键名标识的元素 public Object get(Object key):从Map对象中获取指定的元素,通过ActionContext获取Map类型Web元素,【在Action中获取Web元素的方法】1.获取ActionContext对象ActionContext ac= ActionContext.getContext(); 2.通过ActionContext对象获取Map类型的Web元素Map s=ac.getSession();或:
4、Map s=( Map )ac.get (“session“);3.使用Map对象的put/get方法添加/获取属性s.put(“username“,“lucky“); 【JSP中获取Web元素属性方法】 1.通过JSP脚本元素2.通过Struts2框架标签和OGNL表达式,通过ActionContext获取Web元素,【基本思路】采用模型驱动的方式获取用户登录信息 【基本步骤】 1.创建视图:用户登录页login1.jsp; 2.模型创建:创建数据模型User.java;创建ActionLoginAction1.java 3.创建视图:登录成功页success1.jsp 4.struts.x
5、ml配置,【案例说明】 以“用户登录”业务为例,在登录Action中获取Map类型的request、session、application元素,并对其属性进行设置,在JSP视图中输出各元素的属性值。,通过ActionContext获取Web元素,【用户登录页】,通过ActionContext获取Web元素,【数据模型User.java】,public class Userprivate String username;private String password;/此处省略getter和setter方法 ,通过ActionContext获取Web元素,【LoginAction1.java】,
6、通过ActionContext获取Web元素,通过ActionContext获取Web元素,【success1.jsp】,通过ActionContext获取Web元素,【success1.jsp】,通过ActionContext获取Web元素,【struts.xml配置】,/success1.jsp/login1.jsp,通过ActionContext获取Web元素,【简单总结】(1)在Action中声明Map类型变量(2)通过ActionContext对象获取指定Web元素(3)通过put()方法为Web元素添加属性,通过get()方法获取Web元素的属性值(4)在JSP中通过Struts2
7、标签获取属性值,格式:,通过ServletActionContext获取Web元素,【问题】 通过ActionContext获取的Web元素是Map形式的,这对于习惯了Servlet编程的开发人员可能不太习惯 【解决方法】Struts2框架中可以通过ServletActionContext类 获取 ServletAPI对象 【ServletActionContext的常用方法】 public static HttpServletRequest getRequest():获取请求对象public static ServletContext getServletContext():获取应用程序对象
8、 【思考】获取HttpSession的方法?,真实类型Web元素的获取,【基本思路】1、在Action中使用真实类型的Web元素,即通过ServletActionContext获取HttpServletRequest、HttpSession、ServletContext类型的Web元素。2、在视图中输出Web元素属性的方法不变。 【说明】本案例课件中仅给出Action的定义,其它参考案例1,真实类型Web元素的获取,【LoginAction2.java】,真实类型Web元素的获取,【LoginAction2.java】,真实类型Web元素的获取,【LoginAction2.java】【说明】此种方式将Action组件与Servlet容器紧密耦合,不利于整个框架的设计,不推荐使用。,