教程 > struts 教程 > 阅读:79

struts 2 第一个示例——迹忆客-ag捕鱼王app官网

正如我们已经从 struts 2 架构中了解到的那样,当我们在 struts 2 web 应用程序中单击超链接或提交 html 表单时,输入由控制器收集,然后发送到名为 actions 的 java 类。 执行 action 后,结果会选择一个资源来呈现响应。资源通常是 jsp,但也可以是 pdf 文件、excel 电子表格或 java 小程序窗口。

假设我们已经构建了开发环境。 现在,让我们继续构建我们的第一个 hello world struts2 项目。 该项目的目的是构建一个 web 应用程序,该应用程序收集用户名并显示“hello world”,后跟用户名。

我们必须为任何 struts 2 项目创建以下四个组件

序号 组件 说明
1 action 创建一个动作类,它将包含完整的业务逻辑并控制用户、模型和视图之间的交互。
2 interceptors 如果需要,创建拦截器,或使用现有的拦截器。 这是控制器的一部分。
3 view 创建一个 jsp 来与用户交互从而获取输入并呈现最终消息。
4 configuration files 创建配置文件来耦合操作、视图和控制器。 这些文件是 struts.xml、web.xml、struts.properties。

我们将使用 idea,以便在动态 web 项目下创建所有必需的组件。 我们从 struts 2 环境安装 一节已经创建了一个项目,我们直接使用那个项目。

创建 action 类

action 类是 struts 2 应用程序的关键,我们在 action 类中实现了大部分业务逻辑。 因此,让我们在 java resources > src 下创建一个 java 文件 helloworldaction.java,其包名称为 com.jiyik.struts2,内容如下。

当用户单击 url 时,action 类响应用户操作。 执行 action 类的一个或多个方法并返回 string 结果。 根据结果的值,呈现特定的 jsp 页面。

package com.jiyik.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”属性的标准 gettersetter 方法以及返回字符串“success”的执行方法。

struts 2 框架将创建一个 helloworldaction 类的对象并调用执行的方法来响应用户的操作。 我们将业务逻辑放入此方法中,该方法最终返回 string 常量。 换句话说,对于每个 url,我们必须实现一个操作类,可以直接使用该类名称作为我们的操作名称,也可以使用 struts.xml 文件映射到其他名称。

创建视图

我们需要一个 jsp 来呈现最终信息,当发生预定义的操作时,struts 2 框架将调用此页面,并且此映射将在 struts.xml 文件中定义。 因此,让我们在项目的 web 文件夹中创建以下 jsp 文件 hello.jsp

<%@ page contenttype = "text/html; charset = utf-8" %>
<%@ taglib prefix = "s" uri = "/struts-tags" %>
   
      hello world
   
   
   
      hello world, ${name}
   

taglib 指令告诉 servlet 容器该页面将使用 struts 2 标记,并且这些标记将以 s 开头。

s:property 标记显示动作类属性“name>”的值,该值由 helloworldaction 类的 getname() 方法返回。

创建ag捕鱼王app官网主页

我们还需要在 web 文件夹中创建 index.jsp。 该文件将用作初始操作 url,用户可以单击该 url 以告知 struts 2 框架调用 helloworldaction 类的已定义方法并呈现 hello.jsp 视图。

<%@ page language = "java" contenttype = "text/html; charset = iso-8859-1"
         pageencoding = "iso-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>

  hello world


上述视图文件中定义的 hello 动作将使用 struts.xml 文件映射到 helloworldaction 类及其执行方法。 当用户单击“提交”按钮时,它将导致 struts 2 框架运行在 helloworldaction 类中定义的执行方法,并且基于该方法的返回值,将选择适当的视图并将其呈现为响应。

配置文件

我们需要一个映射来将 url、helloworldaction 类(模型)和 hello.jsp(视图)联系在一起。 该映射告诉 struts 2 框架哪个类将响应用户的操作(url),该类的哪个方法将被执行,以及基于该方法返回的字符串结果呈现什么视图。

因此,让我们创建一个名为 struts.xml 的文件。 由于 struts 2 要求 struts.xml 存在于 classes 文件夹中。 因此,在 web/web-inf/classes 文件夹下创建 struts.xml 文件。 默认情况下,idea 不会创建“classes”文件夹,因此我们需要自己创建。 struts.xml 应该看起来像



        
        
    
        
            /hello.jsp
        
    

关于上面的配置文件需要理解的几句话。在这里,我们将常量 struts.devmode 设置为 true,因为我们在开发环境中工作,我们需要查看一些有用的日志消息。然后,我们定义了一个名为 helloworld 的包。

当我们想将操作组合在一起时,创建一个包很有用。在我们的示例中,我们将操作命名为“hello”,它对应于 url /hello.action,并由 helloworldaction.class 支持。 helloworldaction.class 的 execute 方法是调用 url /hello.action 时运行的方法。如果执行方法的结果返回“成功”,那么我们将用户带到 hello.jsp。

下一步是创建一个 web.xml 文件,它是对 struts 2 的任何请求的入口点。struts2 应用程序的入口点将是部署描述符 (web.xml) 中定义的过滤器。因此,我们将在 web.xml 中定义 org.apache.struts2.dispatcher.defaultactionsupport 类的条目。 web.xml文件需要在 web 下的 web-inf 文件夹下创建。在创建项目时,idea 已经为我们创建了一个框架 web.xml 文件。所以,让我们修改如下



    struts 2
    
        index.jsp
    
    
        struts2
        
            org.apache.struts2.dispatcher.defaultactionsupport
        
    
    
        struts2
        /*
    

我们已经指定 index.jsp 作为我们的欢迎文件。 然后我们将 struts2 过滤器配置为在所有 url 上运行(即任何匹配模式 /* 的 url)

启用详细日志

通过在 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。 可以使用 severewarninginfoconfigfinefiner 、finest 或 all 设置处理程序的日志级别阈值。

就是这样。 我们已准备好使用 struts 2 框架运行我们的 hello world 应用程序。

struts2 运行示例

这里我们使用 idea 运行struts 2。需要配置 tomcat server。可以参考 中关于 tomcat 配置的方法。

查看笔记

扫码一下
查看教程更方便
网站地图