zoukankan      html  css  js  c++  java
  • struts2深入浅出(二)

    今天内容
    1. 结果页面配置
    * 全局结果页面
    * 局部结果页面
    * result标签type属性
    2. 在action获取表单提交数据
    * 使用ActionContext类获取
    * 使用ServletActionContext
    * 使用接口注入方式获取
    3. struts2提供获取表单数据方式
    * 属性封装
    * 模型驱动封装
    4. struts2获取数据封装到集合中
    * 封装到list集合
    * 封装到map集合

    1. 结果页面配置
    * 全局结果页面:多个action的方法返回值相同,转发到的页面也相同,使用全局结果页面
    <global-results>
      <result name="success">/index.jsp</result>
    </global-results>
    * 局部结果页面:action里面的result就是局部结果页面
    * result标签type属性
    > 默认值:dispatcher 转发
    > 重定向:redirect
    > 转发到action:chain(一般不用,有缓存问题)
    > 重定向到action:redirectAction

    2. 在action获取表单提交数据
    * 使用ActionContext类获取
      /**
      * 使用ActionContext类获取
      */
      //获取ActionContext对象
      ActionContext ac = ActionContext.getContext();
      //调用方法得到表单数据 key是表单输入项name属性值,value是输入的值
      Map<String, Object> map = ac.getParameters();

      Set<String> keys = map.keySet();
      for (String key : keys) {
      Object[] obj = (Object[]) map.get(key);
      System.out.println(Arrays.toString(obj));
      }
    * 使用ServletActionContext
      /**
      * 使用ServletActionContext类获取
      */
      HttpServletRequest request = ServletActionContext.getRequest();
      String username = request.getParameter("username");
      String password = request.getParameter("password");

      System.out.println(username+":"+password);
      return NONE;
    * 使用接口注入方式获取
      实现ServletContextAware接口(一般不用)

    3. struts2提供获取表单数据方式
    * 属性封装:直接把表单提交的数据封装到action的属性里面(不能直接封装到实体类)
      1)在action成员变量位置定义与表单属性name值一样
      2)生成get set方法
    * 模型驱动封装(重点)
      1)action实现接口 ModelDriven
      2)需要有实体类
      public class Form3Action extends ActionSupport implements ModelDriven<User>{
      User user = new User();
      @Override
      public User getModel() {
      return user;
      }
      public String execute(){
      System.out.println(user);
      return NONE;
      }
      3)注意:
        > 在一个action中不能同时使用模型驱动和属性封装两种,如果同时使用,执行模型驱动
    * 表达式封装(会用,有的书里也将此种封装归为属性封装)
      1)在action里面声明实体类
      2)生成实体类变量的set和get方法
      3)在表单输入项的name属性值里面写表达式形式 user.username
      public class Form4Action extends ActionSupport {
      //声明实体类
      private User user;
      //生成实体类set get方法
      public User getUser() {
      return user;
      }

      public void setUser(User user) {
      this.user = user;
      }
      @Override
      public String execute() throws Exception {
      System.out.println(user);
      return NONE;
      }
    * 比较表达式封装和模型驱动封装
      1)不同点:模型驱动只能把数据封装到一个实体类对象里面,表达式封装可以封装到不同对象里面

    4. struts2获取数据封装到集合中
    * 封装到list集合
      在action声明list集合生成set get方法 在表单用 List[0].username

    * 封装到map集合
      声明map集合,生成get set方法,在表单输入项的name属性值里面写表达式 map['one'].username

  • 相关阅读:
    SQL获得表的行数
    sql server2008用ip远程连接
    sql设置字段默认值
    用c# 实现设计器 DesignSurface<转>
    DSOFramer.ocx 控件使用<转>
    浅谈JavaScript编程语言的编码规范<转>
    主要是取得2個Collection 裏,相同、相異、聯集的部份<转>
    VS2008无法切换到视图设计器
    使用HttpModule来禁用Web表单重复提交<转>
    WebIM组件设计<转>
  • 原文地址:https://www.cnblogs.com/stefan95/p/7871420.html
Copyright © 2011-2022 走看看