📜  Struts 2-Hello World示例

📅  最后修改于: 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项目。

创建一个动态Web项目

启动Eclipse,然后转到文件>新建>动态Web项目,然后输入项目名称为HelloWorldStruts2并设置其余选项,如以下屏幕所示:

Hello World Sturts1

在接下来的屏幕中选择所有默认选项,最后选中Generate Web.xml部署描述符选项。这将在Eclipse中为您创建一个动态Web项目。现在转到Windows> Show View> Project Explorer ,您将看到项目窗口,如下所示:

Hello World Sturts2

现在,将以下文件从struts 2 lib文件夹C:\ struts-2.2.3 \ lib复制到我们项目的WEB-INF \ lib文件夹中。为此,您可以简单地将以下所有文件拖放到WEB-INF \ lib文件夹中。

  • 公共文件上传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 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.classexecute方法是在调用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 。这将为您提供以下屏幕-

你好世界Struts4

输入值“ Struts2”并提交页面。您应该看到下一页

你好世界Struts5

请注意,您可以在struts.xml文件中将index定义为操作,在这种情况下,您可以将索引页面称为http:// localhost:8080 / HelloWorldStruts2 / index.action 。检查下面如何将索引定义为操作-




   
   

      
         /index.jsp
      

      
         /HelloWorld.jsp