zoukankan      html  css  js  c++  java
  • Struts2中ModelDriven的陷阱及其预防

    页面表单

    <form action="updateInput.action" method="post">
        <input type="text" name="id"/>
        <input type="submit" value="查询">
    </form>

    struts.xml配置

    <action name="updateInput" class="com.test.UserAction" method="updateInput">
        <result name="update_input">user_update.jsp</result>
    </action>

    com.test.UserAction

    public class UserAction implements ModelDriven {
     
        private User user;
     
        @Override
        public Object getModel() {
            if (user == null) {
                user = new User();
            }
            return user;
        }
     
        public String updateInput() {
            //测试ModelDriven陷阱
            // 根据ID,查询数据库,得到User对象
            Object object = ActionContext.getContext().getValueStack().findValue("#root");
            Connection connection = DBConnection.getConnection();
            PreparedStatement preparedStatement = null;
            ResultSet resultSet = null;
            User user1 = null;
            try {
                System.out.println("查询用户信息");
                preparedStatement = connection
                        .prepareStatement("select * from t_user where id = ?");
                preparedStatement.setInt(1, user.getId());
                resultSet = preparedStatement.executeQuery();
                 
                if (resultSet.next()) {
                    user1 = new User();
                    user1.setId(resultSet.getInt("id"));
                    user1.setUsername(resultSet.getString("username"));
                    user1.setPassword(resultSet.getString("password"));
    //              user = user1;//这样写有问题
    //值栈中的user并没有引用user1,所以在页面上取值实际上并没有取到user1的值。
    //将user1的属性copy到user中之后,就可以在页面上取到值了。
                    BeanUtils.copyProperties(user, user1);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                DBConnection.close(resultSet, preparedStatement, connection);
            }
            return "update_input";
        }
    }

    user_update.jsp

    <form action="user_update.action" method="post">
            <input type="hidden" name="method:update">
            id:<input type="text" name="id" value="<s:property value="id"/>"> <br/>
            username:<input type="text" name="username" value="<s:property value="username"/>"> <br/>
            password:<input type="text" name="password" value="<s:property value="password"/>"> <br/>
            <input type="submit" name="submit" value="更新用户">
    </form>


  • 相关阅读:
    Quartus II -----破解
    博客诞生
    OpenMPI 学习笔记(一)并行计算机和分布式计算
    信息安全(1):安全策略
    认证
    SSL/TLS 和Https
    IPSec 网络协议安全
    C# 快速高效率复制对象另一种方式 表达式树
    C语言学习指针和数组2
    C语言学习二维数组
  • 原文地址:https://www.cnblogs.com/umgsai/p/3908072.html
Copyright © 2011-2022 走看看