Struts2总结---数据封装机制 (10)
来源:互联网 发布:米哈伊洛维奇 知乎 编辑:程序博客网 时间:2024/05/16 09:24
一,属性驱动的数据封装
示例代码:
public class AttributeAction extends ActionSupport { // 属性直接放在action类中,并且每一个属性都得写get和set方法 private String name; private String passwd; // 经过struts2的封装,可以直接在这里获取到我们需要的数据 // 我们并没有自己去设置这些属性的值,都是struts2帮我们做好了 // 这就是属性驱动的封装机制 public String execute() { System.out.println(name); System.out.println(passwd); return SUCCESS; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPasswd() { return passwd; } public void setPasswd(String passwd) { this.passwd = passwd; }}
要使用上面的action我们可以使用下面的form表单来提交:
<%-- 这里action参数写的是action的绝对路径 --%><form action="<%=basePath%>normal/AttributeAction" method="post"> <input type="text" name="name"> <input type="text" name="passwd"> <button type="submit">提交</button></form>
我们发现这种方法在属性较少的情况下可取,如果属性很多,代码会很乱,所以有了下面的模型驱动
二,模型驱动
(1),不使用struts2标签的模型驱动
// 实现ModelDriven接口,泛型中写我们封装的数据public class StudentAction extends ActionSupport implements ModelDriven<User> { // 我们必须实例化我们封装的数据,struts2会直接使用我们的这个类,将数据set进去 // 所以我们必须在这个类中写get和set方法 User u = new User(); // 实现此接口必须实现的方法,返回我们封装的数据 @Override public User getModel() { return u; } @Override // 这种方法我们完全没有设置什么,但是struts2依然为我们将数据放了进去 // 这里其实是java反射的应用 public String execute() throws Exception { System.out.println(u.getName()); System.out.println(u.getPasswd()); return "success"; }}
使用这种action的form表单和属性驱动的一模一样
(2)使用struts2标签的模型驱动
示例代码:
// 注意,这里不用实现ModelDriven接口// 看马士兵说的这叫域模型public class DomainModelAction extends ActionSupport { // 注意,这里不用自己实例化,struts2会帮助我们实例化 // 所以,user里面必须有不带参数的构造方法 // 同时,注意下面,我们必须写出user的get和set方法 User user; public String execute() { try { System.out.println(user.getName()); System.out.println(user.getPasswd()); } catch (NullPointerException e) { return ERROR; } return SUCCESS; } public User getUser() { return user; } public void setUser(User user) { this.user = user; }}
为什么说是标签驱动的呢?看下面的form表单:
<form action="normal/DomainModel_add" method="post"> <%--注意name属性,必须是我们action中的数据名称.属性名--%> <input type="text" name="user.name"> <input type="text" name="user.passwd"> <button type="submit">提交</button></form>
还可以使用struts2的标签:
<%--这里定位action的方式是和配置struts.xml差不多,使用namespace和action名--%><s:form namespace="/normal" action="DomainModel_add" method="POST"> <%--name属性也必须这样写--%> <s:textfield name="user.name"/> <s:password name="user.passwd"/> <s:submit>提交</s:submit></s:form>
这就是struts2的3种数据封装机制,核心的机制是Java反射
0 0
- Struts2总结---数据封装机制 (10)
- Struts2数据封装机制
- Struts2 数据封装机制
- Struts2 数据封装机制
- Struts2数据封装机制
- Struts2学习(二)数据封装机制
- Struts2中数据封装机制
- struts2的封装数据核心机制
- 利用反射模拟Struts2数据封装机制
- Struts2封装数据核心机制 Struts2-3mode
- struts2数据封装(九)
- struts2学习04——数据封装核心机制
- Struts2的知识整理总结(三)—— 数据封装和类型转换
- Struts2总结---获取表单数据封装到list和map集合 (11)
- Struts2封装数据(两种)
- Struts2数据封装
- Struts2数据的封装
- Struts2数据封装
- vue新手建议学习路线
- 关于Windows下python27各种包安装及更新过期的python库的问题
- TCP中的四种定时器
- CentOS 7 编译安装PHP7
- 京京_fieldset添加表格样式
- Struts2总结---数据封装机制 (10)
- 线程学习--实现Runnable接口
- C#---线程2
- 如何创建多线程
- python opencv 入门 加载视频 (2)
- 前端学习(四)
- SpringMVC上传文件的三种方式
- poj 2387 Til the Cows Come Home
- MP与OMP方法