struts2

一 三层架构

1.表现层:也就是我们说的web层 是负责接收客户端请求,向客户端响应结果。通常客户端使用http协议请求web层,web层需要接收http请求 完成http响应。

   表现层包括展示层和控制层:控制层负责接收请求,展示层负责结果的展示。

   表现层依赖业务层,接收到客户端请求一般会调用业务层经行业务处理,并将结果处理响应给客户端。

2.业务层:也就是我们说的Service层,主要负责业务逻辑处理,和我们开发项目需求相关。web层依赖业务层,但业务层不依赖web层。业务层可能依赖持久层 如果对数据持久化需要保证事物一致性。所以事物控制放在业务层来控制。

3.持久层:也就是dao层 负责数据持久化 包括数据层即数据库和数据访问层。数据库是对数据进行持久化的载体。数据访问层是业务层和持久层交互的接口,业务层需要通过数据访问层将数据持久化到数据库中。

二 struts2

1.struts2是一个基于mvc设计模式的web应用框架。其项目是开源的,提供强大的,可以减少页面代码的标签。

2.struts2的结果视图配置。在action执行时 先找到局部结果视图,没找到在找全局。

3.struts2中如何接收表单参数和向页面传递参数---------可以通过直接访问servletActionContext和通过是实现接口的方式

   * servletActioncontext:在struts2框架中提供了ServletActionContext类,在开发中采用的最多。该类包含几个常用的静态         方法有----- 

      (1) static httpservletrequest getrequest()  获取web应用的httpservletrequest对象

      (2)  static httpservletresponse getresponse()  获取web应用的httpservletresponse对象

      (3)  static servletcontext getservletcontext()  获取web应用的servletcontext对象

      (4) static pagecontext  getpage() 获取web应用的pagecontext对象

   * 通过接口的方式实现从表单获取参数

      (1) ServletRequestAware 实现该接口的Action可以直接访问web应用的HttpServletRequest实例

      (2) ServletResponsetAware 实现该接口的Action可以直接访问web应用的HttpServletResponse实例

      (3) SessionAware 实现该接口的Action 可以直接访问web应用的HttpSession实例

      (4) ServletContextAware 实现该接口的Action可以直接访问web应用的ServletContext实例

三:struts2中对请求参数的封装

     封装请求参数就是把我们通过浏览器发送的请求时,要传递给服务器的数据封装到指定的对象中。对象也就我们所用到的实体类。但有时只是该实体类中的某一个属性。可以理解为 我们在封装请求参数的时候可以有实体类也可以没有。而且请求参数的封装和请求方式无关,无论请求时用get或post方式都可以封装。

四: 驱动属性  

(1)没有实体类

    * 我们一般称为动作类和模型在一起,也就是我们在action中定义一些私有成员,并提供他们的get/set方法 通过这种方式来获取数据。 例 <input type="text" name="name"> 可以在服务器端通过getName()和setName()方式获取"name"的值。这中情况下获取表单数据很冗杂 如果表单中属性过多此方法获取每个属性值就会增加很大的内存开支。

(2) 有实体类

    * 即动作类和模型分开,在action中定义的是实体类对象(即new一个实体类) 并提供set/get方法 把数据封装到实体类中 在从实体类中获取数据。

 (3) 模型驱动

     *在struts中,action处理请求参数还有另一种方式,叫做模型驱动(modelDriven),通过实现ModelDriven接口来接收请求参数。

     * 书写规则

        动作类必须实现ModelDriven接口

        动作类中需要定义一个模型 并且实例化

        动作类提供Modeldriven接口中抽象方法的实现 返回模型对象。

        当使用模型驱动的时候 set/get方法不是必须的。

 五:封装web请求时的集合数据

      在实际开发中我们需要批量插入用户或者批量插入其他对象,在action中需要接收多个action中封装的对象,然后传递给业务层。此时就需要将表单中的数据封装到集合中。一般我们使用的集合是List或者Map.

     例; 用户1 <input type="text" name="user[0].name">

          用户2 <input type="text" name="user[1].name">

         用户3 <input type="text" name="user[2].name">

     action中应该定义 private  List<user> user 或者 private Map<String,User> user.

   

阅读更多
上一篇线程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭