• 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;
        }
  • 相关阅读:
    python
    python
    打开python自带IDLE出的问题
    Python GUI编程(Tkinter)8、CheckButton多选框控件
    Python GUI编程(Tkinter)7、带滚动条的Text
    Python GUI编程(Tkinter)6、Text控件
    Python GUI编程(Tkinter)5、点击按钮输出输入框中的内容
    Python GUI编程(Tkinter)4、Entry控件
    Python GUI编程(Tkinter)3、Button控件
    Python GUI编程(Tkinter)2、Label控件
  • 原文地址:https://www.cnblogs.com/keep-258764547/p/6552915.html
Copyright © 2020-2023  润新知