一、采用基本类型接收请求参数(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);
}
分享到:
相关推荐
Struts2之Action接收请求参数和拦截器详解 Struts2框架中的Action接收请求参数和拦截器详解是非常重要的知识点,本文将详细介绍Struts2之Action接收请求参数和拦截器详解的相关知识点。 一、Struts2框架中的Action...
在处理用户请求时,Struts2允许开发者通过Action类来接收和处理参数,包括中文参数。当我们需要通过POST方法提交包含中文字符的数据时,可能会遇到编码问题,因为HTTP请求默认使用的是ASCII编码,而中文字符需要UTF-...
在Struts2框架中,接收请求参数主要通过Action类和ValueStack来实现。 首先,了解Struts2的Action类。Action类是用户业务逻辑的载体,每个Action对应一个特定的HTTP请求。当用户提交表单或者点击链接时,Struts2会...
在这里,`@RequestParam`注解用于从请求参数中获取值,分别对应前端传来的"username"和"password"。 然而,当数据量增大或者结构复杂时,直接使用属性接收会显得繁琐且不易维护。这时,我们可以采用实体模型接收的...
本篇文章将深入探讨Struts2中Action接收参数的多种方式,以及相关源码解析。 首先,最常见的接收参数方式是通过方法签名直接接收。例如,如果在JSP页面上有这样一个表单: ```jsp <form action="submit.action" ...
以下是Spring Boot中常见的几种请求参数接收方式的详细说明: 1. **`@RequestParam`接收:** `@RequestParam`注解用于从URL查询字符串中获取参数。例如: ```java @RequestMapping("/hello1") public String ...
用户通过表单提交计算请求,Action接收请求参数,执行计算,然后将结果返回给JSP页面。这展示了Struts的请求-处理-响应流程。 注册模块则是Struts处理用户注册功能的实例。注册通常涉及到用户信息的收集、验证和...
在这个例子中,`execute`方法会接收到名为`name`的请求参数值。 在实际开发中,选择哪种方式取决于具体需求和团队规范。属性映射方式简单直接,适用于大部分情况;`params`拦截器则提供了更大的灵活性,可以处理更...
这种方式下,Action类直接作为模型来接收请求参数。首先,你需要在Action类中定义与请求参数名称相匹配的属性,例如`String username`,然后为这些属性提供setter方法,如`public void setUsername(String username...
在分页场景中,我们需要创建一个专门的分页Action,该Action接收请求参数(如当前页数、每页条数),并调用服务层方法获取相应的分页数据。 Spring作为IoC/DI容器,负责管理对象的生命周期和依赖关系。在分页实例中...
在Spring MVC框架中,处理HTTP请求并接收参数是一项常见的任务。Spring MVC提供了多种方式来接收前端传递的数据,包括单独的参数、数组、列表以及自定义对象。本教程将重点讲解如何接收ajax和form表单传递的集合参数...
当请求到达时,Struts2的ParametersInterceptor会自动将请求参数填充到Action类的相应属性中。此外,Struts2支持动态方法调用,即通过参数来决定执行哪个execute方法,这使得Action类可以更加灵活。 接下来,我们...
在提供的压缩包文件中,`android接收json字符串例子.rar`可能包含了一个Android项目示例,展示了如何在Android应用中发起HTTP请求并解析JSON数据。而`Struts2_JSON_Demo`可能是一个Struts2的项目,实现了返回JSON...
在Struts2框架中,可以通过在Action类中定义与请求参数同名的属性来自动绑定请求参数。当执行Action时,Struts2会自动将请求参数与Action中的属性进行匹配和绑定,无需额外的数据类型转换。这种方式简单直观,适用于...
在Struts2的配置文件`struts.xml`中,定义Action时指定请求参数名和Action属性的映射关系: ```xml <action name="myAction" class="com.example.MyAction"> <result>success.jsp </action> ``` 当用户发送一个带...
原生asp.net不支持通过json提交 方式给控制器的Action传参数,本程序通过给自定义输入字符串格式方法。在action的传参上加入FromJsonKey属性即可在传入的json中传入参数,如果传入的json中不存在相应键即报错 ...
当请求被处理时,Struts2会自动将请求参数值绑定到Action类的相应属性上,这一过程称为“自动类型转换”。 例如,如果你有一个名为`saveUser`的方法,接收一个`User`对象作为参数,`User`类中有`name`和`email`字段...
Struts2框架中的Action是核心组件之一,它负责接收HTTP请求并进行业务逻辑处理,然后将控制转向相应的视图进行展示。在Struts2中,Action的配置和使用方式有多种,下面将详细介绍Struts2 Action参数的详细说明。 ...