struts2传递参数值的3中方式
在使用struts2的时候,当要传递的参数不多的时候,我们会选择使用属性来传参,而当要传递的参数很多的时候,或者多个action会有共用的参数时,我们会使用另外两种传参方式。
注意:使用Model Driven传参时,我们需要自己new对象。
1、通过属性传参数(Attr)
UserAction.java
public class UserAction extends ActionSupport {
private String name;
private int age; public String add() {
System.out.println("name:"+name);
System.out.println("age:"+age);
return SUCCESS;
} public int getAge() {
return age;
} public String getName() {
return name;
} public void setAge(int age) {
this.age = age;
} public void setName(String name) {
this.name = name;
}
调用方法:
<a href="user/userAdd.action?name=Don&age=26">添加用户</a>
2、通过域模型传参数(Domain Model)
DTO :Data Transfer Object 数据传输对象。主要用于远程调用等需要大量传输对象的地方。比如我们一张表有 100 个字段,那么对应的 PO 就有 100 个属性。但是我们界面上只要显示 10 个字段, 客户端用 WEB service 来获取数据,没有必要把整个 PO 对象传递到客户端,这时我们就可以用只有这 10 个属性的 DTO 来传递结果到客户端,这样也不会暴露服务端表结构。
UserAction.java
public class UserAction extends ActionSupport {
// 通过域模型传参数
private User user; // 通过数据传输对象传参数
// private UserDTO userDTO; public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} public String add() {
System.out.println("name:" + user.getName());
System.out.println("age:" + user.getAge());
// System.out.println("name:"+userDTO.getName());
// System.out.println("age:"+userDTO.getAge());
return SUCCESS;
} // public void setUserDTO(UserDTO userDTO) {
// this.userDTO = userDTO;
// }
//
// public UserDTO getUserDTO() {
// return userDTO;
// }
}
User.java
public class User {
private String name;
private int age; public int getAge() {
return age;
} public String getName() {
return name;
} public void setAge(int age) {
this.age = age;
} public void setName(String name) {
this.name = name;
}
}
UserDTO.java
//数据传输对象
public class UserDTO {
private String name;
private String password;
private String comfirmPassword; public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getComfirmPassword() {
return comfirmPassword;
} public void setComfirmPassword(String comfirmPassword) {
this.comfirmPassword = comfirmPassword;
} private int age; public int getAge() {
return age;
} public String getName() {
return name;
} public void setAge(int age) {
this.age = age;
} public void setName(String name) {
this.name = name;
}
}
调用方法
<a href="user/userAdd.action?user.name=Don&user.age=26">添加用户</a>
3、通过模型驱动传参数(Model Driven)
UserAction.java
public class UserAction extends ActionSupport implements ModelDriven<User> {
private User user = new User(); public String add() {
System.out.println("name:"+user.getName());
System.out.println("age:"+user.getAge());
return SUCCESS;
}
@Override
public User getModel()
{
return user;
} }
User.java
(源代码同上)
调用方法:
<p>使用ModelDriven传参数</p>
<a href="user/userAdd.action?name=Don&age=26">添加用户</a>
struts2传递参数值的3中方式的更多相关文章
- JSP中页面向Action传递参数的几种方式
<form name="ThisForm" method="POST" action="index.jsp"> form是表单, ...
- ASP中页面之间传递值的几种方式
ASP.NET页面之间传递值的几种方式 页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryS ...
- tornado中传递参数的几种方式
方法一 :tornado路由可以使用正则表达式中的子表达式传递url参数.比如:(r"/member//(\w*)/([01]*)", MemberHandler)匹配以后,tor ...
- asp传递参数的几种方式
把下列代码分别加入a.asp和b.asp的<body></body>中,点提交,就可以将a.asp文本框的内容传给b.asp并显示出来 a.ASP <form actio ...
- VB6中的引用传递 与 VB.NET中的引用传递的区别
首先注意一点,在VB6中缺省参数传递的方式是:引用传递,而在VB.NET中缺省参数传递的方式是:值传递. 然后我们看下面VB6中的引用传递与VB.NET中的引用传递的对比. VB6中的引用传递 Pri ...
- .NET MVC控制器向视图传递数据的四种方式
.NET MVC控制器向视图传递数据的四种方式: 1.ViewBag ViewBag.Mvc="mvc"; 2.ViewData ViewBag["Mvc"] ...
- Struts2方法调用的三种方式
在Struts2中方法调用概括起来主要有三种形式 第一种方式:指定method属性 <action name="student" class="com.itmyho ...
- ASP.NET页面之间传递值的几种方式(转载)
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...
- struts2 在 Action 或 Interceptor 中获取 web.xml 中配置的 <context-param> 参数 (这是我的第一篇博文,哈哈。)
最近为了改一个问题,想加一个控制开关,就在web.xml 中配置了一个 <context-param> 参数,并在 Action 或 Interceptor 中获取参数值. 1.在 web ...
随机推荐
- c语言解数独
来自:http://my.oschina.net/lovewxm/blog/288043?p=1 #include <stdio.h> #include <stdlib.h> ...
- ASP.NET 数据库页面访问简单工具
在工作中,有很多项目已上线后,很多项目的数据库服务器都不会对外开放的,外网想直接访问客户数据库服务器时,可能会出现困难. 这时就需要一个可以查询,更新数据库操作的页面了: 本来用sql语句直接操作数据 ...
- tool debug Android phonegap app
phonegap debug 最近发现了一个可以调试phonegap的工具 在Google浏览器上调试Android真机的APP 这是好啊!!!跟Mac上的Safari 浏览器一样调试iOS 的A ...
- JNI基础概念以及原理-2016.01.11
Java到C数据类型转换 1 基础类型 Java与Jni类型对应关系 2 String到char数组 具体使用方式 JNIEXPORT jstring JNICALL Java_com_zhoulee ...
- DirectDraw打造极速图形引擎(Alpha混合)
显然DirectDraw是Windows下写2D图形程序的最好选择,虽然Direct3D也可以写,但是没DirectDraw简单方便,特别对于初学者,一来就接触那么多函数和参数总不是件愉快的事,所以我 ...
- 结合Git实现Mysql差异备份,可用于生产环境
埋头苦干多年一直没写过文章,今天突发狂想,为LNMP阵营贡献一些力量.就从平时工作过程中的心得和一些技巧分享出来.今天就猿们最熟悉的Mysql开始宅鸟的开篇博客文章.欢迎猿们拍砖.转载. 注意:宅鸟的 ...
- POJ C程序设计进阶 编程题#4:寻找平面上的极大点
编程题#4:寻找平面上的极大点 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描 ...
- 解决Linux中遇到No such device
虚拟机备份转移后,网络启动异常,提示“SIOCSIFADDR: No such device” he problem lies in the fact that ethernet MAC addres ...
- 通过 XML HTTP 把文本文件载入 HTML 元素
新建一个.aspx文件 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="01-通 ...
- c# 数据库操作学习
一. 如何处理数据库连接 1. 数据库连接可以分为“物理连接”和“逻辑连接”(默认使用连接池的情况下Pooling=true): 物理连接:创建数据库连接时,默认会有一定数量的物理连接(默认Min P ...