首先添加lib:

<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-config-browser-plugin</artifactId>
<version>2.3.20</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>2.3.20</version>
</dependency>

访问 http://localhost:8080/conv/config-browser/a.action 可以查看目前映射的所有路径

插件会按以下顺序执行:

1.寻找以下包:struts, struts2, action ,actions

任何深度找到的以上包都自动作为根目录

2.然后在包内寻找以下类:实现了com.opensymphony.xwork2.Action或者继承了com.opensymphony.xwork2.ActionSupport,或类名以Action结尾

3.映射为url:

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=org.apache.struts.*,org.apache.struts2.*,org.springframework.web.struts.*,org.springframework.web.struts2.*,org.hibernate.* (被跳过的包是无法再加入的,即使手动添加)

自动搜索的包名:struts.convention.package.locators=action,actions,struts,struts2

自动搜索的包名开头:struts.convention.package.locators.basePackage=

自动搜索的类名结尾:struts.convention.action.suffix=Action

手动指定具体包:struts.convention.action.packages=

4.默认,所有的Result都到这里去找:WEB-INF/content

如, ,则可以通过 http://localhost:8080/conv/my-jsp.action 访问到

可通过常量控制:struts.convention.result.path=/WEB-INF/content/

根据返回类型和返回字符串,要起不同的名字:

5.如果找不到这个页面文件,就认为这是个action,其他action可以在方法上添加@Action(“xx”),指明具体路径,这也就是Result Type为chain

中,

public class MyJsp extends ActionSupport {
public String execute() {
return "here";
}
}
public class HimJsp extends ActionSupport {
@Action("my-jsp-here") //通过指定为具体路径,实现chain,前提是没有那个页面文件
public String execute() {
return "yes";
}
}

最后会变成,

可以设置自动重载:

<constant name="struts.devMode" value="true"/>

<constant name="struts.convention.classes.reload" value="true" />

struts.convention.action.alwaysMapExecute =false  禁止自动调用execute()

struts.convention.action.disableScanning=true  禁用扫描

struts.convention.action.mapAllMatches =true  没有@Action也自动映射

struts.convention.action.name.lowercase=false  不要变成小写

struts.convention.action.name.separator=_  名称分隔符

struts.convention.action.eagerLoading=true  不使用Spring的时候可以提高性能

Struts Convention Plugin 流程 (2.1.6+)的更多相关文章

  1. struts2使用Convention Plugin在weblogic上以war包部署时,找不到Action的解决办法

    环境: struts 2.3.16.3 + Convention Plugin 2.3.16.3 实现零配置 现象:以文件夹方式部署在weblogic(10.3.3)上时一切正常,换成war包部署,运 ...

  2. Struts2 Convention Plugin ( struts2 零配置 )

    Struts2 Convention Plugin ( struts2 零配置 ) convention-plugin 可以用来实现 struts2 的零配置.零配置的意思并不是说没有配置,而是通过约 ...

  3. Struts2学习---拦截器+struts的工作流程+struts声明式异常处理

    这一节我们来看看拦截器,在讲这个之前我是准备先看struts的声明式异常处理的,但是我发现这个声明式异常处理就是由拦截器实现的,所以就将拦截器的内容放到了前面. 这一节的内容是这样的: 拦截器的介绍 ...

  4. Struts 2 执行流程 配置信息

    Struts 2 执行流程 首先,浏览器访问,经过Filter,Filter从src/struts.xml中寻找命名空间和action的名字,获取action类,从方法中拿到返回值,接着从result ...

  5. struts的工作流程

    - 一个请求过来,走前端控制器StrutsPrepareAndExecuteFilter        -前端控制器是一个过滤器,过滤器中的核心方法是doFilter(),doFilter方法中首先处 ...

  6. Struts 2的流程

    Struts 2的流程 一.Struts 2 的开发步骤: 在web.xml中定义核心的Filter来拦截用户的请求. 由于Web应用时基于请求/响应架构的应用,所以不管哪个MVC Web框架,都需要 ...

  7. Struts学习之流程汇总

    struts2 架构图如下图所示: 依照上图,我们可以看出一个请求在struts的处理大概有如下步骤: 1.客户端初始化一个指向Servlet容器(例如Tomcat)的请求: 2.这个请求经过一系列的 ...

  8. Struts Spring Plugin注意点

    Settings The following settings can be customized. See the developer guide. Setting Description Defa ...

  9. Struts 2开发基本流程

    Struts 2工作流程 Struts2是一个基于MVC设计模式的Web开发框架, 正如官网上介绍的那样: ApacheStruts 2 is an elegant, extensible frame ...

随机推荐

  1. PowerDesigner15使用时的十五个问题

    15个问题列表: No.1:是不是一定要从CDM开始设计,然后在进行PDM的设计? NO.2:工具栏palette不见了,如何把它找出来? NO.3: 如何建立与数据库的关联? NO.4: 域和数据项 ...

  2. 对Java“一切皆对象”的理念的理解

    在从HelloWorld到面向对象中,我们将int, float, double, boolean等称为基本类型(primitive type),也就是特殊的类.我们可以将一个整数理解称为一个int类 ...

  3. [Golang] base64加密与解密

    首先解释以下什么是base64(来自百度百科): Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2049,上面有MIME的详细规范.Base64 ...

  4. Codeforces Round #362 (Div. 2) A.B.C

    A. Pineapple Incident time limit per test 1 second memory limit per test 256 megabytes input standar ...

  5. 在HibernateTemplate里执行Sql语句

    如下所示只能执行非Select语句: public static void executeSQL(HibernateTemplate hibernateTemplate, String sql) { ...

  6. Mybatis传递多个参数

    方法一: //DAO层的函数方法Public User selectUser(String name,String area); 对应的Mapper.xml <select id="s ...

  7. 将js对象转为json对象属性加上引号

    工具地址 http://js2json.mengxiangchaoren.com

  8. SPOJ 694 (后缀数组) Distinct Substrings

    将所有后缀按照字典序排序后,每新加进来一个后缀,它将产生n - sa[i]个前缀.这里和小罗论文里边有点不太一样. height[i]为和字典序前一个的LCP,所以还要减去,最终累计n - sa[i] ...

  9. codeforces 432 B Football Kit

    题意:给出n支球队,主场的衣服的颜色x[i],客场的衣服的颜色y[i],每只队伍会打n-1次主场,n-1次客场,当这只队伍打客场的衣服颜色和对手一样的时候,那么他们要穿上主场的衣服 问每个球队主场球服 ...

  10. Windows系统下Memcached缓存系列二:CouchbaseClient(c#客户端)的详细试用,单例模式

    在上一篇文章里面 ( Windows系统下Memcached缓存系列一:Couchbase(服务器端)和CouchbaseClient(c#客户端)的安装教程 ),我们介绍了服务器端的安装和客户端的安 ...