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

在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日

相关文章

  • struts2中使用注解配置Action方法详解

    请按照以下步骤详细讲解”struts2中使用注解配置Action方法的完整攻略”: 1. 确认环境 首先,你需要确保你的项目已经集成了Struts2框架。同时,你需要了解Action类和方法的基本概念,并且熟悉Java注解的基础知识。 2. 创建Action类 创建一个继承ActionSupport类的Action类,并且对于需要访问的Action方法添加相…

    Java 2023年5月20日
    00
  • Java非侵入式API接口文档工具apigcc用法详解

    Java非侵入式API接口文档工具apigcc用法详解 概述 apigcc是一款非侵入式的API接口文档生成工具,可以帮助Java开发人员快速生成符合RESTful标准的API接口文档,同时支持多种API文档输出格式,包括HTML、Markdown、PDF等格式。 安装 apigcc可以通过npm安装,使用如下命令即可: npm install apigcc…

    Java 2023年5月20日
    00
  • 浅谈SpringCloud的微服务架构组件

    关于“浅谈SpringCloud的微服务架构组件”的完整攻略,我可以从以下几个方面进行讲解: 一、什么是微服务架构 微服务架构是一种以服务化思想为核心的分布式系统架构,用于将单个应用程序拆分为一组较小且更独立的服务,每个服务都可以独立部署、升级和扩展,提高了系统的可维护性、可扩展性和弹性。微服务架构的主要优势包括: 每个服务都可以独立部署和伸缩 不同的服务可…

    Java 2023年5月20日
    00
  • java计算工作时间除去节假日以及双休日

    要计算Java中工作时间(即除去节假日和双休日),一般的做法是使用第三方库或者手动编写代码来计算时间间隔并排除非工作日的时间。下面是两种实现方式的介绍。 使用第三方库 Java中有一些第三方库可以方便地计算时间间隔并排除非工作日。其中一种比较常用的是Joda-Time库。在计算时间间隔时,可以使用Period类,该类可以计算两个日期之间的天数、小时数、分钟数…

    Java 2023年5月20日
    00
  • 构建SpringBoot+MyBatis+Freemarker的项目详解

    以下是详细讲解“构建SpringBoot+MyBatis+Freemarker的项目详解”的完整攻略。 1. 创建SpringBoot项目 首先,打开IDEA,点击创建一个新项目,选择Spring Initializr,选择构建工具为Maven,添加所需依赖,包含以下依赖: Spring Web MyBatis Framework MySQL Driver …

    Java 2023年5月19日
    00
  • 使用Gson将字符串转换成JsonObject和JsonArray

    使用Gson库将字符串转换为JsonObject或JsonArray是Java开发中常见的数据处理任务。下面是详细的攻略: 导入Gson库 要使用Gson库,需要在项目中引入Gson的依赖。可以通过在maven或gradle中添加以下代码来引入Gson库。 Maven: <dependency> <groupId>com.google…

    Java 2023年5月26日
    00
  • Mybatis如何配置连接池

    MyBatis可以通过配置连接池来提高数据库操作的性能,下面是配置连接池的详细攻略: 步骤1:添加连接池依赖 在pom.xml文件中添加对连接池的依赖,例如: <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId…

    Java 2023年5月20日
    00
  • java基于正则表达式实现时间日期的常用判断操作实例

    Java基于正则表达式实现时间日期的常用判断操作实例 正则表达式是一种用来描述字符串匹配规则的工具,它可以在Java中被广泛地应用。通过正则表达式,我们可以对时间日期进行常用的判断操作。下面是Java基于正则表达式实现时间日期的常用判断操作实例。 日期格式 在进行时间日期的判断操作之前,我们需要知道日期格式,以下是时间日期常用的格式: yyyy-MM-dd …

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