zoukankan      html  css  js  c++  java
  • struts2 之 struts2数据处理

    开门见山,struts2的数据处理总结:

    1. 在servlet中,如果要获取页面提交的数据要使用requerst.getParameter方法来获取,并且每次需要进行相关的类型转换工作,数据的获取及转换工作比较简单,并且是重复的操作,在struts2中提供了一种比较优秀的方式来接收和转换数据。

    2. 获取表单中的数据可以有多种方式:

      (1)属性驱动方式

      (2)对象驱动方式

      (3)模型驱动方式

    3. 属性驱动:页面表单中表单域的名称和action的属性一致,并且在action中提供属性的get/set方法,那么struts2会自动将数据设置到action的属性上,在处理方法中可以直接获取表单值。为action的属性设置了get方法,那么在页面中就可以通过el表达式获取属性值。


    实例:

    jsp页面:

    <form action="login.action" method="post">
        username:<input type="text" name="username"/><br>
        password:<input type="password" name="password"/><br>
        <input type="submit" value="login"/>
        </form>

    Action处理类:

    public class UserAction {
        private String username;
        private String password;
        //登录处理方法
        public String login(){
            System.out.println("用户名:"+username+"	密码:"+password);
            if("siggy".equals(username)&&"1111".equals(password)){
                //登录成功
                /**
                 * Action.SUCCESS="success"; 表示action执行成功,并且需要展示页面
                 * Action.NONE="none";表示action执行成功,不需要视图展示页面
                 * Action.ERROR="error";表示action执行失败,需要一个失败页面进行展示
                 * Action.INPUT="input";表示如果action要执行成功,需要更多的输入信息。
                 * Action.LOGIN="login";表示需要用户登录方可访问
                 */
                
                //return "success";
                return Action.SUCCESS;
            }
            return "login";
        }
        
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
    }

    4. 对象驱动:在action类中,将对象设置属性,并且提供get/set方法。在页面中表单域名称是action类中对象的 对象名.属性。在对象类中提供对应属性的get/set方法即可。这样在action的处理类获取的将会是对象。

    优点:不用在处理类中封装对象

    缺点:jsp中表单域名称有重复的地方

    实例如:

    Vo类:

    public class User {
        private String name;
        private String pwd;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getPwd() {
            return pwd;
        }
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
    }

    Action 处理类:

    public class UserObjectAction {
        private User user;
        public String login(){
            System.out.println("用户名:"+user.getName()+"	密码:"+user.getPwd());
            if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){
                return Action.SUCCESS;
            }
            return "login";
        }
        public User getUser() {
            return user;
        }
        public void setUser(User user) {
            this.user = user;
        }
    }

    jsp页面:

    <form action="loginObject.action" method="post">
        username:<input type="text" name="user.name"/><br>
        password:<input type="password" name="user.pwd"/><br>
        <input type="submit" value="login"/>
        </form>

    5. 模型驱动:由于对象驱动在页面中有重复的代码,当类的属性比较多时,开发效率比较低。模型驱动使得页面的表单域名称和类的属性名一致,action处理类需要实现ModelDriven接口即可。

    实例如:

    jsp页面:

    <form action="loginModel.action" method="post">
        username:<input type="text" name="name"/><br>
        password:<input type="password" name="pwd"/><br>
        <input type="submit" value="login"/>
        </form>

    Vo类:

    public class User {
        private String name;
        private String pwd;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getPwd() {
            return pwd;
        }
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
    }

    Action处理类:

    public class UserModelAction implements ModelDriven<User>{
        private User user;
        public String login(){
            System.out.println("用户名:"+user.getName()+"	密码:"+user.getPwd());
            if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){
                return Action.SUCCESS;
            }
            return "login";
        }
        public User getModel() {
            return user = new User();
        }
        public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
    }
  • 相关阅读:
    BEC listen and translation exercise 44
    中译英12
    BEC listen and translation exercise 43
    中译英11
    BEC listen and translation exercise 42
    中译英10
    BEC listen and translation exercise 41
    中译英9
    BEC listen and translation exercise 40
    中译英8
  • 原文地址:https://www.cnblogs.com/forever2h/p/6708250.html
Copyright © 2011-2022 走看看