在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
如前章节中所讲到的,Struts提供了两种形式的配置。传统的方式是对所有配置使用struts.xml文件。到目前为止,我们在教程里已经看到了好些这样的例子。配置Struts的另一种方法是使用Java5 的注释功能。使用struts注释,我们可以实现零配置。 要在项目中开始使用注释,请确保WebContent/WEB-INF/lib文件夹中包含以下jar文件:
为了解释Struts2 中注释的概念,我们必须重新使用在Struts2 验证框架章节中所学习的验证示例。 这里我们将举一个Employee的例子,employee的名字和年龄使用一个简单的页面捕获,我们将进行两次验证,以确保用户始终输入一个名字,并且年龄应在28和65之间。那么,让我们从示例的JSP主页面开始。
创建主页首先,先开始写用来收集上面提到的Employee相关信息的主页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,在定义的action返回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> 创建ActionAction是使用注释的地方。让我们重新定义具有注释的action类Employee,然后如下所示在Employee.java文件中添加一个名为validate()的方法。需要确保action类扩展了ActionSupport类,否则将不会执行validate方法。 package cn.ogeek.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; } } 我们在这个例子中使用了一些注释,让我们逐个了解一下:
配置文件实际上我们真的不需要struts.xml配置文件,可以删除这个文件,直接来查看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> <init-param> <param-name>struts.devMode</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> 现在,右键单击项目名称,然后单击“Export”> “WAR File”以创建WAR文件。然后在Tomcat的webapps目录中部署WAR文件。最后,启动Tomcat服务器并尝试访问URL http://localhost:8080/HelloWorldStruts2/index.jsp,将显示以下界面: 先不要输入任何所需的信息,只点击“Submit”按钮。你将看到以下结果: 输入所要求的信息而非错误类的字段,如名称为“text”,年龄为30,然后点击Submit按钮,可以看到以下界面: Struts2 注释类型
Struts2 应用程序可以使用Java5注释来替代XML和Java属性的配置。你可以查看与不同类别相关的最重要注释的列表:Struts2 注释类型。 |
请发表评论