zoukankan      html  css  js  c++  java
  • Struts2学习笔记整理(二)

    这里是重点.

    Action接口

    • struts2 的Action可以是POJO
    • 为了让用户开发的Action更加规范struts2提供了一个Action接口

    ActionSupport基类

    • Struts2为Action接口提供了一个实现类 ActionSupport,定义了 表单域校验、错误信息设置和获得国际化信息相关一些方法

    我们写的action可以有以下几种选择:

    • Action 可以是 POJO
    • 用户编写Action 可以实现Action接口    可以使用结果集常量字符串
    • 用户编写Action 可以继承ActionSupport基类   对请求参数进行校验  设置错误信息 读取国际化信息 
    • execute方法编写注意细节   public 修饰符   String 返回值     无参数

    通过method属性指定action的执行方法

    • 没有指定method属性,默认执行execute方法
    • 通过method属性,指定调用Action相应方法处理请求

    使用通配符配置Action

    • 在配置<action...>元素时,允许在指定name属性时,使用模式字符串(用"*"代表一个或多个任意字符)
    • 在class、method属性及<result>子元素中通过 {N} 形式代表前面地N个* 匹配子串
    • 这里一个使用通配符的更复杂案例
    • *_*代表匹配两个字符串
    • {1} 匹配UserAction 用于执行class
    • {2} 匹配login用于指定method执行方法 和结果页面
     使用Action的动态方法调用
    • 通过url动态指定调用Action哪个方法而无需配置<action>的method属性
    • 通过 !方法名 指定调用Action哪个方法
    • struts.xml没有指定method属性
    • 但是product!add.action 就会执行ProductAction的add方法

    配置默认Action和 配置Action默认处理类

    • 用户可以为每个package定义一个默认的Action,如果访问路径在package没有匹配<action> 就会执行默认action
    • 如果配置<action> 没有指定class属性,就会执行Action的默认处理类,在struts-default.xml中
    配置处理结果
    • Action处理完用户请求后,将返回一个普通字符串
    • 整个普通字符串就是一个逻辑视图名
    • Struts2根据逻辑视图名,决定响应哪个结果
    • Struts2处理结果使用<result>元素配置局部结果:将<result>作为<action>子元素配置 全局结果:将<result>作为<global-results>元素的子元素配置
    • 配置<result>元素通常需要指定两个属性  name  该属性指定配置逻辑视图名    type  该属性指定结果类型
     全局结果

    当多个action中都使用到了相同result,这时我们应该把result定义为全局结果。struts1中提供了全局forward,struts2中也提供了相似功能:

    <package ....>

      <global-results>

      <result name="message">/message.jsp</result>

      </global-results>

    </package>

    注:局部的会覆盖全局

    Struts1中应用范围内action的实例 action是单实例(执行时,现在缓存中查找实例,有用,没有创建新的实例)

    Struts2中 应用范围内action的实例,每个请求都会创建一个action实例

    Servlet属于单实例多线程的应用,实例只在初始化时被加载

    多实例比单实例的优点,不会产生并发问题,但执行速度不如单实例

    重点结果类型(经常使用到的)

    • struts-default.xml 配置常用结果类型

    结果类型:  dispatcher

    • ldispatcher 结果类型是最常用的结果类型, 也是 struts 框架默认的结果类型
    • 该结果类型有一个 location 参数, 它是一个默认参数
    • ldispatcher 结果类型将把控制权转发给应用程序里的某个资源.
    • ldispatcher 结果类型不能把控制权转发给一个外部资源. 若需要把控制权重定向到一个外部资源, 应该使用 redirect 结果类型

    结果类型:  redirect

    • lredirect 结果类型将把响应重定向到另一个资源, 而不是转发给该资源.
    • lredirect 结果类型接受下面这些参数: location: 用来给出重定向的目的地  param: 用来表明是否把 location 参数的值视为一个 OGNL 表达式来解释. 默认值为 true
    • lredirect 结果类型可以把响应重定向到一个外部资源

    结果类型:  redirectAction

    • lredirectAction 结果类型把响应重定向到另一个 Action
    • redirectAction 结果类型接受下面这些参数  actionName: 指定 “目的地” 动作的名字. 它是默认属性     namespace: 用来指定 “目的地” 动作的命名空间. 如果没有配置该参数, Struts 会把当前 Action 所在的命名空间作为 “目的地” 的命名空间

    Struts2 Action接受请求参数

    • 作为MVC框架,必须要负责解析HTTP请求参数,并将其封装到Model对象中
    • Struts2提供了非常强大的类型转换机制用于请求数据 到 model对象的封装
    • Struts2 提供三种数据封装的方式  1Action 本身作为model对象,通过成员setter封装2创建独立model对象,页面通过ognl表达式封装3.使用ModelDriven接口,对请求数据进行封装

    Action类成员变量setter接收参数

    创建单独model对象,页面OGNL

     使用ModelDriven接口封装数据
  • 相关阅读:
    镜像切换Logreader Agent报错:分发数据库中可能存在不一致的状态(续)
    镜像切换Logreader Agent报错:分发数据库中可能存在不一致的状态
    SQL优化案例—— RowNumber分页
    SQL Server 服务器磁盘测试之SQLIO篇(二)
    SQL Server 服务器磁盘测试之SQLIO篇(一)
    SQL Server内存遭遇操作系统进程压榨案例
    git添加ssh公钥报错
    leetcode_1187. Make Array Strictly Increasing 使数组严格递增_[DP]
    leetcode_1293. Shortest Path in a Grid with Obstacles Elimination_[dp动态规划]
    leetcode_1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold_[二维前缀和]
  • 原文地址:https://www.cnblogs.com/daweige/p/8087045.html
Copyright © 2011-2022 走看看