Struts2 第二章 Struts2 核心API.docx
文本预览下载声明
Struts2 核心API1.回顾Java EE的架构体系、分层结构,Struts2 MVC框架的理解Struts2环境搭建2.目标和重点Struts2 Action接口 ActionSupport类(核心类和接口)接收用户输入数据的方法访问HttpServletRequest和HttServletResponse对象3.难点掌握ActionSupport核心类和Action接口掌握Struts控制器Action接收用户输入数据的三种方式掌握在Struts2控制器Action中使用ServletAPI4.知识点内容讲解4.1 控制器上一次我们搭建了自己的Struts2的环境,用户发出请求到控制器,控制器处理业务逻辑,在转发到视图jsp,整个流程中,掌握了MVC框架中各组件的作用,在Struts2中控制器Action类可以是一个普通的javaBean,所有的Action、jsp都可以理解为工程中的一个组件,通过struts.xml文件关联装配。这里要讲的是我们的控制器Action可以继承Struts2为我们提供的ActionSupport类,因为ActionSupport类已经具有很多默认的功能,比如国际化、文件上传下载等,通常情况下我们会继承ActionSupport类来编写自己的控制器。ActionSupport类实现了Action接口,这个接口定义了5个转发常量和execute方法,Action接口制定了控制器的规范,而ActionSupport类已经实现了这个接口,我们继承ActionSupport类需要重新execute方法。4.2接收用户输入数据的方法Web应用的第一步就是接收用户的请求,在servlet中是用request对象来获得用户输入表单域的值,而在Struts2中,这些繁琐的操作都由框架自动完成,并且还提供了多种接收用户数据的方法:最常用的,直接通过类的成员变量的set方法领域模型对象模型驱动的方式4.2.1直接通过Action控制器类成员变量的的set方法类完成。Struts2是通过拦截器来完成,后续的章节我们会学习拦截器,这种方式我们在搭建基本的struts2环境时已经用过,我们可以很方便的接收用户数据。获取用户输入数据的过程是这样,首先取得表单域的名称,在讲首字母转大写,前面加set组成一个set方法,再通过反射来设置对象的值,所以如果表单域的名称和类里成员变量名不一致也没关系,最主要的是表单域的名称加set后的set方法必须存在。另外在接收数据的过程中Struts还帮助我们完成了数据的类型转换。演示。。。。4.2.2领域模型对象接收数据Struts2还支持对象领域模型方式接收数据用户的表单域可以是“对象.属性名方式”,在Action控制器类的成员变量可以是一个模型,Struts2在接收数据时自动收集表达域的值,按照对象.属性的关系,去设置构建模型对象,使开发者在使用Struts2时以完全面向对象的方式去思考。演示。。。。。。。。4.2.3模型驱动方式第三种方式是控制器类实现Struts2提供的ModelDriver接口,他允许用户以更灵活的操作模型对象,前面二种方式对象数据从表单收集数据到对象都是由Struts2自动完成的,而模型驱动实现ModelDriver接口需要自己去new一个模型对象,并实现getModel?()方法。和领域模型一样,类的成员变量时一个模型,但是在表单域不需要“对象.属性”的方式。演示。。。。。。小结:需要注意这三种方式的区别和使用上的要点。4.3访问ServletAPI我们做的是web应用,到目前为止所写的代码中一个ServletAPI都没看见,难道不需要吗?答案是不可能不要,最起码用户登录少不了session对象,那么ServletAPI对象在哪里咧?Struts2为我们提供了二种方式,一种是解耦方式,一种是耦合方式。4.3.1解耦方式访问ServletAPIStruts2提供了一个ActionContext对象,我们可以通过这个对象获得session、request、response对象,先ActionContext context=ActionContext.getContext()就可以,需要注意的是获得的session、request、response对象都是Map的数据类型。演示。。。。。4.3.2耦合的方式访问ServletAPI另外Struts2还提供了ServletActionContext对象,我们可以直接获得session、servletContext、request、response对象,他们都是完全的ServletAPI的对象,使用的方式是setAttribute、getAttribute,我们还可以按原来的习惯去使用这些对象。演示。。。4.3.3
显示全部