Struts2中Action三种接收参数形式与简单的表单验证功能

yizhihongxing

在Struts2中,Action可以通过三种形式接收参数:

  1. 在Action类中定义属性,并提供setter方法,在Action的execute方法中使用属性接收参数。
  2. 使用ActionContext.getContext().getParameters()方法获取请求参数Map,以键值对的形式接收参数。
  3. 实现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="密&nbsp;&nbsp;&nbsp;&nbsp;码"/>
  <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="密&nbsp;&nbsp;&nbsp;&nbsp;码"/>
  <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="密&nbsp;&nbsp;&nbsp;&nbsp;码"/>
  <s:fielderror fieldName="password"/>
  <br>
  <s:submit name="submit" value="提交"/>
</s:form>

以上就是在Struts2中使用Action接收参数的三种方式和简单的表单验证功能的实现攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Struts2中Action三种接收参数形式与简单的表单验证功能 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Flink流处理引擎零基础速通之数据的抽取篇

    请听我为您详细讲解“Flink流处理引擎零基础速通之数据的抽取篇”的完整攻略。 背景 在使用Flink处理数据之前,我们需要先将数据抽取出来,Flink流处理引擎提供了各种各样的数据抽取方式,如Kafka、RabbitMQ、Socket、File等,本篇攻略将详细介绍如何使用这些数据抽取方式将数据导入到Flink流处理引擎。 准备工作 在开始之前,需要先配置…

    Java 2023年5月20日
    00
  • Spring Security认证的完整流程记录

    Spring Security认证的完整流程记录 Spring Security是一个专门用于处理认证和授权的框架,它可以帮助我们很容易地实现常见的安全功能,例如用户认证、授权、单点登录、密码加密等。在使用Spring Security时,我们通常需要了解其认证的完整流程,以便更好地保证应用程序的安全。 下面,将通过以下步骤来描述Spring Securit…

    Java 2023年6月3日
    00
  • SpringBoot JSON全局日期格式转换器实现方式

    下面是 SpringBoot JSON 全局日期格式转换器实现方式的攻略: 1. 需求分析 在 SpringBoot 应用中,Java 中的 Date 类型会默认转换为 Unix 时间戳格式,在通过 API 接口返回给前端时,需要对 Date 类型进行格式化。我们可以定义全局的 JSON 转换器来实现日期格式转换。 2. 实现方式 2.1 自定义日期格式化工…

    Java 2023年5月20日
    00
  • JSON各种转换问题(json转List,json转对象等)

    让我为你详细讲解一下“JSON各种转换问题(json转List,json转对象等)”的完整攻略。 JSON转List 假设有一个JSON数组如下: [ { "name": "张三", "age": 23 }, { "name": "李四", "age…

    Java 2023年5月26日
    00
  • Spring Boot如何集成模板引擎FreeMarker

    下面是 Spring Boot 集成 FreeMarker 模板引擎的完整攻略。 一、引入依赖 在 pom.xml 中添加 FreeMarker 和 Spring Boot 的依赖,如下所示: <dependency> <groupId>org.springframework.boot</groupId> <arti…

    Java 2023年5月31日
    00
  • Spring 整合Shiro 并扩展使用EL表达式的实例详解

    一、前言 在Web应用中,身份认证和权限控制是非常重要的组成部分,Shiro作为一个灵活的、功能强大的Java安全框架,在开发过程中可以方便地实现各种安全需求,因此被广泛应用于各种Java项目中。而Spring则作为一个非常流行的开发框架,与Shiro的整合可以解决现代Web应用中的常见安全问题。 本文将详细讲解如何在Spring项目中集成Shiro,并使用…

    Java 2023年6月15日
    00
  • Java基础教程之包(package)

    Java基础教程之包(package) 在 Java 中,包(package)是一种用于组织及管理类、接口及其他资源的机制。包可以看成是文件夹,类则是文件,利用类放在包中,可以更好地组织和访问代码。 包的定义 在 Java 中,一个包是一组相互关联的 Java 类的集合。 当需要用到某个类时,可以指定其完全限定名(包括包名称和类名)来引用该类,例如: jav…

    Java 2023年5月20日
    00
  • java 实现定时的方法及实例代码

    下面就给您详细介绍一下Java实现定时的方法及实例代码的完整攻略。 一、Java实现定时的方法 在Java中,可以使用多种方式实现定时器。下面是其中比较常用的几种方式: 1.1 Timer 类 Java中提供了一个java.util.Timer类,使用该类可以实现简单的定时任务调度。 Timer timer = new Timer(); timer.sche…

    Java 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部