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>
Struts2中ModelDriven的陷阱及其预防的更多相关文章
- Struts2中ModelDriven的使用
它是Struts2种独有的一种接收用户输入的机制,想在项目中使用模型驱动 (ModelDriven)需要让Action实现com.opensymphony.xwork2.ModelDriven 接口, ...
- struts2中的ModelDriven使用
http://www.cnblogs.com/Topless/archive/2012/01/17/2324980.html 例子都为struts2中的文档例子 JSP提交数据: <s:fo ...
- struts2中的jsp值传到后台action接收的三种方法
struts2中的Action接收表单传递过来的参数有3种方法: 如,登陆表单login.jsp: <form action="login" method="pos ...
- 简单理解Struts2中拦截器与过滤器的区别及执行顺序
简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...
- struts2中jsp前台传值到后台action的方法(转)
在Struts2中jsp前台传值到action后台的方法 分类: java2012-02-28 13:58 2171人阅读 评论(1) 收藏 举报 actionstrutsjspgetterstrin ...
- Struts2中Action取得表单数据的几种方法
Struts2中Action取得表单数据的几种方法 Struts2中Action获得表单数据的几种方法struts2 Action获取表单传值 1.通过属性驱动式JSP: <form act ...
- Struts2中的 配置文件
struts2中涉及到的配置文件有: web.xml.struts.xml.struts.properties.default.properties.struts-default.xml web.xm ...
- Struts2中的类型转换
1. Struts2中的类型转换 我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种.所以,我们需要类型转换! 在Struts2中,类型转换的概 ...
- Struts2中有关struts-default.xml,struts.xml,struts.properties文件详解
1) struts-default.xml 这个文件是struts2框架默认加载的配置文件.它定义struts2一些核心的bean和拦截器. <?xml version="1.0&qu ...
随机推荐
- bzoj 2938 AC自动机
根据题意建出trie图,代表单词的点不能走,直接或间接指向它的点也不能走.这样的话如果能在图中找到一个环的话就是TAK,否则是NIE. #include<iostream> #includ ...
- 【BZOJ-4548&3658】小奇的糖果&Jabberwocky 双向链表 + 树状数组
4548: 小奇的糖果 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 103 Solved: 47[Submit][Status][Discuss] ...
- 【BZOJ-3675】序列分割 DP + 斜率优化
3675: [Apio2014]序列分割 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 1420 Solved: 583[Submit][Statu ...
- 【poj1020】 Anniversary Cake
http://poj.org/problem?id=1020 (题目链接) 题意 有一个S*S的大蛋糕,还有许多正方形的小蛋糕,问能否将大蛋糕完整的分成所有的小蛋糕,不能有剩余. Solution 像 ...
- codeforces 723F : st-Spanning Tree
Description There are n cities and m two-way roads in Berland, each road connects two cities. It is ...
- Windows Server 2012及以上安装IIS的步骤
已经和2008安装时有着明显区别,如题的安装步骤如下: 这里需要注意的是,选择了[Web 服务器(IIS)支持]后可能会弹出选择的界面,到时也一起全选,这里由于是已经安装了,所以没弹出. 说明:上面根 ...
- HTTP 长连接和短连接
1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.IP协议主要解决网络路由和寻址问 ...
- [NOIP2014] 提高组 洛谷P2312 解方程
题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...
- Node 连接Mysql并进行增删改查
NPM: NPM的全称是Node Package Manager,类似于ruby的gem,Python的PyPL.setuptools,PHP的pear,是Nodejs中的包管理器.Nodejs自身提 ...
- yield和python(如何生成斐波那契數列)
您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ? 我们先抛开 generator,以一个常见的编程题目来展示 yield ...