Struts Convention Plugin 流程 (2.1.6+)
首先添加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+)的更多相关文章
- struts2使用Convention Plugin在weblogic上以war包部署时,找不到Action的解决办法
环境: struts 2.3.16.3 + Convention Plugin 2.3.16.3 实现零配置 现象:以文件夹方式部署在weblogic(10.3.3)上时一切正常,换成war包部署,运 ...
- Struts2 Convention Plugin ( struts2 零配置 )
Struts2 Convention Plugin ( struts2 零配置 ) convention-plugin 可以用来实现 struts2 的零配置.零配置的意思并不是说没有配置,而是通过约 ...
- Struts2学习---拦截器+struts的工作流程+struts声明式异常处理
这一节我们来看看拦截器,在讲这个之前我是准备先看struts的声明式异常处理的,但是我发现这个声明式异常处理就是由拦截器实现的,所以就将拦截器的内容放到了前面. 这一节的内容是这样的: 拦截器的介绍 ...
- Struts 2 执行流程 配置信息
Struts 2 执行流程 首先,浏览器访问,经过Filter,Filter从src/struts.xml中寻找命名空间和action的名字,获取action类,从方法中拿到返回值,接着从result ...
- struts的工作流程
- 一个请求过来,走前端控制器StrutsPrepareAndExecuteFilter -前端控制器是一个过滤器,过滤器中的核心方法是doFilter(),doFilter方法中首先处 ...
- Struts 2的流程
Struts 2的流程 一.Struts 2 的开发步骤: 在web.xml中定义核心的Filter来拦截用户的请求. 由于Web应用时基于请求/响应架构的应用,所以不管哪个MVC Web框架,都需要 ...
- Struts学习之流程汇总
struts2 架构图如下图所示: 依照上图,我们可以看出一个请求在struts的处理大概有如下步骤: 1.客户端初始化一个指向Servlet容器(例如Tomcat)的请求: 2.这个请求经过一系列的 ...
- Struts Spring Plugin注意点
Settings The following settings can be customized. See the developer guide. Setting Description Defa ...
- Struts 2开发基本流程
Struts 2工作流程 Struts2是一个基于MVC设计模式的Web开发框架, 正如官网上介绍的那样: ApacheStruts 2 is an elegant, extensible frame ...
随机推荐
- Entity Framework学习 - 3.关联查询
1.Inner Join(默认) var Goods = from goods in db.T_Goods join types in db.T_GoodsTyp ...
- boost静态链接的问题 -lgcc_s
在使用gcc/g++ 编译程序时我们希望指向一些库是使用静态的链接方式. 另外的一些是动态的方式. 我以boost 为例. 如果我们要使用静态库则是这样的: # g++ main.cpp -lpthr ...
- NDK(4)"Unresolved inclusion jni.h”的解决方法
参考 : http://blog.csdn.net/zhubin215130/article/details/39347873 3种解决办法: 一,重新初始化eclipse对该project的nat ...
- You can't specify target table 'charge' for update in FROM clause
mysql中不能这么用. (等待mysql升级吧)错误提示就是说,不能先select出同一表中的某些值,再update这个表(在同一语句中) 替 换方 案: create table tmp as s ...
- DELPHI 里面的迭代
迭代(Iiterator)的作用:遍历一个集合(Collections)的每一个元素(item). delphi 2005之后新加入一种 for .. in .. 遍历语句,支持String,Set, ...
- core--线程同步(内核模式)
什么是内核?windows操作系统为了更好的管理进程,线程,创建了很多数据结构,这些数据结构运行在windows的底层,并不开放给开发人员:所以开发人员称这些结构为内核,但是为了开发人员能够使用,wi ...
- Qt之QNetworkInterface
简述 QNetworkInterface类负责提供主机的IP地址和网络接口的列表. QNetworkInterface表示了当前程序正在运行时与主机绑定的一个网络接口.每个网络接口可能包含0个或多个I ...
- Qt之自定义搜索框
简述 关于搜索框,大家都经常接触.例如:浏览器搜索.Windows资源管理器搜索等. 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定. 方案一:调用QLineEdit现有接口 void ...
- HDU 1231 最大连续子序列
和前面两道题一样 不过这题要求输出子序列首尾的元素的值,而且如果所有元素都小于0的话,规定子序列的和为0,并输出整个序列的首尾元素. //#define LOCAL #include <iost ...
- poj 1465 Multiple(bfs+余数判重)
题意:给出m个数字,要求组合成能够被n整除的最小十进制数. 分析:用到了余数判重,在这里我详细的解释了.其它就没有什么了. #include<cstdio> #include<cma ...