Struts2中Action三种接收参数形式与简单的表单验证功能
作者:小破孩123 发布时间:2022-11-26 08:55:20
标签:struts2,表单,验证
有了前几篇的基础,相信大家对于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三种接收参数形式与简单的表单验证功能网站的支持!
来源:http://www.cnblogs.com/AndroidJotting/p/6516752.html


猜你喜欢
- 一、在学习枚举之前,首先来听听枚举的优点。1、枚举能够使代码更加清晰,它允许使用描述性的名称表示整数值。2、枚举使代码更易于维护,有助于确保
- 前言通常在工作中比较常用到的Microsoft Word是属于国外的文档内容编辑软件,其编译技术均属国外。而OFD是一种我国的自主文档格式,
- 本文实例讲述了C#检测是否有u盘插入的方法。分享给大家供大家参考。具体如下:该C#代码可监控是否有u盘插入,同时可以监控其它驱动器的变化us
- 本文介绍了android视频截屏&手机录屏实现代码,分享给大家,希望对大家有帮助问题在android中有时候我们需要对屏幕进行截屏操
- 我们知道现在智能手机上都有这样一种功能,就是你在浏览图片的时候。不是硬性的点击按钮而是可以实现手指的拖动,划开效果。使用户具有更好的交互体验
- 苹果的iphone有语音识别用的是Google的技术,做为Google力推的Android 自然会将其核心技术往Android 系统里面植入
- 1. 父工程构建1.1 Maven项目搭建环境版本JDK1.8Maven3.6+Maven模板maven-archetype-size删除父
- 1、什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁
- 在讲策略模式之前,我先给大家举个日常生活中的例子,从首都国际机场到XXX酒店,怎么过去?1)酒店接机服务,直接开车来接。2)打车过去。3)机
- 本文实例讲述了Android实现ListView控件的多选和全选功能。分享给大家供大家参考,具体如下:主程序代码MainActivity.J
- 前言上一篇文章中我们通过自己开发了一个负载均衡组件,实现了随机算法的负载均衡功能,如果要实现其他算法,还需要修改代码增加相应的功能。这一篇文
- 概述Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。Sentine
- 一、背景在通过Runnable接口创建线程时,启动线程需要借助Thread类,这里就涉及到了静态代理模式。二、实例以歌手演出为例,在演出的这
- 本文主要讲解Android浏览器的开发实例,有三部分内容:启动Android默认浏览器、指定浏览器进行访问以及打开本地的htm
- 目录SpringBoot整合OpenApiOpenAPI依赖编写配置类改造优化OpenAPI常用注解介绍实体类controller类演示网上
- JPA Specification常用查询+排序1.第一步:继承父类public interface TblCarton2RCardLogR
- 1:创建新工程,无脑下一步输入工程名称,选择地址,完事。2:配置tomcat先从tomcat官网下载zip包( https://tomcat
- File类概述File类能新建、删除、重命名文件和目录,但不能访问文件内容本身,如果需要访问文件内容本身,则需要使用后续的输入/输出流。要在
- 1.首先什么是JNI呢?JNI——(Java Native Interface),他是java平台的特性,不是安卓系统提供的。他定义了一些J
- #include<iostream>#include<assert.h>using namespace std;st