Struts2数据操作(第二例)

action中对数据进行操作

1:结果页面的配置

1.result标签配置action方法的返回值到不同的路径里面

2.创建两个action,都执行默认的方法execute方法,让两个action方法都返回success,返回success后配置到同一个页面·

 

弊端:结果页面都一样,返回值都一样,但是太浪费了,于是我们引入了全局页面

1)全局结果页面

如果说多个action,方法里面返回值相同的,到页面也是相同的,这个时候用全局页面

 

2)局部结果页面

 

1》即配置了全局页面,有配置了局部页面,以局部页面为准

 

3)result标签 的type属性

1result标签里面除了name属性之外,还有一个属性type

1type属性:如何到路径中去(转发还是重定向)

2type属性值

1)默认值,做转发操作,值是dispatcher

 

2)做重定向操作,值是 redirect

 

这两个值是针对页面的配置,配置到其他的action里面

-chain:转发到action,一般不用,缓存问题

-redirectAction:重定向到action

 

2:在action获取表单提交数据

1:之前在web阶段,提交表单到servlet里面,在servlet里面使用request对象里面的方法获取

getParameter,getParamterMap

2:提交表单到action,但是action里面没有request对象,不能直接使用request对象

3action获取表单数据,如下;

1)使用ActionContext类获取

因为方法不是静态的,所以要创建ActionContext对象

 

这个方法对象不是new出来的

 

具体做个演示

1)创建表单,提交表单到action里面

2)在action使用ContextAction获取数据,获得request方法

2)使用ServletActionContext获取

 

可以调用类里面的静态方法,

 

HttpServletRequest request=ServletActionContext.getRequest();

String username=request.getParameter("username");

String password=request.getParameter("password");

String address=request.getParameter("address");

3)使用接口注入方式获取(一般不用)

1:让action实现一个借口,得到一个request对象

 

1:在action操作域对象:request,session,servletcontext:2:

2:使用ServletActionContext类操作

 

3:struts提供获取表单数据方式

使用最原始的方法封装实现类对象

 

1)属性封装

直接把表单提交的数据封装到action的属性里面

实现步骤:

action成员变量位置定义变量

-变量名称和表单输入项的name属性值一样,这样就直接通过里面的名字调用里面的set方法,设置值

生成变量set方法(把setget方法写出来)

 

3.使用属性封装获取表单数据到属性里面,不能把数据直接封装到实体对象里面,于是我们用到了模型驱动方式

2)模型驱动封装(重点)

直接把数据从表单封装到一个实体类中去(如users

实现步骤:

1action实现接口 ModelDriven

 

2)实现接口的方法getModel方法

-把我们创建的对象返回

 

3.使用模型驱动和属性封装需要注意的问题

1)在一个action中,获取表单数据可以属性封装,使用模型驱动封装,不能同时使用属性封装和模型驱动封装获取同一个表单数据,两个都用只会执行模型驱动,

3.表达式封装(会用)

1实现过程

1)使用表达式封装可以把表单数据封装到实体类对象里面

第一步:在action里面声明实体类

第二步:生成实体类变量的setget方法

 

第三步 在表单输入项的name属性值里面写表达式形式

可以把表达式封装归类到属性封装里面

比较表达式封装和模型驱动

1:使用表达式封装和模型封装都可以把数据封装到实体类对象里面

2.不同点

1)使用模型驱动只能把数据封装到一个实体类对象里面。在一个action里面不能使用模型驱

动把数据封装到不同的实体类对象里面

2)使用表达式可以把数据封装到不同的实体类对象里面

 

4:struts获取数据封装于集合中(会用)

1)封装到list集合

第一步 action声明list

 

第二步 生成list变量的getset方法

 

第三步在表单输入项 里面写表达式(第三天会用到s:iterator

 

2)封装到map中

声明一个map集合

生成getset方法

第三步在表单输入项 里面写表达式

原文地址:https://www.cnblogs.com/yq12138/p/7202424.html