struts2 的传值到后台

struts2 中的两种传值方式:
    1.属性驱动传值
    2.模型驱动传值


模型驱动传值(小小例子):

    在struts2模型驱动可以封装用户请求的参数, 还可以封装Action 的处理结果

  <body>
    <div class="newsmain">
        <div class="register">
        <form action="register.action" method="post" name="form">
            <label>用户名:</label><input type="text" id="username" name="username"/><span id="userMsg">${model.username}</span><br/>
            <label>密码:</label><input type="password" id="password1" name="password1"/><span id="pwdMsg1">${model.password}</span><br/>
            <input type="submit" value="登录"/>
        </form>
      </div>
    </div>
  </body>
在这里将LoginAction  分为了两部分  UserDTO 属性  和 LoginAction 执行(struts2 这建议使用合在一起写,它说可以减少一个类。但是,为了方便理解合适分开写)
UserDTO 封装了页面的属性值

package com.yinhe.modeldriven;
public class UserDTO {
    private String username;
    private String password1;
    
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword1() {
        return password1;
    }
    public void setPassword1(String password1) {
        this.password1 = password1;
    }
}
LoginAction类

package com.yinhe.services.useraction;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.yinhe.dao.UserDao;
import com.yinhe.jdbc.JDBC;  //数据库的连接为写
import com.yinhe.modeldriven.UserDTO;
@SuppressWarnings("serial")
public class LoginAction extends ActionSupport implements ModelDriven<UserDTO>{ //实现 ModelDriven 接口 ,该接口实现getModel()方法
    private UserDTO userm = new UserDTO();
    public String execute() throws Exception {
        UserDao ud = new UserDao();
        if(ud.addUser(new JDBC().getConn(), this.getModel())){
            return SUCCESS;
        }
        return ERROR;
    }
    public UserDTO getModel() {
        return this.userm; //让页面通过标签取值
    }
}
//要使用的方法
package com.yinhe.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.yinhe.modeldriven.UserDTO;
public class UserDao {   
    private PreparedStatement pstm;
    private ResultSet rs;
    private boolean falg = false;
    /**
     * 添加用户信息的方法                     
     * @param conn 得到Connection 连接
     * @param ls 用户的属性(UserDTO)
     * @return falg: true--添加用户成功; false--添加用户失败
     */
    public boolean addUser(Connection conn, UserDTO ls){
        String sql = "insert into tb_user(useruname,userpwd) values(?,?)";
        try {
            pstm = conn.prepareStatement(sql);
            pstm.setString(1, ls.getUsername());
            pstm.setString(2, ls.getPassword1());
            int i = pstm.executeUpdate();
            if(i > 0){
                falg = true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return falg;
    }
}
struts.xml 中的配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
        <package name="str2register" extends="struts-default" namespace="/">
            <action name="register" class="com.yinhe.services.useraction.LoginAction">
                <result name="success">/success.jsp</result>
                 <result name="input">/register.jsp</result>
                <result name="error">/error.jsp</result>
            </action>
        </package>
    </struts>


二: 将属性和执行都放在同一个java类中


package com.yinhe.services.useraction;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.yinhe.dao.UserDao;
import com.yinhe.jdbc.JDBC;  //数据库的连接为写
import com.yinhe.modeldriven.UserDTO;
@SuppressWarnings("serial")
public class LoginAction extends ActionSupport{ //实现 ModelDriven 接口 ,该接口实现getModel()方法
    private String username;
    private String password1;
    
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword1() {
        return password1;
    }
    public void setPassword1(String password1) {
        this.password1 = password1;
    }
    public String execute() throws Exception {
        UserDao ud = new UserDao();
        if(ud.addUser(new JDBC().getConn(), this)){ //将自己传进去
            return SUCCESS;
        }
        return ERROR;
    }
}    
//要使用的方法
package com.yinhe.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.yinhe.modeldriven.UserDTO;
public class UserDao {   
    private PreparedStatement pstm;
    private ResultSet rs;
    private boolean falg = false;
    /**
     * 添加用户信息的方法                     
     * @param conn 得到Connection 连接
     * @param ls 用户的属性(UserDTO)
     * @return falg: true--添加用户成功; false--添加用户失败
     */
    public boolean addUser(Connection conn, ActionSupport as){
        String sql = "insert into tb_user(useruname,userpwd) values(?,?)";
        try {
            pstm = conn.prepareStatement(sql);
            pstm.setString(1, ls.getUsername());
            pstm.setString(2, ls.getPassword1());
            int i = pstm.executeUpdate();
            if(i > 0){
                falg = true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return falg;
    }
}

struts.xml 中的配置不变



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值