Www.helper3.com
热门关键字: php net javascript java
Struts2基础 专题
专题目录
您的位置:java > Struts2基础专题 > Struts2 验证框架
Struts2 验证框架
作者:--    发布时间:2019-11-20 10:12:20

现在,我们将看看如何的struts验证框架。在struts的核心有验证框架,协助应用程序的运行规则来执行验证执行之前的操作方法。

通常是使用javascript来实现客户端验证。但不应单独依赖于客户端验证。最佳实践表明,验证应引入各级应用程序框架。现在,让我们来看看两种方式添加验证我们的struts项目。

在这里,我们将采取一个例子,employee 将被捕获的姓名和年龄使用一个简单的页面,我们将会把两个验证,以确保使用总是进入一个名字和年龄应该是在28和65之间。所以,让我们先从主jsp页面的例子。

创建主页面:

让我们写主jsp页面文件的index.jsp,这将被用来收集上述员工的相关信息。

<%@ page language="java" contenttype="text/html; charset=iso-8859-1"
   pageencoding="iso-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" 
"http://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<title>employee form</title>
</head>

<body>
   <s:form action="empinfo" method="post">
      <s:textfield name="name" label="name" size="20" />
      <s:textfield name="age" label="age" size="20" />
      <s:submit name="submit" label="submit" align="center" />
   </s:form>
</body>
</html>

在index.jsp使用struts的标签,我们还没有涉及,但我们将研究这些标签相关的章节。但现在,假设 s:textfield 标签打印一个输入字段s:submit打印一个提交按钮。我们已经使用label属性标签,每个标签每个标签创建。 

创建视图:

我们将使用jsp文件的success.jsp将调用的情况下定义的动作返回success。

<%@ page language="java" contenttype="text/html; charset=iso-8859-1"
	pageencoding="iso-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" 
"http://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<title>success</title>
</head>
<body>
   employee information is captured successfully.
</body>
</html>

创建动作:

因此,让我们定义一个小小的动作类employee,然后添加一个方法称为validate(),如下所示在employee.java文件。请确保操作类扩展actionsupport类,否则validate方法将不会被执行。

package com.h3.struts2;

import com.opensymphony.xwork2.actionsupport;

public class employee extends actionsupport{
   private string name;
   private int age;
   
   public string execute() 
   {
       return success;
   }
   public string getname() {
       return name;
   }
   public void setname(string name) {
       this.name = name;
   }
   public int getage() {
       return age;
   }
   public void setage(int age) {
       this.age = age;
   }

   public void validate()
   {
      if (name == null || name.trim().equals(""))
      {
         addfielderror("name","the name is required");
      }
      if (age < 28 || age > 65)
      {
         addfielderror("age","age must be in between 28 and 65");
      }
   }
}

如在上面的例子所示,“name”字段的验证方法检查是否有一个值,或不。如果没有值已经提供,我们添加一个带有自定义错误消息“age”字段的字段错误。其次,我们检查,如果输入的值是在28和65之间或不为“age”字段,如果这个条件不符合我们以上验证字段添加一个错误。

配置文件:

最后,让我们把所有东西一起使用struts.xml的配置文件如下:

<?xml version="1.0" encoding="utf-8"?>
<!doctype struts public
   "-//apache software foundation//dtd struts configuration 2.0//en"
   "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
   <constant name="struts.devmode" value="true" />
   <package name="helloworld" extends="struts-default">

      <action name="empinfo" 
         class="com.h3.struts2.employee"
         method="execute">
         <result name="input">/index.jsp</result>
         <result name="success">/success.jsp</result>
      </action>

   </package>

</struts>

以下是web.xml文件中的内容:

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
   xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   xsi:schemalocation="http://java.sun.com/xml/ns/javaee
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   id="webapp_id" version="3.0">

   <display-name>struts 2</display-name>
   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>

   <filter>
      <filter-name>struts2</filter-name>
      <filter-class>
         org.apache.struts2.dispatcher.filterdispatcher
      </filter-class>
   </filter>

   <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
</web-app>

现在,右键点击项目名称,并单击export > war file创建一个war文件。然后部署此war在tomcat的webapps目录下。最后,启动tomcat服务器和尝试访问url http://localhost:8080/helloworldstruts2/index.jsp。这会给出以下画面:

email user input

现在不输入任何所需信息,只需点击“submit ”按钮。将看到以下结果:

error

输入所需的信息,但输入了错误的from字段,让我们说“test”和年龄为30,最后点击“submit ”按钮。将看到以下结果:

success

此验证是如何工作的?

当用户按下提交按钮时,struts2会自动执行的验证方法,如果任何一个if语句里面的方法列出,struts 2调用addfielderror方法。如果有任何错误已加入struts 2将不会进行调用execute方法。而struts 2框架将返回输入作为调用该行动的结果。

因此,验证失败时struts2返回输入,struts 2框架将重新显示index.jsp文件。因为我们使用了struts 2的表单标签,struts2中会自动添加错误消息,只是上面的形式提交。

这些错误消息是我们addfielderror方法调用中指定的。addfielderror方法有两个参数。首先是表单字段名错误,第二个是错误信息,上面显示该表单字段。

addfielderror("name","the name is required");

要处理的返回值输入,我们需要添加以下的结果,以我们的动作节点在struts.xml。

<result name="input">/index.jsp</result>

基于xml的验证:

在进行验证的第二个方法是通过将一个xml文件的动作类。struts2的基于xml验证的验证提供了更多的选择,如电子邮件验证,整数范围验证,表单验证字段,表达式验证,正则表达式验证,需要验证,验证所需的字符串,字符串长度的验证等。

xml文件需要被命名为'[action-class]'-validation.xml。所以,在我们的例子中,我们创建一个文件,名为 employee-validation.xml包含以下内容:

<!doctype validators public 
"-//opensymphony group//xwork validator 1.0.2//en"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>
   <field name="name">
      <field-validator type="required">
         <message>
            the name is required.
         </message>
      </field-validator>
   </field>

   <field name="age">
     <field-validator type="int">
         <param name="min">29</param>
         <param name="max">64</param>
         <message>
            age must be in between 28 and 65
         </message>
      </field-validator>
   </field>
</validators>

上面的xml文件会被保存在classpath 沿着类文件。让我们有我们的雇员动作类没有validate()方法如下:

package com.h3.struts2;

import com.opensymphony.xwork2.actionsupport;

public class employee extends actionsupport{
   private string name;
   private int age;
   
   public string execute() 
   {
       return success;
   }
   public string getname() {
       return name;
   }
   public void setname(string name) {
       this.name = name;
   }
   public int getage() {
       return age;
   }
   public void setage(int age) {
       this.age = age;
   }
}

其余的设置将保持,因为它是我前面的例子,现在,如果运行应用程序,它会产生相同的结果是什么,我们在前面的例子:

xml文件来存储配置的优点是允许的验证从应用程序代码的分离。可以让开发人员编写的代码和业务分析师建立验证xml文件。要注意的是另一件事是默认提供的验证类型。有大量的验证,默认情况下,使用struts。常见的验证包括验证日期,正则表达式验证字符串长度的验证。检查以下链接更多细节 struts - 基于xml的校验.


所有评论

loading......

滚动到顶部 滚动到底部
合作联系(微信):
www.helper3.com
关于本站:
宗旨
网站备案号:
粤ICP备17073857号-1

声明:
本站部分内容来自网络,如您发现本站内容侵害到您的利益,请联系本站管理员处理。