Struts2中的数据校验

news2024/11/15 3:24:50

Struts2中的数据校验

  • 1、Action控制器
  • 2、jsp页面
  • 3、struts.xml配置
  • 4、测试

1、Action控制器

如果要使用校验,则需要继承ActionSupport类,覆写validate()方法,如果是实现Action接口,则无法覆写此方法。直接在之前的控制器基础上进行改造,修改后如下:

public class LoginAction extends ActionSupport {
	
	private static final long serialVersionUID = 1L;

	private String username;
	
	private String password;
	
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	@Override
	public String execute() throws Exception {
		if(username.equals("admin") && password.equals("ycz123456")) {
			HttpSession session = ServletActionContext.getRequest().getSession();
			session.setAttribute("currentUser", username);
			return SUCCESS;
		}
		return ERROR;
	}

	
	/**
	 * 此方法用于校验,会在execute()方法执行前先执行
	 */
	@Override
	public void validate() {
		if(StringUtils.isEmpty(username)) {
			addFieldError("username", "用户名不能为空!");
			return;
		}
		if(StringUtils.isEmpty(password)) {
			addFieldError("password", "密码不能为空!");
			return;
		}
		if(username.length() < 5) {
			addFieldError("username", "用户名不得少于5位!");
			return;
		}
		if(password.length() < 5) {
			addFieldError("password", "密码长度不得低于5位!");
			return;
		}
		if(!username.equals("admin") || !password.equals("ycz123456")) {
			addFieldError("msg", "用户名或密码错误!");
			return;
		}
	}
	
}

2、jsp页面

之前的login.jsp和success.jsp也需要进行改造。修改后的login.jsp如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页</title>
</head>
<body>
    <form action="login.action" method="post">
       <div>
           <label>用户名:</label>
           <input type="text"  name="username"  value="${username }"/>
           <font color="red">
                <s:fielderror fieldName="username" />
           </font>
       </div>
       <div>
          <label>密码:</label>
          <input type="password" name="password"  value="${password }"/>
          <font color="red">
                <s:fielderror fieldName="password" />
           </font>
           <font color="red">
                <s:fielderror fieldName="msg" />
           </font>
       </div>
       <div>
           <input  type="submit" value="登录" />
       </div>
    </form>
</body>
</html>

修改后的success.jsp如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>主页面</title>
</head>
<%
    
%>
<body>
   <h1>当前用户:【${sessionScope.currentUser}】</h1>
</body>
</html>

3、struts.xml配置

                 <!-- 登录action -->
                 <action name="login" class="com.ycz.struts01.action.LoginAction">
                     <result name="success">/success.jsp</result>
                     <result name="error">/login.jsp</result>
                     <result name="input">/login.jsp</result>
                 </action>

需要注意的是,如果要向页面中回显错误信息,那么返回结果必须配置input,如下:
在这里插入图片描述
如果这里不配置,错误信息无法回显,提交会报错,如下:
在这里插入图片描述
即struts2中如果要添加校验信息,则必须要配置result input。

4、测试

启动tomcat容器,进行测试:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输入正确的用户名和密码点击登录:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/108287.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring 中使用Nacos配置管理

添加依赖 <dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-spring-context</artifactId><version>${latest.version}</version> </dependency>本文使用的版本为&#xff1a;1.1.1 注&#xff1a;我们在N…

【nowcoder】笔试强训Day1

目录 一、选择题 二、编程题 2.1组队竞赛 2.2删除公共字符串 一、选择题 1.在 Java 中&#xff0c;存放字符串常量的对象属于&#xff08; &#xff09;类对象。 A Character B String C StringBuffer D Vector 字符串分为两大类&#xff0c;一类是字符串常量&#xf…

ESLint + StyleLint + Prettier + VSCode 打造最优雅的前端开发体验

ESLint StyleLint Prettier VSCode 打造最优雅的前端开发体验 引言 对于一个成熟的前端团队&#xff0c;统一的编码规范和提交规范尤其重要。要保证秩序井然、风格统一、整齐有序&#xff0c;光把规范写在文档里是没有太多实际价值的。没有人愿意去一条一条看规则&#xff…

ovn:中央节点ip变更导致节点失联

1.当ovn的中央节点ip突然变更&#xff08;从3.197->1.114&#xff09;后&#xff0c;便再无法同节点之间进行信息的同步。 2.已将节点的ovn-remote变更到最新的中央节点ip 3.但是进行ovn-controller 检测时却显示失败 4.通过telnet 测试6642 端口失败 5.最后发现原来是中央…

【UE4 第一人称射击游戏】05-设置角色动画

素材资料地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1epyD62jpOZg-o4NjWEjiyg 密码&#xff1a;jlhr 步骤&#xff1a; 1.新建一个名为“Character”的文件夹 将Swat.fbx导入Character文件夹中 新建一个名为“Animation”的文件夹 将Animation文件夹内的所…

大数据基础平台搭建-(一)基础环境准备

大数据基础平台搭建-&#xff08;一&#xff09;基础环境准备 大数据平台系列文章&#xff1a; 1、大数据基础平台搭建-&#xff08;一&#xff09;基础环境准备 2、大数据基础平台搭建-&#xff08;二&#xff09;Hadoop集群搭建 目录大数据基础平台搭建-&#xff08;一&#…

docker安装minio集群

docker安装minio集群 文章目录docker安装minio集群1、所有节点配置主机名解析2、配置时间同步&#xff0c;关闭防火墙和selinux。3、所有节点安装docker4、部署minio集群&#xff0c;3个节点每个节点挂载2个目录10.20.138.5210.20.138.5310.20.138.545、访问任意节点的9000端口…

vm vh移动端布局及 bilibili官网移动端首页布局

vm和vh是啥&#xff1f; 市场上的移动端大多数为flex布局&#xff0c;此时我们用到了rem这个单位&#xff0c;但是rem需要媒体查询&#xff0c;要根据页面是尺寸进行修改&#xff0c;而vm/vh省去各种判断和修改&#xff0c;像B站就通过vue和vm写的。 vm/vh是一个相对单位&…

【Quarkus技术系列】「云原生架构实战」配置参考指南相关的功能机制配置介绍分析

回顾Quarkus介绍 Quarkus的概念定义 Quarkus是一个为Java虚拟机&#xff08;JVM&#xff09;和原生编译而设计的全堆栈 Kubernetes 原生 Java 框架&#xff0c;用于专门针对容器优化 Java&#xff0c;并使其成为无服务器、云和 Kubernetes 环境的高效平台。 Quarkus与框架整…

Spring Boot整合分布式搜索引擎ElasticSearch 实现相关操作

一、ElasticSearch 介绍 Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性&#xff0c;能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步…

VS Code 中的增强 code CLI

Visual Studio Code 的核心是一个代码编辑器&#xff0c;它通过我们的远程开发经验与其他环境集成&#xff0c;变得更加强大和灵活。 你可能不知道的是&#xff0c;VS Code 有一个内置的命令行界面(CLI)&#xff0c;可以让你控制启动和管理编辑器的方式——你可以通过命令行选项…

【图像处理】基于二维FIR的特定角度边缘检测(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

HiveServer2 和 HiveMetastore 梳理

本文重新回顾一下Hive的两个核心服务&#xff1a;HiveServer2 和 HiveMetastore(HMS)。很多人会简单地把HiveServer2当成Hive的JDBC/ODBC服务&#xff0c;不启动HiveServer2服务&#xff0c;就没有10000端口&#xff0c;JDBC/ODBC客户端就连接不上Hive。从使用者的角度理解这就…

常见的数据通信方式有哪些?

数据通信方式指通信双方在信号发送、传输和接收这3个环节对信号的处理方式&#xff0c;下面将对不同的信号处理方式进行讲解。 单工、半双工与全双工通信 按信道上信号的传输方向与时间的关系&#xff0c;通信方式可分为单工通信、半双工通信与全双工通信。 (1) 单工通信 单…

Minecraft 1.19.2 Forge模组开发 09.动画效果方块

我们本次尝试制作一个具有动画效果的方块 效果演示效果演示效果演示 首先&#xff0c;请确保你的开发包中引入了geckolib依赖&#xff0c;相关教程请参考:Minecraft 1.19.2 Forge模组开发 03.动画生物实体 1.首先我们要使用geckolib制作一个物品和对应的动画&#xff1a; 在…

TDOA 定位技术和实际应用简介

介绍了TDOA&#xff08;Time difference of Arrival&#xff09;的基本原理&#xff0c;列举了TDOA 定位的优势&#xff0c;并且通过实例分析其在实际应用中的有效性&#xff0c;结合实验数据分析了影响TDOA 的因素。本文提出TDOA 是一种简单高效的定位方式&#xff0c;可以被广…

js原型与原型链完整图解

首先要知道&#xff1a; 1、所有对象&#xff08;除null&#xff09;都有一个__proto__属性指向构造函数的原型对象 2、所有对象&#xff08;除null&#xff09;都有一个constructor属性指向构造函数&#xff08;函数也是对象&#xff09; 已知&#xff1a;有一个构造函数Fn…

如何在交付运维过程中建立风险底线意识,提前识别风险,避免项目延期?

大家好&#xff0c;我是小赛。又到了每周的【项目管理案例】分享栏目了。本期案例来自于希赛PM创造营项目经理们的分享&#xff1a;项目延期是每位项目经理或多或少都会遇到的工作难题&#xff0c;本期我们一起来探讨一下&#xff1a;如何在交付运维过程中建立风险底线意识&…

【檀越剑指大厂—SpringMVC】SpringMVC篇

一.基础概念 1.什么是 MVC MVC 是模型(Model)、视图(View)、控制器(Controller)的简写&#xff0c;是一种软件设计规范。是将业务逻辑、数据、显示分离的方法来组织代码。MVC 主要作用是降低了视图与业务逻辑间的双向偶合。MVC 不是一种设计模式&#xff0c;MVC 是一种架构模…

APS排产帮助面板制造厂商进行计划调整

液晶面板是决定液晶显示器亮度、对比度、色彩、可视角度的材料&#xff0c;液晶面板的价格走势会直接影响到液晶显示器的价格&#xff0c;液晶面板作为电视、显示器等产品的核心组成部件&#xff0c;一般占到成本的60%以上。在液晶面板下行周期中&#xff0c;面板大厂们日子更不…