文档章节

零配置≠无配置

完美世界
 完美世界
发布于 2014/06/05 17:10
字数 1112
阅读 38
收藏 0
点赞 0
评论 0
 零配置≠无配置
约定优于配置
Struts2-convention-plugin.jar位于struts2/lib目录下
 它提供基于annotation(注解)的方式来代替struts.xml
在该jar包下的struts-plugin.xml是对该插件的各种基本配置。它继承于struts-default。如果需要改变配置,可以在struts.xml中进行常量声明和赋值来替换默认配置
 常量说明(以下常量均为默认配置):
<!– 结果资源所在路径,也就是返回的页面路径 –>
<constant name=”struts.convention.result.path” value=”/WEB-INF/content/”/>

<!– 搜索的Action资源包路径,无论层级,例如package.action,多项以逗号隔开–>

<constant name=”struts.convention.package.locators” value=”action,actions,struts,struts2″/>

<!– 指定哪些包不搜索 –>

<constant name=”struts.convention.exclude.packages” value=”org.apache.struts.*”/>



<!– 是否将返回的字符串作为资源名的一部分,例如MyTestAction中方法返回“abc”,如果设为true,则视图资源名为         my-test-abc.jsp,false则为my-test.jsp –>

<constant name=”struts.convention.result.flatLayout” value=”true”/>



<!– 类名最后的组成部分,比如设置成qqq,则MyTestqqq将视为action,而MyTest则不是,访问时  会截去这个部分 –>

<constant name=”struts.convention.action.suffix” value=”Action”/>



<!– 是否不扫描类,默认false即要扫描,设为true则所有访问无效(不排除未知情况) –>

<constant name=”struts.convention.action.disableScanning” value=”false”/>



<!– 始终创建action映射,即使没有@Action被发现(具体情况不明) –>

<constant name=”struts.convention.action.mapAllMatches” value=”false”/>

<!– 是否检查类是不是实现了com.opensymphony.xwork2.Action接口,默认为true,即只要实现了此   接口的类为被视为     Action,设为false则不进行检查,无论是否实现都会无视 –>

<constant name=”struts.convention.action.checkImplementsAction” value=”true”/>

<!– 设置默认的父包 –>

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

<!– 是否将Action类名转换成小写,默认true,例如MyTest访问的url名为my-test,设为false,则    为My-Test –>

<constant name=”struts.convention.action.name.lowercase” value=”true”/>

<!– 名字分割符,即MyTest访问名为my-test,默认对应的页面为my-test-success.jsp –>

<constant name=”struts.convention.action.name.separator” value=”-”/>



<!– 是否禁用包扫描,对应struts.convention.package.locators设置 –>

<constant name=”struts.convention.package.locators.disable” value=”false”/>



<!– 设置包扫描的结构,默认为空,例如com.jd.web就只会扫描项目中此结构包下的 子包,忽略其他包 –>

<constant name=”struts.convention.package.locators.basePackage” value=”"/>



<!– 默认返回结果类型 –>

<constant name=”struts.convention.relative.result.types”value=”dispatcher,velocity,freemarker”/>



<!– 是否使用 / 作为重定向标示符,默认true,@Result(location=”/test.jsp”) 则会在server/项目名/这个路径下找test.jsp,     不加 / 则会在struts.convention.result.path这个常量配置的路径下找,若设为false则 / 无效–>

<constant name=”struts.convention.redirect.to.slash” value=”true”/>



<!– 不是很清楚,测试结果为:设置成false则报没有no action mapped,应该是默认是否执行execute()方法 –>

<constant name=”struts.convention.action.alwaysMapExecute” value=”true”/>



<!– 设定是否一直在最后一个斜线之前的任何位置选定namespace,测试结果为无任何影响,情况不明 –>

<constant name=”struts.mapper.alwaysSelectFullNamespace” value=”true”/>



<!– 官方只说明在jboss下需要设置,情况不明 –>
<constant name=”struts.convention.exclude.parentClassLoader” value=”true” />
<constant name=”struts.convention.action.fileProtocols” value=”jar” />
<!– 是否自动重新加载action –>
<constant name=”struts.convention.classes.reload” value=”false” />
 Annotation(注解)
@Action(String value)
用来代替类名的访问名,例如MyTest类,在类级别上@Action(“abc”),则访问的action名为abc,而不是默认的my-test,此注解也可写在方法上,定义为访问该方法的action名。此注解受struts.convention.redirect.to.slash影响。返回视图为abc.jsp,忽略方法返回的字符串。
@Actions
包含一个@Action数组
格式:@Action({@Action() , @Action()})

@Result
定义方法返回的结果类型,参数,资源路径,此注解必须写在类级别上。
格式:@Result(name=”" , location=”" , type=”" ,  params={“”,”"})
name对应方法返回的字符串,location对应返回资源的路径,type对应返回资源类型
params对应返回结果的参数,格式params={“key0″,”value0″,”"key1,”value1″….”keyN”,”valueN”}

@Results
包含一个@Result数组
格式:参照@Actions

@Namespace
指定action的访问路径,会替换掉默认package的路径。
格式:@Namespace(String value)
例如:假设MyTest默认Namespace为/test,其访问路径为xxx/test/my-test。若设置为@Namespace(“abc”),       则访问路径为/abc/my-test。

注意:默认情况下action的访问路径必须和返回视图资源路径对应。
例如:假设默认搜索xxx.xxxx.xxx.web包下的action,MyTest类在web.action.test包下,则MyTest类中   方法默认情况返回搜索视图的路径为/WEB-INF/content/action/test/xxx.jsp

关于映射路径感觉不适应的情况,struts2提供了一个插件,可以查看当前项目所有action的映射情况
将struts2/lib下的struts2-config-browser-plugin加入到项目的lib目录下,启动项目,url输入 http://localhost:port/项目名/config-browser/index.action。


© 著作权归作者所有

共有 人打赏支持
完美世界
粉丝 10
博文 149
码字总数 134011
作品 0
西城
高级程序员
验证矩阵乘法

如何使用随机性矩阵乘法,随机算法在验证多项式的恒等问题比确定算法要快,而且在准确性上面也是可以接受的。假设有A,B,C三个n*n的矩阵。为了方便起见假定对模2的整数计算。我们想要快速的...

sohu1990 ⋅ 2014/11/17 ⋅ 0

读书笔记:《算法图解》第一章 算法简介

二分查找是对半查找,进队列表是有序时有效。 n个元素的列表,二分查找最多需要log2nlog2n 步,简单顺序查找最多需要n步。 对数# 对数:对数运算是幂运算的逆运算 N=ax(a>0,a≠1)N=ax(a>0,a≠...

孙亖 ⋅ 01/09 ⋅ 0

奇异矩阵与L2 Regularization

奇异矩阵是线性代数的概念,就是对应的行列式等于0的矩阵。   奇异矩阵的判断方法:首先,看这个矩阵是不是方阵(即行数和列数相等的矩阵。若行数和列数不相等,那就谈不上奇异矩阵和非奇异...

pbyang ⋅ 2014/02/27 ⋅ 0

教你怎么快速配置 React

社区应对这一挑战的方法是共享模版文件。这些模版文件展示出开发者们架构选择的多样性。官方的“开始入门”似乎离一个实际可用的应用程序相去甚远。 新的,零配置体验 受开发者来自 Ember.js...

linuxprobe ⋅ 2016/10/11 ⋅ 0

涉及递归的一个级联删除问题

我画了个图来表示,有N个配置项,每个配置项有一张表,每个配置项通过一个中间表和其他配置项关联。有一对一,也有一对多的。所谓配置项一般都是一种设备,有序列号CI,ROWID来区分标识,每个...

nidafghoho ⋅ 2015/05/12 ⋅ 0

struts2零配置插件-convention-plugin

在工程搭建时候遇到了一个struts2配置的convention-plugin配置错误的问题;将参数“struts.convention.action.packages”配置错误的问题。排除错误同时,复习了一下这个插件的配置。 参考文档...

wayne很忙 ⋅ 2013/04/06 ⋅ 0

ESXI 6.5安装详细步骤

ESXi是专为运行虚拟机、最大限度降低配置要求和简化部署而设计。只需几分钟时间,客户便可完成从安装到运行虚拟机的全过程,特别是在下载并安装预配置虚拟设备的时候。 安装ESXI 6.5的详细步...

老唐6 ⋅ 2017/11/27 ⋅ 0

SSH零配置下Struts2拦截器配置问题

准备采用Struts2做日志管理,我的系统框架是S2SH,且用convention实现的零配置。 自定义拦截器后,不知道如何配置对应的action(不能每个action都配置,那样麻烦),然后用通配符尝试了下,不...

yongliuaaa ⋅ 2014/03/19 ⋅ 1

一个简单的数据库查询自动封装工具

原理是根据事先约定好的规则来进行自动封装,零配置、零注解、零依赖,不知道这是否是“约定优于配置”。 下面这里是测试代码,getObject()的第一个参数为bean对象,1为对象id,这里测试就直...

stevenkang ⋅ 2014/03/24 ⋅ 0

BJ模拟:随机游走(树型期望DP)

传送门 题解: 好题。又是一种经典模型。 先假设没有终止节点。 记 我们发现:每次询问两点, 处理就非常Naive了,按照以前的套路,可以推得:

qq_35649707 ⋅ 04/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

mysql5.7系列修改root默认密码

操作系统为centos7 64 1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2、重启 mysqld 服务:systemctl restart mysql...

sskill ⋅ 21分钟前 ⋅ 0

Intellij IDEA神器常用技巧六-Debug详解

在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的...

Mkeeper ⋅ 25分钟前 ⋅ 0

zip压缩工具、tar打包、打包并压缩

zip 支持压缩目录 1.在/tmp/目录下创建目录(study_zip)及文件 root@yolks1 study_zip]# !treetree 11└── 2 └── 3 └── test_zip.txt2 directories, 1 file 2.yum...

蛋黄Yolks ⋅ 28分钟前 ⋅ 0

聊聊HystrixThreadPool

序 本文主要研究一下HystrixThreadPool HystrixThreadPool hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java /** * ThreadPool used to executed {@link Hys......

go4it ⋅ 46分钟前 ⋅ 0

容器之上传镜像到Docker hub

Docker hub在国内可以访问,首先要创建一个账号,这个后面会用到,我是用126邮箱注册的。 1. docker login List-1 Username不能使用你注册的邮箱,要用使用注册时用的username;要输入密码 ...

汉斯-冯-拉特 ⋅ 53分钟前 ⋅ 0

SpringBoot简单使用ehcache

1,SpringBoot版本 2.0.3.RELEASE ①,pom.xml <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELE......

暗中观察 ⋅ 54分钟前 ⋅ 0

监控各项服务

比如有三个服务, 为了减少故障时间,增加监控任务,使用linux的 crontab 实现. 步骤: 1,每个服务写一个ping接口 监控如下内容: 1,HouseServer 是否正常运行,所以需要增加一个ping的接口 ; http...

黄威 ⋅ 57分钟前 ⋅ 0

Spring源码解析(八)——实例创建(下)

前言 来到实例创建的最后一节,前面已经将一个实例通过不同方式(工厂方法、构造器注入、默认构造器)给创建出来了,下面我们要对创建出来的实例进行一些“加工”处理。 源码解读 回顾下之前...

MarvelCode ⋅ 57分钟前 ⋅ 0

nodejs __proto__跟prototype

前言 nodejs中完全没有class的这个概念,这点跟PHP,JAVA等面向对象的语言很不一样,没有class跟object的区分,那么nodejs是怎么样实现继承的呢? 对象 对象是由属性跟方法组成的一个东西,就...

Ai5tbb ⋅ 今天 ⋅ 0

Ubuntu16.04 PHP7.0 不能用MYSQLi方式连接MySQL5.7数据库

Q: Ubuntu16.04 PHP7.0 不能用MYSQLi方式连接MySQL5.7数据库 A: 执行以下2条命令解决: apt-get install php-mysql service apache2 restart php -m 执行后会多以下4个模块: mysqli mysqlnd...

SamXIAO ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部