5、struct2的支持ModelDriver获得参数

1、在以前的代码中我们我们需要获得jsp传递过来的参数我们采用下面的方式获得

复制代码
package com.weiyuan.test;

/**
 * struct2的action可以不继承任何框架的接口
 * 1、默认调用的是execute()方法
 * */
public class LoginAction {
    private String username;
    private String password;
    
    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;
    }

    public String execute() throws Exception{
        System.out.println("execute is called");
        System.out.println("execute is called" +username);
        System.out.println("execute is called"+password);
        if("admin".equals(username)&&"admin".equals(password)){
            return "success";
        }else{
            return "error";
        }
    }

}
复制代码

这样存在不好的问题,action做好处理业务类,不要把bean对象的操作放在action中,我们可以采用ModelDriver驱动模式,让action集成ModelDriver来实现

 我们新建立一个实体类User对象

复制代码
package com.weiyuan.test;

public class User {

    private String username;
    private String password;
    
    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;
    }
}
复制代码

 

然后修改我们的action,需要实现ModelDriver接口

复制代码
package com.weiyuan.test;

import com.opensymphony.xwork2.ModelDriven;

/**
 * struct2的action可以不继承任何框架的接口
 * 1、默认调用的是execute()方法
 * */
public class LoginAction  implements ModelDriven<User>{

     private User user;
    
    public String execute() throws Exception{
        System.out.println("execute is called");
        if("admin".equals(getModel().getUsername())&&"admin".equals(getModel().getPassword())){
            return "success";
        }else{
            return "error";
        }
    }

    @Override
    public User getModel() {
        // TODO Auto-generated method stub
        if(user  == null){
            user = new User();
        }
        return user;
    }

}
复制代码

 

这样就可以了

总结:

Struts2对ModelDriven模式的支持

Struts2可以采用类似于Struts1中的ActionForm方式收集数据,这样方式叫ModelDriven模式

如何实现模型驱动模式?
* 创建User
* Action需要实现ModelDriven接口

 

posted on   luzhouxiaoshuai  阅读(144)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示