Struts2---对Servlet的API的访问,结果页面的配置,数据的封装

Struts2对Servlet的API的访问

    1.完全解耦合的方式

        通过ActionContext对象,直接获得所有参数的map<String,String[]>,返回参数到页面只能对request,session,application的map进行操作,不能对这些对象本身进行操作。
        

    2.使用ServletAPI的原生方式

        通过ServletActionContext直接获得Request对象和ServletContext对象(对application操作),可以获得真实的request,session,application对象以及他们相应的方法。
        

    3. 接口注入方式

        通过实现ServletRequestAware,ServletContextAware等接口,实现接口中的方法获得API操作对象,使用这种方法是线程安全的,因为Action是多例的,每个访问都会实例化一个Action对象。(Servlet是单例的)
        

Struts2结果页面的配置

    1.局部结果页面的配置

        在某个action中配置result,只对该action有效
        

    2.全局结果页面的配置

        在某个包中配置global-results,该包中的所有action只要返回这个值,就会跳转到相应页面
       

    3.result标签的一些属性

        name属性:逻辑视图的名称,默认为success

        type属性:页面跳转的类型,取值有下列几种
                        dispatcher:      action转发到jsp(默认值)
                        redirect:          action重定向到jsp
                        chain:             action转发到action
                        redirectAction:action重定向到action(当action不在同一个包下时需要配置一些变量)
                                            

  

Struts2数据的封装

    1.属性驱动:提供属性的set方法(不常用)

        这种方法就是给action提供与domain类相应的属性和他们的set方法,前端代码和平常一样

    2.属性驱动:页面中提供表达式的方式

        这种方式需要再action中提供一个domain对象,不需要实例化,但要有get和set方法,缺一不可。还需在前端页面提供表达式,也就是input的name的写法。这种方式适用于当一个表单提交的数据中包含多个对象时。
        

    3.模型驱动:采用模型驱动方式

        这种方式需要实现ModelDriven<User>接口,以及他的getModel()方法,User就是你要封装的类对象。这种方式最常用,但只能封装一个对象,多个对象需要用第二种方式
        

    4.封装数据到List集合中

        封装到List和封装到map和属性驱动---页面提供表达式很类似,都需要在action中提供一个List<User>(Map<String,User>)只是页面表达式不同
        

    5.封装数据到map中(hashmap)

        页面表达式中map的key可以随便取
        

原文地址:https://www.cnblogs.com/zy-Luo/p/11033135.html