在Struts2中,Action可以通过三种形式接收参数:
- 在Action类中定义属性,并提供setter方法,在Action的execute方法中使用属性接收参数。
- 使用ActionContext.getContext().getParameters()方法获取请求参数Map,以键值对的形式接收参数。
- 实现ParameterAware接口,可以通过参数Map对象获取所有请求参数。
接下来我们将通过两个示例来演示在Struts2中使用这三种接收参数的方式,并且简单讲解如何在Struts2中实现表单验证功能。
示例1:使用属性接收参数
- 在Action类中定义属性并提供setter方法
在这个示例中,我们将演示如何使用属性接收表单数据,首先我们需要在Action类中定义属性,然后提供setter方法,通过setter方法将获得的参数值传递到属性中。
public class UserAction extends ActionSupport {
private String username;
private String password;
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String execute() throws Exception {
System.out.println("username:" + username);
System.out.println("password:" + password);
return SUCCESS;
}
}
- 在jsp页面中编写表单
我们需要知道的是:当我们在jsp页面中使用表单按钮提交数据时,请求方式默认为POST。
<s:form action="userAction">
<s:textfield name="username" label="用户名"/>
<br>
<s:password name="password" label="密 码"/>
<br>
<s:submit name="submit" value="提交"/>
</s:form>
- 配置Action映射
我们需要在struts.xml配置文件中添加以下代码
<package name="default" namespace="/" extends="struts-default">
<action name="userAction" class="com.example.UserAction">
<result name="success">/success.jsp</result>
</action>
</package>
- 在Action的execute方法中使用属性接收参数
我们只需要在Action的execute方法中使用属性接收jsp页面中传递过来的参数即可。
public String execute() throws Exception {
System.out.println("username:" + username);
System.out.println("password:" + password);
return SUCCESS;
}
示例2:使用参数Map接收参数
接下来,我们将演示如何使用参数Map接收表单数据。
- 在jsp页面中编写表单
我们同样需要在jsp页面中使用表单传递数据。
<s:form action="userAction2">
<s:textfield name="username" label="用户名"/>
<br>
<s:password name="password" label="密 码"/>
<br>
<s:submit name="submit" value="提交"/>
</s:form>
- 配置Action映射
我们仍然需要在struts.xml配置文件中添加以下代码。
<package name="default" namespace="/" extends="struts-default">
<action name="userAction2" class="com.example.UserAction2">
<result name="success">/success.jsp</result>
</action>
</package>
- 在Action的execute方法中使用参数Map接收参数
我们通过ActionContext.getContext().getParameters()方法获取参数Map,并且通过Map对象获取请求参数的值,示例代码如下。
public class UserAction2 extends ActionSupport {
@Override
public String execute() throws Exception {
ActionContext context = ActionContext.getContext();
Map<String, String[]> map = context.getParameters();
String username = Arrays.toString(map.get("username"));
String password = Arrays.toString(map.get("password"));
System.out.println("username:" + username);
System.out.println("password:" + password);
return SUCCESS;
}
}
至此,我们完成了在Struts2中使用参数Map接收参数的示例。
如何进行简单的表单验证功能
在Struts2中,我们可以通过Action的validate方法实现表单验证功能,该方法会在Action中的execute方法执行之前被自动调用。
示例代码如下:
public class UserAction3 extends ActionSupport {
private String username;
private String password;
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public void validate() {
if (StringUtils.isBlank(username)) {
addFieldError("username", "用户名不能为空");
}
if (StringUtils.isBlank(password)) {
addFieldError("password", "密码不能为空");
}
}
@Override
public String execute() throws Exception {
System.out.println("username:" + username);
System.out.println("password:" + password);
return SUCCESS;
}
}
在以上示例中,我们使用了StringUtils和addFieldError方法实现了简单的表单验证功能。当验证不通过时,addFieldError方法会将错误信息添加到Action类的FieldErrors对象中,用于在jsp页面中进行展示。
我们在jsp页面中添加如下代码:
<s:form action="userAction3">
<s:textfield name="username" label="用户名"/>
<s:fielderror fieldName="username"/>
<br>
<s:password name="password" label="密 码"/>
<s:fielderror fieldName="password"/>
<br>
<s:submit name="submit" value="提交"/>
</s:form>
以上就是在Struts2中使用Action接收参数的三种方式和简单的表单验证功能的实现攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Struts2中Action三种接收参数形式与简单的表单验证功能 - Python技术站