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+"\t密码:"+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()+"\t密码:"+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()+"\t密码:"+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;
    }
}
时间: 2024-08-26 18:39:19

struts2 之 struts2数据处理的相关文章

16.如何自学Struts2之Struts2异常处理[视频]

16.如何自学Struts2之Struts2异常处理[视频] 之前写了一篇"打算做一个视频教程探讨如何自学计算机相关的技术",优酷上传不了,只好传到百度云上: http://pan.baidu.com/s/1kTDsa95 有问题可以直接回复这篇文章.

17.如何自学Struts2之Struts2 Annotation注释[视频]

17.如何自学Struts2之Struts2 Annotation注释[视频] 之前写了一篇"打算做一个视频教程探讨如何自学计算机相关的技术",优酷上传不了,只好传到百度云上: http://pan.baidu.com/s/1kTDsa95 有问题可以直接回复这篇文章.

13.如何自学Struts2之Struts2本地化[视频]

13.如何自学Struts2之Struts2本地化[视频] 之前写了一篇"打算做一个视频教程探讨如何自学计算机相关的技术",优酷上传不了,只好传到百度云上: http://pan.baidu.com/s/1kTDsa95 这节课讲的过程中碰到了些问题,同时处理问题费了些时间,有问题可以直接回复这篇文章. 碰到问题:不能显示本地化的字符 解决方案:之前在Tomcat8.0的properties文件放在src下是可以的,但是在我本机用Tomcat7.0不知道为什么就不行,只要尝试放在Web

11.如何自学Struts2之Struts2验证[视频]

11.如何自学Struts2之Struts2验证[视频] 之前写了一篇"打算做一个视频教程探讨如何自学计算机相关的技术",优酷上传不了,只好传到百度云上: http://pan.baidu.com/s/1kTDsa95 这节课讲的过程中碰到了些问题,同时处理问题费了些时间,有问题可以直接回复这篇文章. 错误1:http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd - Class: sun.net.www.protocol

18.如何自学Struts2之Struts2标签和集成初略总结篇

18.如何自学Struts2之Struts2标签和集成初略总结篇[视频] 之前写了一篇"打算做一个视频教程探讨如何自学计算机相关的技术",优酷上传不了,只好传到百度云上: http://pan.baidu.com/s/1kTDsa95 有问题可以直接回复这篇文章.

【struts2】struts2的execAndWait拦截器使用

使用execAndWait拦截器可以在等待较长时间的后台处理中增加等待页面.实现如下图所示的效果: 1)struts.xml主要部分 <action name="test" class="actions.ActionDemo" method="queryall"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="

14.怎样自学Struts2之Struts2类型转换[视频]

14.怎样自学Struts2之Struts2类型转换[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: http://pan.baidu.com/s/1kTDsa95 有问题能够直接回复这篇文章.

如何自学Struts2之Struts2发送邮件[视频]

如何自学Struts2之Struts2发送邮件[视频] 之前写了一篇"打算做一个视频教程探讨如何自学计算机相关的技术",优酷上传不了,只好传到百度云上: http://pan.baidu.com/s/1kTDsa95 这节课讲得比较快,有问题可以直接回复这篇文章.

【struts2】Struts2的异常处理

在Action中execute方法声明为:public String execute() throws Exception,这样,Action可以抛出任何Exception. 1)自己实现异常处理 我们还以helloWorldAction为例,在Action的execute方法中这样写: public String execute() throws Exception { int a=5/0; this.businessExecute(); return "toWelcome"; }

13.怎样自学Struts2之Struts2本地化[视频]

13.怎样自学Struts2之Struts2本地化[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了,仅仅好传到百度云上: http://pan.baidu.com/s/1kTDsa95 这节课讲的过程中碰到了些问题,同一时候处理问题费了些时间,有问题能够直接回复这篇文章. 碰到问题:不能显示本地化的字符 解决方式:之前在Tomcat8.0的properties文件放在src下是能够的.可是在我本机用Tomcat7.0不知道为什么就不行.仅仅要尝试放