📅  最后修改于: 2020-11-11 04:54:40             🧑  作者: Mango
正如您已经从Struts 2架构中学到的那样,当您单击超链接或在Struts 2 Web应用程序中提交HTML表单时,输入将由Controller收集,并发送到名为Actions的Java类。执行动作后,结果将选择一个资源来呈现响应。该资源通常是JSP,但也可以是PDF文件,Excel电子表格或Java applet窗口。
假设您已经建立了开发环境。现在,让我们继续构建第一个Hello World Struts2项目。该项目的目的是构建一个收集用户名并显示“ Hello World”和用户名的Web应用程序。
对于任何Struts 2项目,我们都必须创建以下四个组件-
Sr.No | Components & Description |
---|---|
1 |
Action Create an action class which will contain complete business logic and control the interaction between the user, the model, and the view. |
2 |
Interceptors Create interceptors if required, or use existing interceptors. This is part of Controller. |
3 |
View Create a JSPs to interact with the user to take input and to present the final messages. |
4 |
Configuration Files Create configuration files to couple the Action, View and Controllers. These files are struts.xml, web.xml, struts.properties. |
我将使用Eclipse IDE,以便将在Dynamic Web Project下创建所有必需的组件。现在让我们开始创建动态Web项目。
启动Eclipse,然后转到文件>新建>动态Web项目,然后输入项目名称为HelloWorldStruts2并设置其余选项,如以下屏幕所示:
在接下来的屏幕中选择所有默认选项,最后选中Generate Web.xml部署描述符选项。这将在Eclipse中为您创建一个动态Web项目。现在转到Windows> Show View> Project Explorer ,您将看到项目窗口,如下所示:
现在,将以下文件从struts 2 lib文件夹C:\ struts-2.2.3 \ lib复制到我们项目的WEB-INF \ lib文件夹中。为此,您可以简单地将以下所有文件拖放到WEB-INF \ lib文件夹中。
动作类是Struts 2应用程序的关键,我们在动作类中实现了大多数业务逻辑。因此,让我们在Java资源> src下创建一个Java文件HelloWorldAction.java,其包名称为com.tutorialspoint.struts2 ,其内容如下。
当用户单击URL时,Action类响应用户的操作。执行Action类的一个或多个方法,并返回String结果。根据结果的值,呈现特定的JSP页面。
package com.tutorialspoint.struts2;
public class HelloWorldAction {
private String name;
public String execute() throws Exception {
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
这是一个非常简单的类,具有一个称为“名称”的属性。我们具有用于“ name”属性的标准getter和setter方法,以及具有返回字符串“ success”的execute方法。
Struts 2框架将创建HelloWorldAction类的对象,并响应用户的操作调用已执行的方法。您将业务逻辑放入此方法中,该方法最终返回String常量。换句话说,对于每个URL,您都必须实现一个动作类,或者可以直接使用该类名作为动作名,或者可以使用struts.xml文件映射到其他名称,如下所示。
我们需要一个JSP来呈现最终消息,当发生预定义的动作并且此映射将在struts.xml文件中定义时,Struts 2框架将调用此页面。因此,让我们在Eclipse项目的WebContent文件夹中创建以下jsp文件HelloWorld.jsp 。为此,请在项目资源管理器中的WebContent文件夹上单击鼠标右键,然后选择New> JSP File 。
Hello World
Hello World,
taglib指令告诉Servlet容器此页面将使用Struts 2标签,并且这些标签将以s开头。
s:property标记显示操作类属性“名称”的值,该值由HelloWorldAction类的getName()方法返回。
我们还需要在WebContent文件夹中创建index.jsp 。该文件将用作初始操作URL,用户可以单击该URL告诉Struts 2框架调用HelloWorldAction类的已定义方法并呈现HelloWorld.jsp视图。
Hello World
Hello World From Struts2
上面的视图文件中定义的hello操作将使用struts.xml文件映射到HelloWorldAction类及其执行方法。当用户单击Submit按钮时,它将使Struts 2框架运行HelloWorldAction类中定义的execute方法,并基于该方法的返回值,将选择一个适当的视图并将其呈现为响应。
我们需要一个映射来将URL,HelloWorldAction类(模型)和HelloWorld.jsp(视图)绑定在一起。该映射告诉Struts 2框架哪个类将响应用户的操作(URL),将执行该类的哪个方法以及基于该方法返回的String结果呈现的视图。
因此,让我们创建一个名为struts.xml的文件。由于Struts 2要求在类文件夹中存在struts.xml。因此,在WebContent / WEB-INF / classes文件夹下创建struts.xml文件。 Eclipse默认情况下不创建“ classes”文件夹,因此您需要自己执行此操作。为此,请在项目资源管理器中的WEB-INF文件夹上单击鼠标右键,然后选择“新建”>“文件夹” 。您的struts.xml应该看起来像-
/HelloWorld.jsp
关于上述配置文件,无需多说。在这里,我们将常量struts.devMode设置为true ,因为我们正在开发环境中工作,并且需要查看一些有用的日志消息。然后,我们定义一个名为helloworld的包。
当您想将操作分组在一起时,创建包非常有用。在我们的示例中,我们将操作命名为“ hello”,它对应于URL /hello.action ,并由HelloWorldAction.class进行备份。 HelloWorldAction.class的execute方法是在调用URL /hello.action时运行的方法。如果execute方法的结果返回“成功”,则将用户带到HelloWorld.jsp 。
下一步是创建一个web.xml文件,该文件是对Struts 2的任何请求的入口点。Struts2应用程序的入口点将是在部署描述符(web.xml)中定义的过滤器。因此,我们将在web.xml中定义org.apache.struts2.dispatcher.FilterDispatcher类的条目。需要在WebContent下的WEB-INF文件夹下创建web.xml文件。在创建项目时,Eclipse已经为您创建了一个框架web.xml文件。因此,让我们如下修改它-
Struts 2
index.jsp
struts2
org.apache.struts2.dispatcher.FilterDispatcher
struts2
/*
我们已将index.jsp指定为我们的欢迎文件。然后,我们将Struts2过滤器配置为在所有网址(即,与模式/ *匹配的任何网址)上运行
通过在WEB-INF / classes文件夹下创建logging.properties文件,可以在使用Struts 2时启用完整的日志记录功能。在属性文件中保留以下两行:
org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = \
java.util.logging.ConsoleHandler
默认logging.properties指定用于将日志记录路由到stdout的ConsoleHandler以及FileHandler。可以使用SEVERE,WARNING,INFO,CONFIG,FINE,FINNER,FINEST或ALL设置处理程序的日志级别阈值。
而已。我们准备使用Struts 2框架运行Hello World应用程序。
右键单击项目名称,然后单击导出> WAR文件以创建War文件。
然后,将此WAR部署在Tomcat的webapps目录中。
最后,启动Tomcat服务器并尝试访问URL http:// localhost:8080 / HelloWorldStruts2 / index.jsp 。这将为您提供以下屏幕-
输入值“ Struts2”并提交页面。您应该看到下一页
请注意,您可以在struts.xml文件中将index定义为操作,在这种情况下,您可以将索引页面称为http:// localhost:8080 / HelloWorldStruts2 / index.action 。检查下面如何将索引定义为操作-
/index.jsp
/HelloWorld.jsp