• 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可以随便取
            

  • 相关阅读:
    Windows:生成环境Word,PPT,EXCEL com+组件配置
    Win10 计算机管理 打不开应急办法
    Js:弹窗剧中
    Asp.net跨域配置
    Centos6系列安装nginx
    Win_oracle_exp/expdp备份
    MSSQL:查看某个账号使用得数据库
    MSSQL:查看作业情况
    MSSQL:账号无法删除方案
    MSSQL:删除系统作业计划
  • 原文地址:https://www.cnblogs.com/zy-Luo/p/11033135.html
Copyright © 2020-2023  润新知