`
yzl45
  • 浏览: 33769 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2 Convention plugin

阅读更多

Convention Plugin

原文: http://cwiki.apache.org/WW/convention-plugin.html

翻译:石太祥 ealpha@gmail.com    http://www.lalfa.com

·                                 Introduction

·                                 Setup

·                                 Converting a Codebehind based application to Convention

·                                 Hello world

·                                 Code behind hello world

·                                 Results and result codes

·                                 Chaining

·                                 XWork packages

·                                 Annotation reference

o                                                        9.1 Action annotation

o                                                        9.2 InterceptorRef annotation

o                                                        9.3 Result annotation

o                                                        9.4 Namespace annotation

o                                                        9.5 ResultPath annotation

o                                                        9.6 ParentPackage annotation

o                                                        9.7 ExceptionMapping Annotation

·                                 10 Actions in jar files

·                                 11 Automatic configuration reloading

·                                 12 Troubleshooting

o                                                        12.1 Tips

o                                                        12.2 Common Errors

·                                 13 Configuration reference

Introduction

struts2.1 版本开始, Convention Plugin 作为替换替换 Codebehind Plugin 来实现 Struts2 的零配置。

  • 包命名习惯来指定 Action 位置
  • 命名习惯制定结果(支持 JSP,FreeMarker 等)路径
  • 类名到 URL 的约定转换
  • 包名到命名空间( namespace )的约定转换
  • 遵循 SEO 规范的链接地址(即:使用 my-action 来替代 MyAction
  • 基于注解的 Action
  • 基于注解的拦截机( Interceptor
  • 基于注解的命名空间( Nameespace
  • 基于注解的 XWork
  • 默认 action 以及默认的结果(比如: /products 将会尝试寻找 com.example.actions.Products com.example.actions.products.Index 进行处理)

无需配置 Convention 即可使用 Convention Convention 的某些约束习惯可以通过配置属性来控制,您也可以在类中覆写其中的方法来达到扩展目地。

安装

使用 Convention 插件,你需要将其 JAR 文件放到你应用的 WEB-INF/lib 目录中,你也可以在你 Macen 项目的 POM 文件中添加下面包依赖

<dependency>

  <groupId> org.apache.struts </groupId>

  <artifactId> struts2-convention-plugin </artifactId>

  <version> 2.1.6 </version>

</dependency>

转换基于 Codebehind 项目到 Convention

跳转到 此页面 ,查看需要修改的变化和小提示

如果你想在你系统中结合 Convention 插件使用 REST 。需要在你项目的 struts.xml 中添加如下配置

<constant name= "struts.convention.action.suffix" value= "Controller" />

<constant name= "struts.convention.action.mapAllMatches" value= "true" />

<constant name= "struts.convention.default.parent.package" value= "rest-default" />

Hello world

到目前为止,你已经在你项目中添加了 Convention 插件支持,首先我们从一个非常简单的例子开始入手。本例中,我们将演示根据访问 URL 来访问固定的 Action ,默认情况下, Convention 会默认所有的结果页面都存储在 WEB-INF/content 下,你也可以在 struts properties 文件中设定 struts.convention.result.path 的值到一个新的路径。路径最后 “/” 是不必要的, Convention 会自动进行处理。以下是本例的 JSP 文件

WEB-INF/content/hello-world.jsp

<html>

<body>

Hello world!

</body>

</html>

启动 Tomcat 或其他你所使用的 JEE 容器,在浏览器访问 http://localhost:8080/hello-world 你可看到以下信息:

WEB-INF/content/hello-world.jsp

Hello world!

这表明, Convention 已经能正常运行,并找到了结果。即使在没有 action 存在情况下, convention 也会根据 URL 规则来找到结果页面。

Code behind hello world

我们继续扩展本例并添加代码实现类。为了实现本功能,首先需要 Convention 能正确找到我们的 Action 类,默认情况下, Convention 会找到 com.opensymphony.xwork2.Action 的实现类,或制定包中以 Action 结尾的类 action

Convention 使用以下方法来搜索类路径,首先, Convention 会从根 package 中寻找包名含有 struts struts2action  or actions 的任意 packages 。下一部, Convention 从前一步找到的 package 以及其子 package 中寻找 com.opensymphony.xwork2.Action 的实现以及以 Action 结尾的类,下面为 Convention 寻找的类

Classes

com.example.actions.MainAction

com.example.actions.products.Display ( implements com.opensymphony.xwork2.Action)

com.example.struts.company.details.ShowCompanyDetailsAction

每一个被 Convention 找到 action 都会对应一个明确的 URL 地址, URL package 的名字以及 Action 类名为基础。

首先 Convention 从根 package 以及类所在的 package 名来确定对应的 URL 中的路径( namespace ),以下就是根据 package 确定的 URL namespace

Namespaces

com.example.actions.MainAction -> /

com.example.actions.products.Display -> /products

com.example.struts.company.details.ShowCompanyDetailsAction -> /company/details

接下来 Convention 需要确定 URL 的具体资源部分。第一步取消类名中的 Action ,并以 ”-” 来分割类名的其他部分,且将每个分部的首字母转为小写。如下所示

Full URLs

com.example.actions.MainAction -> /main

com.example.actions.products.Display -> /products/display

com.example.struts.company.details.ShowCompanyDetailsAction -> /company/details/show-company-details

你也可以通过配置 struts.convention.exclude.packages 来告诉 Convention 忽略某些包,也可以设置 struts.convention.package.locators 用来更改 Convention 默认的根 packages ,最后你还可以设置  struts.convention.action.packages . 来让 Convention 只搜索特定 package 下的 Action

以下就是 action 类的实现代码:

com.example.actions.HelloWorld

package com.example.actions;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorld extends ActionSupport {

  private String message;

  public String getMessage() {

    return message;

 }

  public String execute() {

    message = "Hello World!" ;

    return SUCCESS;

 }

}

编译以上代码,并将其 class 放到 WEB-INF/classes 中, Convention 将会将 /hello-world 映射到这个

分享到:
评论

相关推荐

    Struts2 Convention Plugin中文文档 Annotion

    Struts2 Convention Plugin 是从 Struts2.1 版本开始引入的一个插件,它的主要目标是实现 Struts2 框架的零配置。通过约定优于配置的原则,开发者可以更加专注于业务逻辑,减少大量的 XML 配置工作。以下是 ...

    struts2 convention plugin(插件) 测试项目

    Struts2 Convention Plugin是Apache Struts框架的一个重要组成部分,它为开发者提供了一种更为便捷的配置方式,使得在Struts2应用中实现MVC模式变得更加简单。这个测试项目旨在帮助我们理解和掌握如何在实际开发中...

    struts2采用convention-plugin实现零配置

    然而,随着版本的更新,Struts2引入了一个名为Convention Plugin的新特性,旨在简化配置过程,实现所谓的“零配置”开发。 **什么是Struts2 Convention Plugin?** Convention Plugin是Struts2的一个插件,它基于...

    Struts2_Convention_Plugin中文文档

    Struts2 Convention Plugin是Apache Struts框架的一个重要插件,主要目标是简化MVC(Model-View-Controller)架构中的配置工作。这个插件引入了一种约定优于配置(Convention over Configuration)的理念,允许...

    struts2-convention-plugin

    ### Struts2 Convention Plugin详解 #### 一、引言 从Struts2的2.1版本开始,Convention Plugin被引入,旨在替代原有的Codebehind Plugin,实现Struts2框架下的零配置理念。这一转变简化了应用程序的开发流程,...

    struts _convention _plugin application

    Struts2 Convention Plugin 应用详解 Struts2 是一个非常流行的开源 Java 框架,用于构建基于 Model-View-Controller(MVC)架构的Web应用程序。它提供了丰富的功能和灵活性,使得开发者能够更高效地开发Web应用。...

    struts2-convention-plugin-2.3.24.1

    struts2-convention-plugin-2.3.24.1

    struts2-convention-plugin-2.3.15.1.jar

    struts2-convention-plugin-2.3.15.1.jar

    Struts2注解详细说明文档

    自Struts2.1版本开始,引入了一个重要的插件——Convention Plugin,该插件通过一系列约定简化了Struts2的配置过程,使得开发者可以更加专注于业务逻辑而非繁琐的配置。 #### 二、Struts2 Convention Plugin核心...

    struts2-convention-plugin-2.1.6.jar

    struts2-convention-plugin-2.1.6.jar

    STRUTS2 Convention零配置

    为了在项目中启用Convention插件,首先需要添加`struts2-convention-plugin`到项目的依赖中。对于Struts2.1.6版本来说,需要将`struts-Convention-plugin-2.1.6.jar`文件放置于项目的`WEB-INF/lib`目录下。 #### 2....

    struts2-convention-plugin-2.3.1.jar

    struts2-convention-plugin-2.3.1.jar,使用注解的方式代替xml配置action,必须要引用这个包。

    struts2-convention-plugin-2.1.8.jar

    struts2-convention-plugin-2.1.8.jar

    struts2-convention-plugin-2.3.32

    struts2-convention-plugin-2.3.32

    struts2-convention-plugin-2.3.24.jar

    struts2-convention-plugin-2.3.24.jar

    struts2-convention-plugin-2.3.1.2.jar

    struts2-convention-plugin-2.3.1.2.jar

Global site tag (gtag.js) - Google Analytics