欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-04 14:14:17
有了前几篇的基础,相信大家对于struts2已经有了一个很不错的认识,本篇我将为大家介绍一些关于action接收参数的三种形式,以及简单的表单验证实现,下面进入正题,首先我...

有了前几篇的基础,相信大家对于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三种接收参数形式与简单的表单验证功能,希望对大家有所帮助