`

action接收请求参数

阅读更多

一、采用基本类型接收请求参数(get/post)
在Action类中定义与请求参数同名的属性,struts2便能接收自动接收请求参数并赋给同名属性。

action的代码:

public class ParamAction {

	private Integer id;
	private String name;
	
	public String execute(){
		return "success";
	}
	
	public void setId(Integer id) { //通过反射技术调用与请求参数同名的属性的setter方法来获取请求参数值
		this.id = id;
	}
	
}

 配置文件:

	<package name="myDemo" namespace="/demo" extends="struts-default">
		<action name="param" class="demo.action.ParamAction">
		<result>/WEB-INF/jsp/result.jsp</result>
		</action>
	</package>

 form页面,此页面直接保存在根目录下:

<body>
<form action="<%=request.getContextPath() %>/demo/param.action" method="post">
	id:<input type="text" name="id"></input>
	name:<input type="text" name="name"></input>
	<input type="submit" name="submit" value="提交"></input>
</form>
</body>

 在id与name中分别填写信息后,如:123, testParam,点击提交按钮,在result.jsp页面中就会看到相应的值。

result.jsp页面如下所示:

<%@ taglib uri="/struts-tags" prefix="s"%>

<body>
id:${id}
name:<s:property value="name" />
</body>

测试的页面输出结果为:id:123     name:testParam

 

 二、采用复合类型接收请求参数

action代码如下所示:

public class TestAction {

	private Person person;

	public Person getPerson() {
		return person;
	}

	public void setPerson(Person person) {
		this.person = person;
	}
	
	public String execute(){
		return "success";
	}

}

 Person类的代码如下所示:

public class Person {
	private Integer id;
	private String name;
       //setter和getter方法
}

 配置文件如下:

<package name="myDemo" namespace="/demo" extends="struts-default">	
		<action name="test" class="demo.action.TestAction">
		<result>/WEB-INF/jsp/result.jsp</result>
		</action>
	</package>

 from页面的代码如下:

<body>
<form action="<%=request.getContextPath() %>/demo/test.action" method="post">
	person.id:<input type="text" name="person.id"></input>
	person.name:<input type="text" name="person.name"></input>
	<input type="submit" name="submit" value="提交"></input>
</form>
</body>

 在person.id与person.name中分别填写信息后,如:123, testParam,点击提交按钮,在result.jsp页面中就会看到相应的值。Person.id:123     Person.name:testParam

result.jsp中的代码如下所示:

<%@ taglib uri="/struts-tags" prefix="s"%>
<body>
Person.id:${person.id}
Person.name:<s:property value="person.name" />
</body>

  说明:struts2首先通过反射技术调用Person的默认构造器创建Person对象,然后通过反射技术调用Person中与请求参数同名的属性的setter方法来获取请求参数值。在这里需要注意的一点是:Person对象一定要有默认的构造器。

采用复合类型接收请求参数的好处,可以减少action中的setter和getter方法,同时可以把相应的属性组合成一个类,这样使代码更好清晰,代码有更好的结构。

 

注意: 在struts2.1.6版本中存在一个bug,即配置了struts.i18n.encoding常量也不能解决接收到的中文请求参数为乱码(以post方式提交)的问题,原因是此版本在获取请求参数后才调用了HttpServletRequest的setCharacterEncoding()方法进行编码设置,导致应用使用的就是乱码请求参数。此bug在struts2.1.8中已经解决,并且解决了2.1.6中存在的其它bug,如果你使用的是struts2.1.6,解决此bug的方法是配置一个filter,把这个Filter放置在Struts2的Filter之前,并在doFilter方法中增加如下代码:

public void doFilter(...){
	HttpServletRequest req = (HttpServletRequest) request;
	req.setCharacterEncoding("UTF-8");//应该根据你使用的编码替换UTF-8
	filterChain.doFilter(request,response);
}
 

 

分享到:
评论
1 楼 终于还是变成了大叔 2016-07-21  
                   

相关推荐

    Struts2之Action接收请求参数和拦截器详解

    Struts2之Action接收请求参数和拦截器详解 Struts2框架中的Action接收请求参数和拦截器详解是非常重要的知识点,本文将详细介绍Struts2之Action接收请求参数和拦截器详解的相关知识点。 一、Struts2框架中的Action...

    struts2 使用action属性接收中文参数(post提交)

    在处理用户请求时,Struts2允许开发者通过Action类来接收和处理参数,包括中文参数。当我们需要通过POST方法提交包含中文字符的数据时,可能会遇到编码问题,因为HTTP请求默认使用的是ASCII编码,而中文字符需要UTF-...

    传智播客struts2.1源代码_接收请求参数

    在Struts2框架中,接收请求参数主要通过Action类和ValueStack来实现。 首先,了解Struts2的Action类。Action类是用户业务逻辑的载体,每个Action对应一个特定的HTTP请求。当用户提交表单或者点击链接时,Struts2会...

    action接受前台参数—属性接收和实体模型接收

    在这里,`@RequestParam`注解用于从请求参数中获取值,分别对应前端传来的"username"和"password"。 然而,当数据量增大或者结构复杂时,直接使用属性接收会显得繁琐且不易维护。这时,我们可以采用实体模型接收的...

    struts2中action接收参数的方式

    本篇文章将深入探讨Struts2中Action接收参数的多种方式,以及相关源码解析。 首先,最常见的接收参数方式是通过方法签名直接接收。例如,如果在JSP页面上有这样一个表单: ```jsp &lt;form action="submit.action" ...

    SpringBoot请求参数接收方式

    以下是Spring Boot中常见的几种请求参数接收方式的详细说明: 1. **`@RequestParam`接收:** `@RequestParam`注解用于从URL查询字符串中获取参数。例如: ```java @RequestMapping("/hello1") public String ...

    struts入门小程序

    用户通过表单提交计算请求,Action接收请求参数,执行计算,然后将结果返回给JSP页面。这展示了Struts的请求-处理-响应流程。 注册模块则是Struts处理用户注册功能的实例。注册通常涉及到用户信息的收集、验证和...

    JavaEE intellij Idea 做的Action三种接收参数的方式Struts2入门

    在这个例子中,`execute`方法会接收到名为`name`的请求参数值。 在实际开发中,选择哪种方式取决于具体需求和团队规范。属性映射方式简单直接,适用于大部分情况;`params`拦截器则提供了更大的灵活性,可以处理更...

    Action获取请求参数的三种方式

    这种方式下,Action类直接作为模型来接收请求参数。首先,你需要在Action类中定义与请求参数名称相匹配的属性,例如`String username`,然后为这些属性提供setter方法,如`public void setUsername(String username...

    SSH实现分页实例

    在分页场景中,我们需要创建一个专门的分页Action,该Action接收请求参数(如当前页数、每页条数),并调用服务层方法获取相应的分页数据。 Spring作为IoC/DI容器,负责管理对象的生命周期和依赖关系。在分页实例中...

    springMvc集合接收参数的用法

    在Spring MVC框架中,处理HTTP请求并接收参数是一项常见的任务。Spring MVC提供了多种方式来接收前端传递的数据,包括单独的参数、数组、列表以及自定义对象。本教程将重点讲解如何接收ajax和form表单传递的集合参数...

    struts2 接收参数

    当请求到达时,Struts2的ParametersInterceptor会自动将请求参数填充到Action类的相应属性中。此外,Struts2支持动态方法调用,即通过参数来决定执行哪个execute方法,这使得Action类可以更加灵活。 接下来,我们...

    android接收json例子struts2Action返回json格式数据

    在提供的压缩包文件中,`android接收json字符串例子.rar`可能包含了一个Android项目示例,展示了如何在Android应用中发起HTTP请求并解析JSON数据。而`Struts2_JSON_Demo`可能是一个Struts2的项目,实现了返回JSON...

    java struts2接收参数的几种方法

    在Struts2框架中,可以通过在Action类中定义与请求参数同名的属性来自动绑定请求参数。当执行Action时,Struts2会自动将请求参数与Action中的属性进行匹配和绑定,无需额外的数据类型转换。这种方式简单直观,适用于...

    struts2中Action获取参数的3种方式代码

    在Struts2的配置文件`struts.xml`中,定义Action时指定请求参数名和Action属性的映射关系: ```xml &lt;action name="myAction" class="com.example.MyAction"&gt; &lt;result&gt;success.jsp &lt;/action&gt; ``` 当用户发送一个带...

    asp.net Core Post Json方式给控制器Action传参并拦截丢失参数等错误信息

    原生asp.net不支持通过json提交 方式给控制器的Action传参数,本程序通过给自定义输入字符串格式方法。在action的传参上加入FromJsonKey属性即可在传入的json中传入参数,如果传入的json中不存在相应键即报错 ...

    Struts2接收参数

    当请求被处理时,Struts2会自动将请求参数值绑定到Action类的相应属性上,这一过程称为“自动类型转换”。 例如,如果你有一个名为`saveUser`的方法,接收一个`User`对象作为参数,`User`类中有`name`和`email`字段...

    Struts2 Action参数详细说明

    Struts2框架中的Action是核心组件之一,它负责接收HTTP请求并进行业务逻辑处理,然后将控制转向相应的视图进行展示。在Struts2中,Action的配置和使用方式有多种,下面将详细介绍Struts2 Action参数的详细说明。 ...

Global site tag (gtag.js) - Google Analytics