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 ...
随机推荐
- jquery插件写法
//传统写法 //全局方法 ;(function($){ $.method = function(){ } //or $.obj = { method1:function(){}, method2:f ...
- LoadScript
function loadScripts(urls, callback) { if (typeof (urls) === "string"){ urls = [urls]; } v ...
- yii2 数据库操作(转)
开始使用数据库首先需要配置数据库连接组件,通过添加 db 组件到应用配置实现("基础的" Web 应用是 config/web.php),DSN( Data Source Name ...
- post、get的区别
get的参数会显示在浏览器地址栏中,而 post的参数不会显示在浏览器地址栏中: 使用 post提交的页面在点击[刷新]按钮的时候浏览器一般会提示“是否重新提交”,而 get则不会: 用get的页面可 ...
- C#技术漫谈之垃圾回收机制(GC)(转)
GC的前世与今生 虽然本文是以.NET作为目标来讲述GC,但是GC的概念并非才诞生不久.早在1958年,由鼎鼎大名的图林奖得主John McCarthy所实现的Lisp语言就已经提供了GC的功能,这是 ...
- Storm与Spark Streaming比较
前言spark与hadoop的比较我就不多说了,除了对硬件的要求稍高,spark应该是完胜hadoop(Map/Reduce)的.storm与spark都可以用于流计算,但storm对应的场景是毫秒级 ...
- Junit初级编码(一)第一个Junit测试程序
序,Junit测试是单元测试的一个框架,提供了很多方法,供我们快速开展单元测试.目前最新版本JAR包为4.12,官网地址为http://junit.org/ 一.第一个Junit测试程序 1 去官网下 ...
- POJ 2031 Building a Space Station
3维空间中的最小生成树....好久没碰关于图的东西了..... Building a Space Station Time Limit: 1000MS Memory Li ...
- SSH-keygen参数说明
以防网址丢失发,复制备份.复制来源ssh-keygen参数说明 ssh-keygen - 生成.管理和转换认证密钥 ssh-keygen [-q] [-b bits] -t type [-N ...
- 转载自安卓巴士 【收藏】2015必须推荐的Android框架,猿必读系列!
一.Guava Google的基于java1.6的类库集合的扩展项目,包括collections, caching, primitives support, concurrency libraries ...