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

发布时间 - 2026-01-11 00:04:27    点击率:

有了前几篇的基础,相信大家对于Struts2已经有了一个很不错的认识,本篇我将为大家介绍一些关于Action接收参数的三种形式,以及简单的表单验证实现,下面进入正题,首先我们一起先来了解一下最基本的Action接收参数的形式,直接在我们的Action类中添加成员变量,这样就可以完成Action接收参数的操作,具体内容详见代码展示:

  这里我们以登录验证为例,进行代码展示,首先是我们的Action类:

/***
 * 最基本的接收参数形式
 * @author jho
 * http://localhost:8080/Struts3/index!login?name="123"&password="456"
 */
@SuppressWarnings("serial")
public class User extends ActionSupport {
  private String name;
  private int pwd;
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public int getPwd() {
    return pwd;
  }
  public void setPwd(int pwd) {
    this.pwd = pwd;
  }
  public String login(){
    System.out.println("name="+name+" Pwd="+pwd);
    if(123456==pwd){
      return SUCCESS;
    }else{
      return ERROR;
    }
  }
}

  下面我们一起来看一下Action的第二种接收参数的形式,通过User类对象来完成整个的参数接收,首先我们创建一个User类:

public class User {
  private String name;
  private String password;
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getPassword() {
    return password;
  }
  public void setPassword(String password) {
    this.password = password;
  }
}

  然后通过User对象在Action中进行用户提交参数的接收:

/***
 * Dormain Model
 * @author jho
 * http://localhost:8080/Struts4/index!login?user.name="123"&user.password="456"
 */
@SuppressWarnings("serial")
public class UserAction extends ActionSupport {
  private User user;
  public User getUser() {
    return user;
  }
  public void setUser(User user) {
    this.user = user;
  }
  public String login(){
    System.out.println("name="+user.getName()+" Pwd="+user.getPassword());
    return SUCCESS;
  }
}

  最后是通过Struts的ModelDriven<User>来进行用户参数的接收,第一步创建我的User类对象,第二部配置我们的Action:

/***
 * Model Driven
 * @author jho
 * http://localhost:8080/Struts5/index!login?name="123"&password="456"
 */
@SuppressWarnings("serial")
public class UserAction extends ActionSupport implements ModelDriven<User>{
  private User user = new User();
  public String login(){
    System.out.println("name="+user.getName()+" Pwd="+user.getPassword());
    return SUCCESS;
  }
  public User getModel() {
    return user;
  }
}

  所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象。

  对于简单的表单验证知识,就为大家介绍一下addFieldError()方法:

@SuppressWarnings("serial")
public class InputErrorFilter extends ActionSupport{
  private String name;
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  @Override
  public String execute() throws Exception {
    return SUCCESS;
  }
  public String login(){
    System.out.println(name+"");
    if(name!=null && name.equals("hpu")){
      return SUCCESS;
    }else{
      this.addFieldError("nameError", "用户名输入有误");
      this.addFieldError("nameError", "ul li形式输出错误信息");
      return ERROR;
    }
  }
}

  我们的错误处理页面:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <base href="<%=basePath%>" rel="external nofollow" >
  <title>My JSP 'error.jsp' starting page</title>
  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="expires" content="0">  
  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  <meta http-equiv="description" content="This is my page">
  <!--
  <link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" >
  -->
 </head>
 <body>
      操作失败 <br>
      输入参数:<s:text name="name" /><br/>
    <s:fielderror fieldName="nameError" theme="simple"/><br/>
    <s:property value="errors.nameError[0]"/><br/>
    <s:debug></s:debug>
 </body>
</html>

以上所述是小编给大家介绍的Struts2中Action三种接收参数形式与简单的表单验证功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# struts2  # 表单验证  # 简单谈谈Struts动态表单(DynamicForm)  # Struts2中接收表单数据的三种驱动方式  # J2EE中的struts2表单细节处理  # 详解struts2的token机制和cookie来防止表单重复提交  # Java的Struts框架中登陆功能的实现和表单处理器的使用  # 通过Ajax两种方式讲解Struts2接收数组表单的方法  # struts2中一个表单中提交多个请求的例子(多个提交按钮)  # 基于Struts2实现防止表单重复提交  # 表单  # 三种  # 我们一起  # 小编  # 在此  # 给大家  # 很不错  # 我将  # 为例  # 第二部  # 已经有了  # 介绍一下  # 错误信息  # 来完成  # 所述  # 先来  # 创建一个  # 第二种  # 给我留言  # 具体内容 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  js实现获取鼠标当前的位置  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  如何彻底删除建站之星生成的Banner?  java ZXing生成二维码及条码实例分享  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  JavaScript常见的五种数组去重的方式  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  个人摄影网站制作流程,摄影爱好者都去什么网站?  JavaScript如何实现音频处理_Web Audio API如何工作?  在线教育网站制作平台,山西立德教育官网?  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  免费视频制作网站,更新又快又好的免费电影网站?  简单实现Android文件上传  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  如何快速搭建个人网站并优化SEO?  魔方云NAT建站如何实现端口转发?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  音乐网站服务器如何优化API响应速度?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  如何快速查询网址的建站时间与历史轨迹?  海南网站制作公司有哪些,海口网是哪家的?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  昵图网官方站入口 昵图网素材图库官网入口  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  Laravel如何实现事件和监听器?(Event & Listener实战)  Laravel如何使用Livewire构建动态组件?(入门代码)  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  js代码实现下拉菜单【推荐】  油猴 教程,油猴搜脚本为什么会网页无法显示?  怎么用AI帮你设计一套个性化的手机App图标?  如何用免费手机建站系统零基础打造专业网站?  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  如何获取免费开源的自助建站系统源码?  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  Laravel定时任务怎么设置_Laravel Crontab调度器配置  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】