页面表单

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

struts.xml配置

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

com.test.UserAction

  1. public class UserAction implements ModelDriven {
  2.  
  3. private User user;
  4.  
  5. @Override
  6. public Object getModel() {
  7. if (user == null) {
  8. user = new User();
  9. }
  10. return user;
  11. }
  12.  
  13. public String updateInput() {
  14. //测试ModelDriven陷阱
  15. // 根据ID,查询数据库,得到User对象
  16. Object object = ActionContext.getContext().getValueStack().findValue("#root");
  17. Connection connection = DBConnection.getConnection();
  18. PreparedStatement preparedStatement = null;
  19. ResultSet resultSet = null;
  20. User user1 = null;
  21. try {
  22. System.out.println("查询用户信息");
  23. preparedStatement = connection
  24. .prepareStatement("select * from t_user where id = ?");
  25. preparedStatement.setInt(1, user.getId());
  26. resultSet = preparedStatement.executeQuery();
  27.  
  28. if (resultSet.next()) {
  29. user1 = new User();
  30. user1.setId(resultSet.getInt("id"));
  31. user1.setUsername(resultSet.getString("username"));
  32. user1.setPassword(resultSet.getString("password"));
  33. // user = user1;//这样写有问题
  34. //值栈中的user并没有引用user1,所以在页面上取值实际上并没有取到user1的值。
  35. //将user1的属性copy到user中之后,就可以在页面上取到值了。
  36. BeanUtils.copyProperties(user, user1);
  37. }
  38. } catch (Exception e) {
  39. e.printStackTrace();
  40. }finally{
  41. DBConnection.close(resultSet, preparedStatement, connection);
  42. }
  43. return "update_input";
  44. }
  45. }

user_update.jsp

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

Struts2中ModelDriven的陷阱及其预防的更多相关文章

  1. Struts2中ModelDriven的使用

    它是Struts2种独有的一种接收用户输入的机制,想在项目中使用模型驱动 (ModelDriven)需要让Action实现com.opensymphony.xwork2.ModelDriven 接口, ...

  2. struts2中的ModelDriven使用

    http://www.cnblogs.com/Topless/archive/2012/01/17/2324980.html 例子都为struts2中的文档例子 JSP提交数据:   <s:fo ...

  3. struts2中的jsp值传到后台action接收的三种方法

    struts2中的Action接收表单传递过来的参数有3种方法: 如,登陆表单login.jsp: <form action="login" method="pos ...

  4. 简单理解Struts2中拦截器与过滤器的区别及执行顺序

    简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...

  5. struts2中jsp前台传值到后台action的方法(转)

    在Struts2中jsp前台传值到action后台的方法 分类: java2012-02-28 13:58 2171人阅读 评论(1) 收藏 举报 actionstrutsjspgetterstrin ...

  6. Struts2中Action取得表单数据的几种方法

    Struts2中Action取得表单数据的几种方法   Struts2中Action获得表单数据的几种方法struts2 Action获取表单传值 1.通过属性驱动式JSP: <form act ...

  7. Struts2中的 配置文件

    struts2中涉及到的配置文件有: web.xml.struts.xml.struts.properties.default.properties.struts-default.xml web.xm ...

  8. Struts2中的类型转换

    1.     Struts2中的类型转换 我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种.所以,我们需要类型转换! 在Struts2中,类型转换的概 ...

  9. Struts2中有关struts-default.xml,struts.xml,struts.properties文件详解

    1) struts-default.xml 这个文件是struts2框架默认加载的配置文件.它定义struts2一些核心的bean和拦截器. <?xml version="1.0&qu ...

随机推荐

  1. bzoj 2938 AC自动机

    根据题意建出trie图,代表单词的点不能走,直接或间接指向它的点也不能走.这样的话如果能在图中找到一个环的话就是TAK,否则是NIE. #include<iostream> #includ ...

  2. 【BZOJ-4548&3658】小奇的糖果&Jabberwocky 双向链表 + 树状数组

    4548: 小奇的糖果 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 103  Solved: 47[Submit][Status][Discuss] ...

  3. 【BZOJ-3675】序列分割 DP + 斜率优化

    3675: [Apio2014]序列分割 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 1420  Solved: 583[Submit][Statu ...

  4. 【poj1020】 Anniversary Cake

    http://poj.org/problem?id=1020 (题目链接) 题意 有一个S*S的大蛋糕,还有许多正方形的小蛋糕,问能否将大蛋糕完整的分成所有的小蛋糕,不能有剩余. Solution 像 ...

  5. codeforces 723F : st-Spanning Tree

    Description There are n cities and m two-way roads in Berland, each road connects two cities. It is ...

  6. Windows Server 2012及以上安装IIS的步骤

    已经和2008安装时有着明显区别,如题的安装步骤如下: 这里需要注意的是,选择了[Web 服务器(IIS)支持]后可能会弹出选择的界面,到时也一起全选,这里由于是已经安装了,所以没弹出. 说明:上面根 ...

  7. HTTP 长连接和短连接

    1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.IP协议主要解决网络路由和寻址问 ...

  8. [NOIP2014] 提高组 洛谷P2312 解方程

    题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...

  9. Node 连接Mysql并进行增删改查

    NPM: NPM的全称是Node Package Manager,类似于ruby的gem,Python的PyPL.setuptools,PHP的pear,是Nodejs中的包管理器.Nodejs自身提 ...

  10. yield和python(如何生成斐波那契數列)

    您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ? 我们先抛开 generator,以一个常见的编程题目来展示 yield ...