struts2总结(一)--Struts2Hello World示例

转载:https://www.w3cschool.cn/struts_2/struts_examples.html

目录

 

创建一个动态Web项目:

创建Aciton类

创建视图

创建主页

配置文件

启用详细日志

执行应用程序


创建一个动态Web项目:

启动你的Eclipse,然后打开“File”>“New”>“Dynamic Web Project”,输入“HelloWorldStruts2”的项目名称,参照下图设置其他选项:

struts2总结(一)--Struts2Hello World示例_第1张图片

按照下图选择所有默认选项,最后检查 Generate Web.xml deployment descriptor 选项。这个将在Eclipse为你创建一个动态web项目。现在点击“Windows”>“Show”>“View”>“Project Explorer”,你就可以看到你的项目窗口,如下图:

struts2总结(一)--Struts2Hello World示例_第2张图片

从http://struts.apache.org/download.cgi中下载Struts 2.5.16版本的zip包解压后把lib中拷贝以下文件到项目的 WEB-INF\lib 文件夹里。你可以直接拖拽以下所有文件到 WEB-INF\lib 文件夹。

  • commons-fileupload-x.y.z.jar
  • commons-io-x.y.z.jar
  • commons-lang-x.y.jar
  • commons-logging-x.y.z.jar
  • commons-logging-api-x.y.jar
  • freemarker-x.y.z.jar
  • javassist-x.y.z.GA
  • ognl-x.y.z.jar
  • struts2-core-x.y.z.jar
  • xwork-core.x.y.z.jar

创建Aciton类

Action类是Struts2 应用程序的关键,我们通过它实现大部分的业务逻辑。那么让我们在“Java Resources”>“src”的类目下创建一个名称为“HelloWorldAction.java”的java文件夹,使用一个命名为“cn.w3cschool.struts2”并包含以下内容的资源包。

当用户点击一个URL时,由Action类来响应用户操作。一个或多个Action类的方法被执行,并返回一个字符串结果。基于结果的值,会呈现一个特定的JSP页面。

package cn.w3cschool.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”属性的类。对于“name”属性,我们用标准的getter和setter方法,以及一个返回“success”字符串的执行方法。

Struts2 框架将创建一个“HelloWorldAction”类的对象,并调用execute方法来响应用户的动作。你把你的业务逻辑放进execute方法里,最后会返回字符串常量。简单的描述每个URL,你需要实现一个Action类,你也可以用类名直接作为你的动作名,或者如下面内容所示使用 struts.xml 文件映射到其他name上。

创建视图

我们需要一个JSP来呈现最终的信息,当一个预定义动作发生时这个页面将被Struts2 框架调用,并且这个映像会定义到 struts.xml 文件里。那么让我们在你的Eclipse项目的WebContent文件夹里创建以下JSP文件 HelloWorld.jsp 。在project explorer中右键点击WebContent文件夹并选择“New”>“JSP File”

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>


Hello World


   Hello World, 

Taglib指令告知Servlet容器这个页面将使用Struts2 标签,并且这些标签会被s放在前面。s:property 标签显示Action类“name”属性的值,这个值是使用HelloWorldAction类的 getName() 方法返回的。

创建主页

在WebContent文件夹里,我们还需要创建 index.jsp 文件,这个文件是用作初始的action URL。用户可以通过点击它命令Struts2框架去调用HelloWorldAction类的定义方法并呈现HelloWorld.jsp视图。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
   pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
   


Hello World


   

Hello World From Struts2


上面视图文件里定义的hello action将通过struts.xml文件影射到HelloWorldAction类及其execute方法。当用户点击提交按钮时,将使得Struts2框架运行HelloWorldAction类中的execute方法,并基于该方法的返回值,选择一个适当的视图作为响应进行呈现。

配置文件

我们需要一个映像把URL、HelloWorldAction类(模型)以及 HelloWorld.jsp(视图)联系在一起。映像告知Struts2 框架哪个类将响应用户的动作(URL),类里的哪个方法将要执行,以及基于方法所返回的字符串结果,会呈现怎样的视图。

那么接下来让我们创建一个名为 struts.xml 的文件。因为Struts2 要求 strust.xml 文件显示在classes的文件夹里,所以我们要在WebContent/WEB-INF/classes 的文件夹下创建 struts.xml 文件。Eclipse并没有默认创建“classes”文件夹,因此你需要自己创建。在project explorer里右键点击WEB-INF文件夹并选择“New”>“Folder”,你的 struts.xml 文件应该如下:





   
     
      
            /HelloWorld.jsp
      
   

这里说几句关于上述的配置文件。这里我们设定常数struts.devMode的值为,因为我们是在开发环境下工作,需要查看一些有用的日志消息。然后,我们定义一个名为helloworld的数据包。当你想要把你的Actions集合在一起时,创建一个数据包是非常有用的。在我们的示例中,我们命名我们的动作为“hello”,与URL /hello.action保持一致,由HelloWorldAction.class进行备份。HelloWorldAction.classexecute方法就是当URL /hello.action被调用时运行。如果execute方法返回的结果为“success”,那么我们带用户进入HelloWorld.jsp

下一步是创建一个web.xml文件,这是一个适用于Struts2 任何请求的接入点。在部署描述符(web.xml)中,Struts2 应用程序的接入点将会定义为一个过滤器。因此我们将在web.xml里定义一个org.apache.struts2.dispatcher.FilterDispatcher 类的接入点,而web.xml文件需要在WebContent的WEB-INF文件夹下创建。Eclipse已经创建了一个基础的web.xml文件,你在创建项目的时候可以使用。那么,让我们参照以下内容做修改:



   
   Struts 2
   
      index.jsp
   
   
      struts2
      
         org.apache.struts2.dispatcher.FilterDispatcher
      
   

   
      struts2
      /*
   

我们指定了index.jsp作为我们的欢迎文件,那么我们已经配置好了在所有的URL(列如:所有匹配/*模式的URL)上运行Struts2 过滤器。

notes:

if it is struts2-core-2.5.jar then change your filter class tag value in web.xml to


     org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
  

if it is struts2-core-2.1.3.jar then change your filter class tag value in web.xml to


     org.apache.struts2.dispatcher.FilterDispatcher
  

FilterDispatcher is deprecated since Struts 2.1.3. If you are working with older versions then user above solution.

-->if it is struts2-core-2.3.X.jar then change your filter class tag value in web.xml to

 
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

启用详细日志

通过在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指定一个ConsoleHandler将日志记录按指定路线发送给stdout和FileHandler。程序运行日志的级别阈值可以使用SEVERE,WARNING,INFO,CONFIG,FINE,FINER,FINEST或者ALL。

这样,我们就准备好使用Struts 2运行我们的Hello World程序了。

执行应用程序

右键点击项目名称,接着点击“Export”>“WAR File”创建WAR文件,然后将WAR部署到Tomcat的webapps目录中。最后,启动Tomcat服务器并尝试访问URL http://localhost:8080/HelloWorldStruts2/index.jsp ,将会呈现如下图所示的结果:

struts2总结(一)--Struts2Hello World示例_第3张图片

输入一个“Struts2”值并提交页面,你可以看到以下页面

struts2总结(一)--Struts2Hello World示例_第4张图片

注意,你可以在struts.xml文件中定义一个索引作为操作,这样你可以调用索引页面 

http://localhost:8080/HelloWorldStruts2/index.action 。查看下面是怎样定义索引作为操作:





   

      
            /index.jsp
      

      
            /HelloWorld.jsp
      

   

 

你可能感兴趣的:(struts2总结)