zoukankan      html  css  js  c++  java
  • Struts2获取表单数据并封装到实体类的方法

    1.采用ActionContext对象的方式

    public String execute() throws Exception {
            // 获取ActionContext对象
            ActionContext context = ActionContext.getContext();
            // 获取参数Map对象
            Map<String, Object> map = context.getParameters();
            // 遍历Map集合
            Set<String> set = map.keySet();
            for (String key : set) {
                // 表单value值是Object数组,因为存在表单中多值的情况
                Object[] values = (Object[]) map.get(key);
                System.out.println(Arrays.toString(values));
            }
            return NONE;
        }

    2.采用ServletActionContext对象的方式

    public String execute() throws Exception {
            // 通过ServletActionContext对象得到HttpServletRequest对象
            HttpServletRequest request = ServletActionContext.getRequest();
            // 取值
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            String address = request.getParameter("address");
            // 创建User对象并复制进去
            return NONE;

    3.采用接口注入的方式

    public class TestAction3 extends ActionSupport implements ServletRequestAware {
        private HttpServletRequest request = null;
        public void setServletRequest(HttpServletRequest request) {
            // TODO Auto-generated method stub
            this.request = request;
        }
    
        @Override
        public String execute() throws Exception {
            // TODO Auto-generated method stub
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            String address = request.getParameter("address");
            System.out.println(username + ":" + password + ":" + address);
            return NONE;
        }

    4.采用属性封装

       表单数据

     <form action="${pageContext.request.contextPath }/form.action" method="post">
            用户名:<input type="text" name="username"/><br/>
            密 码:<input type="password" name="password"/><br/>
            地 址:<input type="text" name="address"/><br/>
            <input type="submit" value="提交"/>
        </form>

      声明表单属性,并生成set方法

       private String username;
        private String password;
        private String address;
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        public String execute() throws Exception {
            User user = new User();
            user.setUsername(username);
            user.setPassword(password);
            user.setAddress(address);
            return NONE;
        }

    5.模型驱动封装(重点)

    public class DemoAction1 extends ActionSupport implements ModelDriven<User> {
        private User user = new User();
    
        public User getUser() {
            return user;
        }
    
        @Override
        public User getModel() {
            // TODO Auto-generated method stub
            return user;
        }
    
        public String execute() throws Exception {
            System.out.println(user);
            return NONE;
        }
    }

    6.表达式封装

      表单数据,注意name属性值的写法,实体对象。属性名

     <form action="${pageContext.request.contextPath }/form.action" method="post">
            用户名:<input type="text" name="user.username"/><br/>
            密 码:<input type="password" name="user.password"/><br/>
            地 址:<input type="text" name="user.address"/><br/>
            <input type="submit" value="提交"/>
        </form>

      代码,注意生成实体类的set和get方法

        private User user;
    
        public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
    
        public String execute() throws Exception {
            System.out.println(user);
            return NONE;
        }

     7.List集合封装

          表单数据    [0]为list下标值

    <form action="${pageContext.request.contextPath }/form5" method="post">
              用户名:<input type="text" name="list[0].username"/><br/>
              密 码:<input type="password" name="list[0].password"/><br/>
              年 龄:<input type="text" name="list[0].age"/><br/>
              地 址:<input type="text" name="list[0].address"/><br/>
              <input type="submit" value="提交"/>
          </form>

      代码

        private List<User> list;
    
        public List<User> getList() {
            return list;
        }
    
        public void setList(List<User> list) {
            this.list = list;
        }
    
        @Override
        public String execute() throws Exception {
            // TODO Auto-generated method stub
            System.out.println(list);
            return NONE;
        }

    8.Map集合封装

      页面   'one'为键

        <form action="${pageContext.request.contextPath }/form6" method="post">
              用户名:<input type="text" name="map['one'].username"/><br/>
              密 码:<input type="password" name="map['one'].password"/><br/>
              年 龄:<input type="text" name="map['one'].age"/><br/>
              地 址:<input type="text" name="map['one'].address"/><br/>
              <input type="submit" value="提交"/>
          </form>

      代码

        private Map<String, User> map;
        
        public Map<String, User> getMap() {
            return map;
        }
    
        public void setMap(Map<String, User> map) {
            this.map = map;
        }
    
        @Override
        public String execute() throws Exception {
            // TODO Auto-generated method stub
            System.out.println(map);
            return NONE;
        }
  • 相关阅读:
    将.net core api 部署成windows服务
    根据2个经纬度点,计算这2个经纬度点之间的距离(通过经度纬度得到距离)
    .NET 基础知识 单文件部署和可执行文件 剪裁独立部署和可执行文件
    通过 InnoSetup 美化安装界面
    拼凑一个ABP VNext管理后台拼凑一个ABP VNext管理后台
    互联网软件的安装包界面设计Inno setup
    weinre  远程实时调试手机上的Web页面 JAVASCRIPT远程调试
    asp.net core web应用以服务的方式安装运行
    用 vue2 和 webpack 快速建构 NW.js 项目
    谷歌插件抓包 similarweb抓包
  • 原文地址:https://www.cnblogs.com/keep-258764547/p/6552915.html
Copyright © 2011-2022 走看看