`

Struts2的使用注解配置Action(零配置)

阅读更多

 最近在看Struts2的showcase,本打算先找个简单的看看,就选择了person,要么说没有中彩票的运气,第一个例子我就看不明白了,person的index.jsp里是这样调用action的

<html>
<head>
    <title>Acme Corp</title>
</head>

<body>
<ul>
    <li><a href="newPerson!input.action">Create</a> a new person</li>
    <li><a href="listPeople.action">List</a> all people</li>
</ul>
</body>
</html>

但是在struts-person.xml里却没有这个action的声明,只是声明了一个包,也没有默认的action类,后来”百度“了一下才知道,这个是Struts2的新特性,使用注解配置Action。

  使用注解配置Action第一个要做的就是在web.xml中配置FilterDispatcher,为FilterDispatcher设置 actionPackages参数,指定包含了Action类的包的列表,多个包之间用(,)分割,这些包和他们的子包都会被扫描。扫描的对象是包中所有实现了Action接口,或者以"Action"结尾的类。顺便说一下类名的匹配方法,把类名的第一个字母小写,如果以Action结尾的,去掉 Action。比如说一个类叫 DeletePersonAction 那么他的请求应该是deletePersion.action。

    <filter>
        <filter-name>struts-prepare</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
        <init-param>
            <param-name>actionPackages</param-name>
            <param-value>org.apache.struts2.showcase.person</param-value>
        </init-param>
    </filter>

这个配置的意思就是会扫描org.apache.struts2.showcase.person包里所有实现了Action接口,或者以"Action"结尾的类,所以"newPerson!input.action"这个请求对应的类应该是NewPersonAction的input 方法。

  我们再看看NewPersonAction.java这个文件

@ParentPackage("person")
public class NewPersonAction extends ActionSupport {

    private static final long serialVersionUID = 200410824352645515L;

    PersonManager personManager;
    Person person;

    public void setPersonManager(PersonManager personManager) {
        this.personManager = personManager;
    }

    public String execute() {
        personManager.createPerson(person);

        return SUCCESS;
    }

    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }
}

所谓的零配置就是把相关的注解写到Action类里,比如ParentPackage,Namespace,Result,Results
  例如:

@Namespace("/person")     //指定名称空间
@ParentPackage("person")  //指定继承的包,struts-default无需指定
@Result("/success.jsp")  //指定success,因为success是默认的,所以不用指定name
@Results({
    @Result("name="input", value="/input.jsp"),
    @Result("name="error", value="/error.jsp", type=ServletDispatcherResult.class)
    })
public class NewPersonAction extends ActionSupport {

    。。。。
}


  但是NewPersonAction.java里并没有指定result,那它是怎么转移的呢?这个是codebehind插件的作用。在struts.xml里有这样的设定,也就是说person这个包应用了codebehind的功能

<constant name="struts.codebehind.defaultPackage" value="person" />


参考网址是
http://struts.apache.org/2.0.6/docs/codebehind-plugin.html

我想因为这个,所以NewPersonAction会跳转到newPerson.ftl上。

<!-- -->
分享到:
评论

相关推荐

    Struts 2使用注解配置Action

    在"Struts 2使用注解配置Action"中,我们不再需要在struts.xml中为每个Action类手动添加配置。相反,我们可以在Action类或者方法上直接使用注解来声明它们的功能。这样不仅提高了代码的可读性,还使得配置更加灵活。...

    struts2 使用注解现在零配置不需要在使用struts.xml配置文件,可以直接跑

    在Struts2中,注解的引入使得开发者可以摆脱繁琐的`struts.xml`配置文件,实现“零配置”运行。 首先,让我们了解什么是注解(Annotation)。注解是Java提供的一种元数据机制,允许在源代码中嵌入信息,这些信息...

    struts2注解配置Action及拦截器几种不同方式写法对应的路径指向.docx

    "Struts2 注解配置 Action 及拦截器几种不同方式写法对应的路径指向" Struts2 注解配置 Action 及拦截器是 Struts2 框架中的核心组件之一,负责处理用户请求并返回响应结果。下面,我们将通过详细的解释和示例代码...

    Struts2+spring注解配置

    Struts2 和 Spring 的整合是企业级 Java Web 开发中常见的技术栈,通过注解配置可以使项目更加简洁、易于维护。Struts2 提供了一种使用注解替代 XML 配置的方式,使得开发者无需编写繁琐的 struts.xml 文件,即可...

    Struts2之Annotation注解配置使用案例struts013

    首先,了解`@Action`注解是理解Struts2注解配置的关键。这个注解用于标记一个类或方法作为处理HTTP请求的动作。例如: ```java @Action(value = "saveUser", results = { @Result(name = "success", location = ...

    struts2中使用注解配置Action方法详解

    Struts2中使用注解配置Action方法详解 Struts2框架提供了四个与Action相关的注解类型,分别为ParentPackage、Namespace、Result和Action。这四个注解类型可以帮助开发者更方便地配置Action,实现零配置,零配置将从...

    Struts2注解配置教程

    Struts2注解配置教程是指导开发者如何使用Java注解替代传统的XML配置来配置Struts2框架的一个教程系列。本文档主要涵盖了Struts2中注解配置的一些基本知识点以及如何通过注解实现零配置。 ### 注解配置之前 在介绍...

    使用注解配置Action

    总结一下,Struts2的注解配置Action可以简化开发流程,提高效率。`@Action`和`@Result`注解是主要的工具,它们帮助我们定义Action的URL和结果页面。同时,遇到`NoClassDefFoundError`异常时,检查并确保项目依赖正确...

    struts2.3.4.1注解零配置

    在这个"struts2.3.4.1注解零配置"的例子中,我们将深入探讨如何利用Struts2的注解来构建一个简单的登录系统。 首先,了解Struts2的核心概念是必要的。Struts2是一个基于MVC(Model-View-Controller)设计模式的框架...

    struts2注解配置全面解析

    本文旨在为读者提供一套详尽的Struts2注解配置指南,帮助大家快速理解和掌握如何通过注解来配置Struts2的Action。 #### 二、Struts2注解配置基础 ##### 1. Struts2注解支持概述 - **插件依赖**:要启用Struts2的...

    Struts2+spring注解配置简介

    Struts2的注解配置主要集中在Action类和结果类型上。使用@Action注解,我们可以直接在Action类上声明其对应的URL路径,而无需在struts.xml文件中进行配置。例如: ```java @Action(value = "saveUser", results = {...

    struts2注解配置

    Struts2注解配置是Java Web开发中一种高效、简洁的框架配置方式,它允许开发者在类或方法级别上直接定义Action、结果类型、参数映射等信息,从而避免了传统XML配置文件的繁琐。本资料集合了关于Struts2注解配置的...

    Struts2使用注解实现文件的上传与下载

    在处理文件上传和下载这类常见任务时,Struts2提供了一种简洁的方法,尤其是通过注解进行配置,可以实现“零XML”配置,使得开发过程更加高效。本文将深入探讨如何使用Struts2的注解来实现文件的上传与下载。 首先...

    struts2 零配置

    使用注解配置Action** 在Action类中,我们可以使用`@Action`注解来指定Action的名称和执行方法。例如: ```java @Action(value = "helloWorld") public class HelloWorldAction { public String execute() { ...

    Struts2注解使用说明文档

    Struts2 是一个流行的Java Web框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在Struts2的版本2.1之后,它引入...例如,可以使用Struts2的注解(如`@Action`,`@Result`等)来覆盖或补充Convention的默认行为。

    Struts2零配置

    在传统的Struts2应用中,开发者需要在多个XML文件中配置Action、结果页面、拦截器等,而“零配置”则是对这种繁琐配置的优化。 **一、Struts2框架基础** Struts2是一个基于MVC(Model-View-Controller)设计模式的...

    struts2注解详解

    从 Struts2.1 版本开始,官方不再推荐使用 Codebehind 作为零配置插件,而是转向了 Convention 插件来实现零配置的目标。相较于 Codebehind,Convention 插件更加彻底地简化了配置过程,不仅不需要使用 struts.xml ...

    Struts2 注解 Demo

    其次,Struts2还提供了其他有用的注解,如`@Namespace`定义Action的命名空间,`@ParentPackage`指定Action继承的包配置,`@Results`用于定义多个结果,以及`@Action(value="", results={...})`的组合使用,可以将...

    Struts2全注解方式实现文件上传与下载

    Struts2允许开发者使用注解来配置Action类,而不是传统的XML配置文件。这种注解驱动的方式使得代码更加简洁,易于维护。例如,我们可以使用`@Action`注解标记一个方法作为处理请求的入口,`@Result`注解则可以定义...

    struts2注解配置简单实例

    在这个例子中,`src/main/java`下会有Action类,`src/main/resources`可能包含Struts2的配置文件,尽管在注解配置中我们可能不再需要传统的XML配置。此外,`src/main/webapp`目录下会存放JSP页面和其他Web资源。 在...

Global site tag (gtag.js) - Google Analytics