struts2 之 struts2数据处理
开门见山,struts2的数据处理总结:
1. 在servlet中,如果要获取页面提交的数据要使用requerst.getParameter方法来获取,并且每次需要进行相关的类型转换工作,数据的获取及转换工作比较简单,并且是重复的操作,在struts2中提供了一种比较优秀的方式来接收和转换数据。
2. 获取表单中的数据可以有多种方式:
(1)属性驱动方式
(2)对象驱动方式
(3)模型驱动方式
3. 属性驱动:页面表单中表单域的名称和action的属性一致,并且在action中提供属性的get/set方法,那么struts2会自动将数据设置到action的属性上,在处理方法中可以直接获取表单值。为action的属性设置了get方法,那么在页面中就可以通过el表达式获取属性值。
实例:
jsp页面:
<form action="login.action" method="post">
username:<input type="text" name="username"/><br>
password:<input type="password" name="password"/><br>
<input type="submit" value="login"/>
</form>
Action处理类:
public class UserAction {
private String username;
private String password;
//登录处理方法
public String login(){
System.out.println("用户名:"+username+"\t密码:"+password);
if("siggy".equals(username)&&"1111".equals(password)){
//登录成功
/**
* Action.SUCCESS="success"; 表示action执行成功,并且需要展示页面
* Action.NONE="none";表示action执行成功,不需要视图展示页面
* Action.ERROR="error";表示action执行失败,需要一个失败页面进行展示
* Action.INPUT="input";表示如果action要执行成功,需要更多的输入信息。
* Action.LOGIN="login";表示需要用户登录方可访问
*/
//return "success";
return Action.SUCCESS;
}
return "login";
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
4. 对象驱动:在action类中,将对象设置属性,并且提供get/set方法。在页面中表单域名称是action类中对象的 对象名.属性。在对象类中提供对应属性的get/set方法即可。这样在action的处理类获取的将会是对象。
优点:不用在处理类中封装对象
缺点:jsp中表单域名称有重复的地方
实例如:
Vo类:
public class User {
private String name;
private String pwd;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
Action 处理类:
public class UserObjectAction {
private User user;
public String login(){
System.out.println("用户名:"+user.getName()+"\t密码:"+user.getPwd());
if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){
return Action.SUCCESS;
}
return "login";
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
jsp页面:
<form action="loginObject.action" method="post">
username:<input type="text" name="user.name"/><br>
password:<input type="password" name="user.pwd"/><br>
<input type="submit" value="login"/>
</form>
5. 模型驱动:由于对象驱动在页面中有重复的代码,当类的属性比较多时,开发效率比较低。模型驱动使得页面的表单域名称和类的属性名一致,action处理类需要实现ModelDriven接口即可。
实例如:
jsp页面:
<form action="loginModel.action" method="post">
username:<input type="text" name="name"/><br>
password:<input type="password" name="pwd"/><br>
<input type="submit" value="login"/>
</form>
Vo类:
public class User {
private String name;
private String pwd;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
Action处理类:
public class UserModelAction implements ModelDriven<User>{
private User user;
public String login(){
System.out.println("用户名:"+user.getName()+"\t密码:"+user.getPwd());
if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){
return Action.SUCCESS;
}
return "login";
}
public User getModel() {
return user = new User();
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
struts2 之 struts2数据处理的更多相关文章
- 18.如何自我Struts2它Struts2标签和综合汇总文章有点早
18.如何自我Struts2它Struts2标签和综合汇总文章有点早[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: h ...
- 13.怎样自学Struts2之Struts2本地化[视频]
13.怎样自学Struts2之Struts2本地化[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了,仅仅好传到百度云上: http://pan ...
- 16.怎样自学Struts2之Struts2异常处理[视频]
16.怎样自学Struts2之Struts2异常处理[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了,仅仅好传到百度云上: http://pa ...
- struts2(一) struts2入门
首先推荐一本书,虽然我还没看过,但是我以后肯定会看的,<Struts+技术内幕>提取密码:kg6w .现在只是停留在会使用struts2的层次,自己也想继续深入研究,但是感觉自己的知识面还 ...
- 14.怎样自学Struts2之Struts2类型转换[视频]
14.怎样自学Struts2之Struts2类型转换[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: http://pa ...
- 11.怎样自学Struts2之Struts2验证[视频]
11.怎样自学Struts2之Struts2验证[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: http://pan. ...
- Struts2中的数据处理的三种方式对比(Action中三种作用域request,session,application对象)
1:在Action中如何获得作用域(request,session,application)对象: 取得Map(键值对映射集)类型的requet,session,application; 对数据操作的 ...
- 深入研究Struts2(一)---Struts2是什么?它的工作原理是什么?
本文绝对原创, 欢迎转载, 但是转载请记得注明文章出处:http://blog.csdn.net/izard999/article/details/39891281 近4年都在从事Android方 面 ...
- Struts2系列——struts2的result
在action的指定方法执行完毕后总会返回一个字符串,struts2根据返回的字符串去action的配置中的result去找匹配的名字,根据配置执行下一步的操作. 在ActionSupport基类中定 ...
随机推荐
- iOS基础之顺传逆传传值(delegate、block)
写给iOS新手的福利! 在项目中经常会用到传值,根据传值的方向分为顺传(从根控制器到子控制器)和逆传(从子控制器到根控制器).在这里写了个Demo简单演示了效果,创建了两个控制器: 一个为根控制器,一 ...
- Lowest Common Ancestor of a Binary Tree leetcode
Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According ...
- Contains Duplicate II leetcode
Given an array of integers and an integer k, find out whether there are two distinct indices i and j ...
- JavaScript前端最全API集锦
一.节点1.1 节点属性Node.nodeName //返回节点名称,只读Node.nodeType //返回节点类型的常数值,只读Node.nodeValue //返回Text或Comme ...
- 修改mysql方法
我已验证: 方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('n ...
- mui学习链接
http://dev.dcloud.net.cn/mui/snippet/ http://www.bcty365.com/content-146-2453-1.html hbuilder转rem值: ...
- 【树莓派】树莓派下WiFi断线自动重连
实现 WiFi 断线自动重连.原理是用 Python 监测网络是否断线,如果断线则重启网络服务. 1.Python 代码 autowifi.py,放在 /home/pi 目录下: #!/usr/bin ...
- Android开发之Bitmap的高效加载
BitmapFactory类提供了四类方法:decodeFile, decodeResource, decodeStream和decodeByteArray 分别用于支持从文件系统,资源,输入流以及字 ...
- python 发送附件至邮箱
python 发送附件至邮箱 import smtplibfrom email.MIMEText import MIMETextfrom email.MIMEMultipart import MIME ...
- 模拟在内存中的数据库DataSet相关的类
这篇连着上一篇DataReader相关类. 下面两段话是在msdn官网摘下来: .NET Framework 数据提供程序是专门为数据操作以及快速.只进.只读访问数据而设计的组件.Conn ...