📜  Struts 2-注释

📅  最后修改于: 2020-11-11 05:04:30             🧑  作者: Mango


如前所述,Struts提供了两种配置形式。传统方式是将struts.xml文件用于所有配置。到目前为止,我们已经在教程中看到了很多这样的示例。配置Struts的另一种方法是使用Java 5注释功能。使用struts批注,我们可以实现“零配置”

要开始在项目中使用注释,请确保已在WebContent / WEB-INF / lib文件夹中包含以下jar文件-

  • struts2-convention-plugin-xyzjar
  • asm-xyjar
  • Antlr-xyzjar
  • 公共文件上传xyzjar
  • Commons-io-Xyzjar
  • Commons-lang-xyjar
  • 公地记录xyzjar
  • Commons-Logging-api-xyjar
  • freemarker-xyzjar
  • javassist-.xy.z.GA
  • ognl-xyzjar
  • struts2-core-xyzjar
  • xwork-core.xyzjar

现在,让我们看看如何取消struts.xml文件中可用的配置并将其替换为注释。

为了解释Struts2中注释的概念,我们将不得不重新考虑在Struts2验证一章中说明的验证示例。

在这里,我们以一个雇员的示例为例,该雇员的姓名,年龄将通过一个简单的页面捕获,我们将进行两次验证以确保ÜSER始终输入姓名,年龄应在28到65之间。

让我们从示例的主要JSP页面开始。

创建主页

让我们编写主页JSP文件index.jsp ,该文件用于收集上述的Employee相关信息。

Employee Form
   

   
      
      

index.jsp使用了Struts标记,我们尚未介绍它,但是我们将在与标记相关的章节中进行研究。但是现在,仅假设s:textfield标签打印一个输入字段,而s:submit打印一个提交按钮。我们为每个标签使用了label属性,从而为每个标签创建标签。

创建视图

我们将使用JSP文件success.jsp ,如果定义的操作返回SUCCESS ,则将调用该文件。

Success
   
   
   
      Employee Information is captured successfully.
   

建立动作

这是使用注释的地方。让我们用批注重新定义操作类Employee ,然后添加一个名为validate()的方法,如下所示在Employee.java文件中。确保您的操作类扩展了ActionSupport类,否则将不执行您的validate方法。

package com.tutorialspoint.struts2;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.opensymphony.xwork2.validator.annotations.*;

@Results({
   @Result(name = "success", Location = "/success.jsp"),
   @Result(name = "input", Location = "/index.jsp")
})
public class Employee extends ActionSupport {
   private String name;
   private int age;

   @Action(value = "/empinfo")
   
   public String execute() {
      return SUCCESS;
   }

   @RequiredFieldValidator( message = "The name is required" )
   
   public String getName() {
      return name;
   }
   
   public void setName(String name) {
      this.name = name;
   }

   @IntRangeFieldValidator(message = "Age must be in between 28 and 65", min = "29", max = "65")
   
   public int getAge() {
      return age;
   }
   
   public void setAge(int age) {
      this.age = age;
   }
}

在此示例中,我们使用了很少的注释。让我一个一个地经历它们-

  • 首先,我们包含了结果注释。结果注释是结果的集合。

  • 在结果注释下,我们有两个结果注释。结果注释的名称与execute方法的结果相对应。它们还包含一个位置,该位置对应于execute()的返回值应提供的视图

  • 下一个注释是动作注释。这用于装饰execute()方法。 Action方法还接受一个值,该值是在其上调用操作的URL。

  • 最后,我使用了两个验证注释。我在名称字段上配置了必填字段验证器,在年龄字段上配置了整数范围验证器。我还为验证指定了自定义消息。

配置文件

我们确实不需要struts.xml配置文件,因此让我们删除该文件并检查web.xml文件的内容-




   Struts 2
   
   
      index.jsp
   

   
      struts2
      
      
         org.apache.struts2.dispatcher.FilterDispatcher
      
      
      
         struts.devMode
         true
      
   

   
      struts2
      /*
   

现在,右键单击项目名称,然后单击导出> WAR文件以创建War文件。然后,将此WAR部署在Tomcat的webapps目录中。最后,启动Tomcat服务器并尝试访问URL http:// localhost:8080 / HelloWorldStruts2 / index.jsp 。这将产生以下屏幕-

电子邮件用户输入

现在,无需输入任何必需的信息,只需单击“提交”按钮。您将看到以下结果-

错误

输入所需的信息,但输入错误的“发件人”字段,让我们说名称为“ test”,年龄为30,最后单击Submit按钮。您将看到以下结果-

成功

Struts 2注释类型

Struts 2应用程序可以使用Java 5注释来替代XML和Java属性配置。您可以检查与不同类别相关的最重要注释的列表-

Struts 2注释类型