开门见山,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数据处理的更多相关文章

  1. 18.如何自我Struts2它Struts2标签和综合汇总文章有点早

    18.如何自我Struts2它Struts2标签和综合汇总文章有点早[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: h ...

  2. 13.怎样自学Struts2之Struts2本地化[视频]

    13.怎样自学Struts2之Struts2本地化[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了,仅仅好传到百度云上: http://pan ...

  3. 16.怎样自学Struts2之Struts2异常处理[视频]

    16.怎样自学Struts2之Struts2异常处理[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了,仅仅好传到百度云上: http://pa ...

  4. struts2(一) struts2入门

    首先推荐一本书,虽然我还没看过,但是我以后肯定会看的,<Struts+技术内幕>提取密码:kg6w .现在只是停留在会使用struts2的层次,自己也想继续深入研究,但是感觉自己的知识面还 ...

  5. 14.怎样自学Struts2之Struts2类型转换[视频]

    14.怎样自学Struts2之Struts2类型转换[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: http://pa ...

  6. 11.怎样自学Struts2之Struts2验证[视频]

    11.怎样自学Struts2之Struts2验证[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: http://pan. ...

  7. Struts2中的数据处理的三种方式对比(Action中三种作用域request,session,application对象)

    1:在Action中如何获得作用域(request,session,application)对象: 取得Map(键值对映射集)类型的requet,session,application; 对数据操作的 ...

  8. 深入研究Struts2(一)---Struts2是什么?它的工作原理是什么?

    本文绝对原创, 欢迎转载, 但是转载请记得注明文章出处:http://blog.csdn.net/izard999/article/details/39891281 近4年都在从事Android方 面 ...

  9. Struts2系列——struts2的result

    在action的指定方法执行完毕后总会返回一个字符串,struts2根据返回的字符串去action的配置中的result去找匹配的名字,根据配置执行下一步的操作. 在ActionSupport基类中定 ...

随机推荐

  1. TCP和UDP 的区别和适用场合

    TCP和UDP式TCP/IP中能够实现传输层功能的.具有代表性的协议,其主要特点和区别如下: TCP: 面向连接的.可靠的流协议.为提供可靠性传输,TCP实行"顺序控制"或&quo ...

  2. Java XML DOM解析(xPath)

    (一) XML概念 在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等.它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的 ...

  3. maven构建maven-project和maven-module

    在Eclipse中创建Maven多模块工程的例子 更多0   如果,你需要创建多个项目,项目之间即独立又有关系,那么创建一个Maven多模块项目是个非常好的选择,也非常cool!怎么在Eclipse里 ...

  4. 网络安全实验室 脚本关通关writeup

    [1]key又又找不到了查看源代码.发现key的路径,点击进行了302跳转,抓包,得到key [2]快速口算要2秒内提交答案,果断上python import requests,re s = requ ...

  5. TypeScript设计模式之职责链、状态

    看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...

  6. 在.NET项目中使用PostSharp,使用MemoryCache实现缓存的处理

    在之前一篇随笔<在.NET项目中使用PostSharp,实现AOP面向切面编程处理>介绍了PostSharp框架的使用,试用PostSharp能给我带来很多便利和优势,减少代码冗余,提高可 ...

  7. iOS切圆角的几个方法

    这几天在研究到切圆角的方法,也找了下网上的资料 ---------- 切圆角尽量避免离屏渲染. 1.直接用视图中layer中的两个属性来设置圆角,这种方法比较简单,但是及其影响性能不推荐:  @pro ...

  8. 【故障•监听】TNS-12518、TNS-00517和 Linux Error:32:Broken pipe

    [故障|监听]TNS-12518.TNS-00517和 Linux Error:32:Broken pipe 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱 ...

  9. win10环境下jdk1.8+Android Developer Tools Build: v22.3.0-887826的问题

    最进换了新电脑,配置开发环境,最新的android studio 要求jdk1.8,所以想都没想就下载1.8. 之后为了一个原来的老项目,得使用adt,遂装之,遇到一下问题 1.ADT新建项目src下 ...

  10. python+request接口自动化框架

    python+request接口自动化框架搭建 1.数据准备2.用python获取Excel文件中测试用例数据3.通过requests测试接口4.根据接口返回的code值和Excel对比 但本章只讲整 ...