`
fantasy0707
  • 浏览: 36734 次
  • 性别: Icon_minigender_1
  • 来自: 兰州
社区版块
存档分类
最新评论

Struts2接收参数的几种方式

 
阅读更多
Struts2接收参数的几种方式:
1. 用Action的属性:
在action里面定义要接收的参数,并提供相应的setter,getter,可以和提交参数的名称一致,并不用做数据类型的转换。
如:
public class UserAction extends ActionSupport {
	private String password;
	pirvate String name;

  //……对应的setter,getter方法

public void execeute() {
		System.out.println(name +”:”+passowrd);
              return “success”;

}

}

相应提交方式可以用get和post,如:userAction?password=admin&name=admin
2. 使用Domain Model:
在Action里面不存很多的属性,而是用Model层用到的模型,保存它的一个对象
如:
public class UserAction extends ActionSupport {
	
	private User user;

  //……对应的setter,getter方法

public void execeute() {
   System.out.println(user.getName() +”:”+user.getPassowrd());
   return “success”;

}

}

提交参数:userAction?user.password=1&user.name=admin;这里面的user指向Action里面的user。

3. 使用DTO--数据传输对象
它的作用是接收参数,传递参数,并不是项目中的实体类。如用户注册时,会用到确认密码,所以要先把参数接收过来,做处理后,再传递给相应方法去创建User对象。
public class UserDTO {

	private String name;
	private String password;
	private String confirm;
//……对应的setter,getter方法
}

可能的Action
public class UserAction extends ActionSupport {
	
	private UserDTO  user;

  //……对应的setter,getter方法

public void execeute() {
	if(checkdate(userDTO userDTO) )//检查数据{
		newUser(UserDTO  userDTO)//创建User对象

			System.out.println(user.name +”:”+user.passowrd);

return “success”;
}
return “fail”;

}

}


提交参数的方式的Domail Model方式的相同。


4.使用ModelDriven:
在创建Action的时候,发现Action实现了ModelDriven接口,去调用 接口的getModel()方法,取到了User。
public class UserAction extends ActionSupport implements ModelDriven<User> {
	
	private User user = new User();  //这里要手动的New下

  //……对应的setter,getter方法

public void execeute() {
		System.out.println(user.name +”:”+user.passowrd);
return “success”;

}

 @Override
	public User getModel() {
	return user;
}
}

相应提交方式可以用get和post,如:userAction?password=admin&name=admin
分享到:
评论
21 楼 nongzai 2012-12-14  
。。。
execute 返回类型写错了
20 楼 mlhorizon 2010-04-13  
对于“接收参数”这个操作而言,第二个和第三个有什么区别吗?
19 楼 念不动 2010-04-13  
Struts2还是属性驱动合适一些
18 楼 tottichen 2010-04-13  
清晨阳光 写道
ModelDriven的时候,往往需要实现prepareable接口,在prepare方法里面预备数据,否则到execute方法里面,拿到的是null值

不需要吧,Struts2会自动功能OGNL的规则给你设置相应的值的。
17 楼 wukaimail 2010-04-13  
我也只是用过前两种,至于后两种方法,还没试过
我想因该还有一种:是在两个不同的Action之间跳转,传递参数。。。
16 楼 shijian0306 2010-04-13  
zhongxinhu 写道
看来我还没入门,用了这么久,都只是第一二种。



不要这么想,这种开源的东西实现的方式很多,你不一定都要会啊~
15 楼 shijian0306 2010-04-13  
lovesl 写道
不建议对Action 继承 ActionSupport



为什么不建议,讲出理由出来~
14 楼 liujiesmart 2010-04-13  
lovesl 写道
不建议对Action 继承 ActionSupport

为什么?一般常用的是什么?
13 楼 zhongxinhu 2010-04-13  
看来我还没入门,用了这么久,都只是第一二种。
12 楼 lovesl 2010-04-13  
不建议对Action 继承 ActionSupport
11 楼 fantasy0707 2010-04-13  
liujiesmart 写道
常用第二种方法,
user.username在action中不能这么用,应该user.getUsername();
才能取值

对的,我复制程序时忽略了,不好意思
10 楼 zjfcyefeng 2010-04-13  
第三、第四种用法是鸡肋
个人推荐第一、二种方法,简单实用
9 楼 清晨阳光 2010-04-13  
ModelDriven的时候,往往需要实现prepareable接口,在prepare方法里面预备数据,否则到execute方法里面,拿到的是null值
8 楼 liujiesmart 2010-04-13  
常用第二种方法,
user.username在action中不能这么用,应该user.getUsername();
才能取值
7 楼 kuchaguangjie 2010-04-13  
07年给学校做项目就用 modeldriver 了。。。
适当使用 还可以
6 楼 Clayz 2010-04-12  
能够复用model就用model,ModelDriven只处理不能加.传参数的情况,比如flex,js class attribute。dto太麻烦,参数太ugly。
5 楼 YiSingQ 2010-04-12  
推荐第三、第四种用法,相对主流一点。
4 楼 whaosoft 2010-04-12  
tottichen 写道
ModelDriven方式确实是挺实用···

好在哪里 具体给指点下
3 楼 風一樣的男子 2010-04-12  
3、4都是第一次看到
2 楼 tottichen 2010-04-12  
ModelDriven方式确实是挺实用···

相关推荐

    java struts2接收参数的几种方法

    本文将深入探讨Struts2接收参数的几种主要方法,包括通过Action的属性、使用Domain Model(领域模型)以及采用DTO(数据传输对象)进行参数接收。 ### 一、使用Action的属性接收参数 #### 原理 在Struts2框架中,...

    Struts2 的接受参数的几种方式

    ### Struts2 接受参数的几种方式 #### 第一种方式:直接在 Action 中设置变量 这种方式是最直接的参数接收方式。当从前端传递参数到后端时,我们需要确保 Action 类中有与这些参数名称相匹配的变量。例如,如果...

    Struts2的三种传值方式比较(附demo)

    在本篇文章中,我们将详细探讨Struts2的三种主要的传值方式,并通过一个简单的Demo来加深理解。 1. **Action属性传值** Struts2的核心是Action类,每个Action类都代表一个特定的业务逻辑。我们可以通过在Action类...

    Struts2教学视频

    Namespace是Struts2中用于组织Action的一种方式,可以看作是Action的命名空间。它有助于避免Action名称冲突,同时提供了更灵活的URL映射策略。 **四、标签** 标签在struts.xml中定义一个配置包,可以包含多个Action...

    经典struts2分页方法 JAVA_WEB必备分页 源码

    综上所述,经典Struts2分页方法涉及了Action、Model、DAO、结果映射、视图、拦截器、JSP/Freemarker标签库、URL参数、分页算法和最佳实践等多个方面。通过学习和实践这些知识点,Java Web开发者能够更好地理解和应用...

    struts2分页效果第二种

    Struts2提供了几种方式来实现这个功能,第二种方法可能是指使用自定义拦截器或插件。例如,可以使用Struts2的DisplayTag库,它是一个强大的表格和分页标签库。在JSP中,我们可以这样写: ```jsp ${pageBean....

    Struts2登录DEMO

    7. **异常处理**:Struts2提供了一种全局的异常处理机制,通过`&lt;global-exception-mappings&gt;`和`&lt;global-results&gt;`配置,可以统一处理Action执行过程中的异常,并定义异常发生后的跳转页面。 8. **国际化...

    struts2文件上传jar

    Struts2是一个流行的Java web框架,它为开发者提供了一种结构化的方式来构建MVC(Model-View-Controller)应用程序。在Struts2中,文件上传是常见的功能,用于允许用户在网页上上传文件到服务器。这个压缩包包含了...

    struts2的新特性

    Struts2提供了几种机制来简化这个过程: - **直接绑定**:如`hello.action?id=1`会直接为Action中的id属性赋值。 - **对象属性绑定**:若参数较多,且都属于同一对象,则可将所有属性封装在一个对象内,例如`...

    struts2 lib design

    在Struts2的设计中,核心理念包括以下几个方面: 1. **模块化设计**:Struts2的每个组件如Action、Result、Interceptor等都是独立的,可以单独替换或扩展,使得系统具有很高的灵活性。 2. **依赖注入(Dependency ...

    struts2学习笔记黑马程序员

    2. **定义Action类**:在Action类中定义接收文件的方法,并使用Struts2提供的API完成文件的保存操作。 **注意事项:** - **文件大小限制**:默认情况下,Struts2对上传文件的大小有限制。可以在`struts.xml`或`...

    struts2和hibernate结合增删改查

    1. **配置Struts2**:在web.xml中配置Struts2的DispatcherServlet,添加struts2的核心过滤器,并设置相关的初始化参数。 2. **引入Hibernate**:在项目中添加Hibernate的库,包括hibernate-core、hibernate-...

    struts2-jsondemo

    6. **JSONParam注解**:对于接收JSON请求,Struts2提供了`@JSONParam`注解,可以将JSON请求参数绑定到Action的属性上,简化了数据处理。 7. **JSON验证**:Struts2提供了基于JSON的验证功能,可以在Action中定义...

    Struts2笔记

    2. **输入参数**:通过属性注入的方式接收用户提交的数据。 3. **返回结果**:Action类需要返回一个字符串,表示下一步的流向,例如`SUCCESS`、`ERROR`等。 #### 四、配置文件详解 1. **`struts2-default.xml`**:...

    struts2上传和下载文件详细源码

    Struts2提供了两种方式实现文件下载:一种是通过流的方式,另一种是使用`Result`类型。流的方式通常涉及创建一个Action,该Action读取并流化要下载的文件内容。使用`&lt;s:url&gt;`和`&lt;a&gt;`标签生成下载链接,然后在浏览器...

    Struts2之Servlet API及单元测试初识案例struts005

    Struts2中的`ActionServlet`就是对Servlet API的一种扩展,它作为整个框架的调度中心,负责接收请求、调用Action并返回相应的结果。 在Struts2中,Servlet API主要体现在以下几点: 1. **过滤器(Filter)**:...

    struts2中AJAX实现

    在Struts2中实现AJAX,主要涉及以下几个关键点: 1. **Struts2 Action和Result**:首先,你需要创建一个Struts2 Action类,它将处理客户端发送的请求。这个Action类中定义的方法对应于用户触发的操作,并返回一个...

    struts2 dwr ajax 配置 局部刷新

    Struts2、DWR(Direct Web Remoting)和Ajax是Web开发中的关键技术,它们结合使用可以实现页面的局部刷新,提高用户体验。Struts2是一个基于MVC设计模式的Java Web框架,DWR则是一个用于简化AJAX开发的库,允许前端...

    传智播客struts2教程

    在学习Struts2时,除了基本的接收参数和文件上传,还需要了解以下几个关键知识点: 1. **Action和结果类型**:Action是Struts2的核心组件,它封装了业务逻辑,而结果类型定义了请求处理后的跳转路径,如转发、...

Global site tag (gtag.js) - Google Analytics