struts2 中属性驱动(其实就是struts2 action 中处理 request 的参数【old 方式servlet api 封装数据到javabean中(or beanutils)】),这里属性驱动是新方式
1、属性驱动
a\ 一般的set
public class UserAction extends ActionSupport {
private String username;
private String password;
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String execute() throws Exception {
System.out.println("username:" + username + "----password:" + password);
return NONE;
}
}
set 方式
页面层:
<form action="${pageContext.request.contextPath}/user.action" method="post">
用户名
<input type="text" name="username" />
<br />
密码
<input type="password" name="password" />
<br />
<input type="submit" value="提交" />
</form>
jsp 页面
b\ognl 方式实现
<form action="${pageContext.request.contextPath}/user2.action" method="post">
用户名
<input type="text" name="user.username" />
<br />
密码
<input type="password" name="user.password" />
<br />
<input type="submit" value="提交" />
</form>
jsp页面
action端:
public class User2Action extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
System.out.println(user.toString());
return NONE;
}
}
action 端
Struts2的参数的封装分成两类:
* 属性驱动:
* 模型驱动:
属性驱动:
一、提供属性的set方法,封装参数:(属性驱动)
页面:
用户名:<input type="text" name="username"><br/>
Action:
public class ParamAction1 extends ActionSupport{
private String username;
public void setUsername(String username) {
this.username = username;
}
}
问题一:在Action中提供了全局变量,Action是线程安全的还是不安全?
* 提供了全局变量,如果是线程不安全的,全局变量就会有线程安全问题存在.测试提供一个构造方法.发现每次请求都会创建一个Action的实例.说明Action是多实例.不会有线程安全问题.
问题二:参数封装是由谁完成的?
* <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
这种方式不是特别好!封装的是单个属性,需要自己收到封装到一个JavaBean对象中.传递给业务层.
二、通过OGNL表达式的写法封装参数:(属性驱动)
页面:
用户名:<input type="text" name="user.username"><br/>
Action:
public class ParamAction2 extends ActionSupport{
private User user;
public void setUser(User user) {
this.user = user;
}
public User getUser() {
return user;
}
}
***** OGNL表达式封装,后台Action中提供一个对象的set和get方法.必须提供get方法.get获得到框架创建的对象.(将封装封装到不同的对象中.)
struts2 中属性驱动(其实就是struts2 action 中处理 request 的参数【old 方式servlet api 封装数据到javabean中(or beanutils)】),这里属性驱动是新方式的更多相关文章
- php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中
php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中 1.phalcon框架的安装: phalcon框架在windows本地安装可以利用wamp软件,安装之后可以查看对应 ...
- Kettle系列:使用Kudu API插入数据到Kudu中
本文详细介绍了在Kettle中使用 Kudu API将数据写入Kudu中, 从本文可以学习到:1. 如何编写一个简单的 Kettle 的 Used defined Java class.2. 如何读取 ...
- 映射Xml文件中的数据到JavaBean中
使用Java原生的javax.xml.bind包下的JAXBContext将一个Xml文件中的数据映射到一个JavaBean中 import java.io.File; import java.io. ...
- Struts2(八)访问Servlet API
一.Struts2中的Servlet API 1.1.struts2的Action实现了MVC中C层的作用 针对请求用户显示不同的信息 登录后段保存用户信息 ----session 保存当前在线人数等 ...
- Action访问Servlet API
访问Servlet API 1.通过ActionContent类访问Servlet API ActionContext中访问Servlet API的几个常用的方法: (1)Map getApplica ...
- 【JSP/Servlet】后台如何获取复选框或可选属性的同名参数
感觉自己jsp/servlet部分学的太差了--今天突然想到还有这种操作,遂分享之 比如有些时候我们需要使用复选框发送同名数据的时候,后台接收参数是个麻烦事,还有可选属性也是如此 有丰富经验的会想到a ...
- pandas,读取或存储DataFrames的数据到mysql中
dataFrames格式的数据是表格形式的,mysql数据库中的数据也是表格形式的,二者可以很方便的读取存储 安装依赖的包 pip install pandas pip install sqlal ...
- struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用
Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...
- [转]Struts2理解--动态方法和method属性及通配符_默认Action
众所周知,默认条件下,在浏览器输入indexAction!execute.action,便会执行indexAction类里的execute方法,这样虽然方便,但可能带来安全隐患,通过url可以执行Ac ...
随机推荐
- Saltstack pillar组件
pillar组件 pillar也是Saltstack最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板.state.API等.在pillar中定义的数据与 ...
- 解决umount.nfs: /data: device is busy 问题
有时候我们需要umount某个挂载目录时会遇到如下问题: [root@localhost /]# umount /data/ umount.nfs: /data: device is busy 通过这 ...
- HttpHandler过滤请求..
记得以前写过一篇..后来找不到了..我自己也忘记怎么弄了.. 在网上找了很多的教程..写的总有瑕疵..感觉不顺畅.. 自己来一篇.. 其实很简单.. 先建立一个类 继承并实现接口 IHttpHand ...
- Thinkphp 模板中直接对数据处理 模板中使用函数 中文字符串截取
1.Thinkphp 模板中直接对数据处理:{$data.name|substr=0,3} 2.中文字符串截取函数:mb_substr=0,14,'utf-8' 3.中文字符串统计:iconv_str ...
- VS2015新建asp.net core站点
摘要 电脑上安装了vs2015,今天就尝尝鲜,新建一个项目试试. BBS 使用vs2015新建一个解决方案,然后新建项目,此时你会发现没有asp.net core项目,这就需要先安装asp.net c ...
- 百万级数据查询到datatable中,提示内存溢出
参考资料: http://group.cnblogs.com/topic/32230.html
- VS2010webConfig配置
1.连接SqlServer数据库 <connectionStrings> <add name="ConnectionStringName" connectionS ...
- 配置 nginx server 出现nginx: [emerg] "root" directive is duplicate in /etc/nginx/server/blogs.conf:7
在配置nginx 虚拟机时,执行 sudo /usr/sbin/nginx -t 报下面的错误: nginx: [emerg] nginx: configuration file /etc/nginx ...
- php后台多用户权限组思路与实现程序代码
网站开发少不了有网站后台,有了后台自然要对用户有同角色来分配一下,特别是多用户系统的情况下,如我一个系统要有多个管理员,那么我这些管理要分成,编辑,友情连接,管理员等,那我们要有权限和角色分配,今天我 ...
- django view
当请求一个页面时,Django 创建一个包含有关请求数据的 HttpRequest 对象,并将它作为第一个参数传给视图函数,每个视图函数处理完相应逻辑后返回一个 HttpResponse 对象,Htt ...