Struts2学习笔记


  

1.什么是Struts2?

  javaEE三层架构:表现层、业务层、持久层,为了提高开发效率,方便项目管理。

技术结构发展:
  1.单独使用jsp/servlet、
  2.使用jsp+javabean:(model1模式)、
  3.使用:jsp+servlet+javaBean(model2模式)

  Model2模式即MVC模式,MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。

存在的问题:
  1.控制逻辑复杂且不通用(多个请求得写多个Servlet)。
  2.表现(视图)技术单一,只使用jsp,能否使用其它表现层技术(freemarker,pdf、xls)。
  3.对请求的参数的解析(需手动单独获取每个参数request.getParameter())。

  Struts2 是apache的一个开源项目,它是纯java开发,它是一个非常优秀的MVC框架,基于Model2 设计模型。   

2.Struts2的结构优点

解决jsp+servlet+javabean中的问题:
  1.将控制逻辑单独封装成通用的控制器
  2.原控制逻辑中封装请参数、调用业务逻辑代码抽取出来。
  3.支持多视图技术。

(1)控制器
  struts2提供前端控制器(Struts2PreparedAndExecutFilter),将控制逻辑封装起来,接收请求。

(2)模型
  封装请求参数,进行业务处理。
struts2提供了action接口,根据业务需求开发不同的action,比如:注册用户Action

(3)提供Result接口,支持多视图技术
  Result将结果响应给用户。   

3.Struts2处理请求的全过程是什么?

  1.当客户端浏览器向服务器端发送请求,会被Struts2的核心前端控制器(一个过滤器)所拦截,然后根据struts2.xml配置文件中的内容来决定调用哪个前端控制器action;

  2.前端控制器action接收到请求后,会根据请求的method方法名调用函数进行处理;

  3.处理完成后,会返回一个逻辑视图名,然后根据struts2.xml中配置的action的result来决定要跳转到哪个前端页面。

4.属性驱动

  属性驱动是struts2提供的一种参数绑定机制,如果按照struts指定的开发规则,自动请求的参数设置(赋值)到struts的action类的属性中。

属性驱动开发规则:
  1.确定请求参数的名称。
  2.在action类中添加属性,属性名和参数名称一致,并且添加 get/set方法。

  属性驱动支持不同action类属性类型:包括基本数据类型、list、map、数组、pojo。

  重点掌握:1.基本类型 2.pojo 3.数组 4.list

5.模型驱动

问题描述:
  使用属性驱动,如果业务方法比较多,添加很多属性及get/set方法,不方便对业务方法进行维护。

解决方案:
  将action中接收参数属性及get/set方法单独放到其它pojo中,action只剩下业务方法。可以使用struts2提供模型驱动方法开发action。

Ognl和值栈是实现模型驱动的基础原理。
OGNL是Xwork框架提供的功能,Xwork是struts2基础架构,Xwork是一个ioc容器。
OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目,struts2使用ognl,作为表达式语言。
使用OGNL可以方便向对象中设置属性值,从对象中获取属性值。

模型驱动:
  模型驱动是将请求参数绑定到专门的模型对象中,Action实现ModelDriven接口并指定模型对象类型,模型对象类型即为pojo。

  

6.拦截器

  struts2中通过拦截器实现参数绑定、参数校验、类型转换,拦截器就是在action的执行之前或之后进行拦截执行一些代码,就是对action代码的增强。
  
拦截器的特点:
  1.如果使用拦截器可以很方便访问值栈中的数据;
  2.filter过滤器,可以拦截所有的请求;而struts2的拦截器只能拦截用户的请求,即action请求。

---------------- The End ----------------
0%