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日

相关文章

  • 消息队列常见的使用场景

    消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题 实现高性能,高可用,可伸缩和最终一致性架构。最全面的Java面试网站 使用较多的消息队列有 RocketMQ,RabbitMQ,Kafka,ZeroMQ,MetaMQ 以下介绍消息队列在实际应用中常用的使用场景。 异步处理,应用解耦,流量削锋、日志处理和消息通讯五个场景。 场…

    Java 2023年4月17日
    00
  • 浅谈Hibernate对象状态之间的神奇转换

    浅谈Hibernate对象状态之间的神奇转换 前言 Hibernate是一个开源的ORM框架,可以将Java对象映射到关系型数据库中。在Hibernate中,每个对象都有一个状态,状态定义了对象当前的生命周期阶段。一个对象可以有以下几个状态: Transient(短暂状态):新创建的,未持久化的对象 Persistent(持久状态):已被Hibernate框…

    Java 2023年5月31日
    00
  • 四个Java必须知道的负载均衡算法分享

    下面我将详细介绍《四个Java必须知道的负载均衡算法分享》这篇攻略。 标题 介绍 这篇攻略主要介绍了Java程序员在实际开发中需要掌握的四种负载均衡算法,并从算法原理、应用场景、优缺点等多方面进行了详细的分析。 四种负载均衡算法 轮询算法 轮询算法是指按照请求的顺序,依次将请求分配到每个服务器,由于是平均分配请求,所以该算法的负载均衡效果较为稳定。 随机算法…

    Java 2023年5月19日
    00
  • 关于MybatisPlus配置双数据库驱动连接数据库问题

    MybatisPlus是Mybatis的扩展库,它提供了更多的便捷操作和增强功能,是目前比较流行的Java持久层框架之一。在使用MybatisPlus框架时,我们可能需要连接多个不同的数据库,这时就会遇到双数据库驱动连接数据库的问题。下面是一份详细的攻略: 1.添加双数据库的配置文件 首先,我们需要添加MybatisPlus的配置文件,具体名字根据项目需要来…

    Java 2023年6月16日
    00
  • mybatis分页效果实现代码

    下面我来详细讲解一下mybatis分页效果实现代码的完整攻略。 什么是mybatis分页? mybatis分页是指将查询出来的结果集分成一定数量的小部分,每次只显示其中的一部分,以此来获得更加良好的用户体验。在使用mybatis进行开发时,我们可以利用一些已有的插件或者自定义代码来实现mybatis分页。 基于插件实现mybatis分页 在mybatis中,…

    Java 2023年5月20日
    00
  • list,set,map,数组之间的相互转换详细解析

    List、Set、Map、数组之间的相互转换详细解析 List、Set、Map和数组的定义 List List是一个特殊的集合,它是有序的、可重复的,并且允许null元素。它的常用实现类有:ArrayList、LinkedList等。 Set Set是一个集合,它的特点是不允许重复元素,它的元素是无序的,并且允许null元素。它的常用实现类有:HashSet…

    Java 2023年5月26日
    00
  • MyBatis Generator的简单使用方法示例

    MyBatis Generator 的简单使用方法示例 什么是 MyBatis Generator MyBatis Generator 是一个基于 Java 的代码生成器,可以快速为 MyBatis 创建数据访问层代码。使用 MyBatis Generator 可以自动生成 MyBatis 的 POJO 类、Mapper 接口和 SQL 映射文件。 MyBa…

    Java 2023年5月20日
    00
  • spring boot基于Java的容器配置讲解

    下面给出关于“spring boot基于Java的容器配置讲解”的完整攻略。 什么是Spring Boot? Spring Boot是一种基于Spring框架的快速应用开发框架。使用Spring Boot可以快速构建可部署的、生产级别的Spring应用程序,而不需要编写大量的代码,因为它提供了几乎所有的配置。 Spring Boot容器配置 在Spring …

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