采用struts2 小伙伴非常希望更改或删除action扩展,本文将帮助你实现

struts2-core-2.3.16.jar , 下载链接: http://repo1.maven.org/maven2/org/apache/struts/struts2-core/2.3.16/

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter , 这个struts2处理请求的函数doFilter 。 在这里使用了 prepare.isUrlExcluded来推断是否排除的请求。假设是就直接运行chain.doFilter(request, response);交给其它的Filter处理,否则自己处理此action

//...  // protected PrepareOperations prepare;public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) res;try {if (excludedPatterns != null && prepare.isUrlExcluded(request, excludedPatterns)) { //看这里chain.doFilter(request, response);} else {prepare.setEncodingAndLocale(request, response);prepare.createActionContext(request, response);prepare.assignDispatcherToThread();request = prepare.wrapRequest(request);ActionMapping mapping = prepare.findActionMapping(request, response, true);if (mapping == null) {boolean handled = execute.executeStaticResourceRequest(request, response);if (!handled) {chain.doFilter(request, response);}} else {execute.executeAction(request, response, mapping);}}} finally {prepare.cleanupRequest(request);}}
//...

org.apache.struts2.dispatcher.ng.PrepareOperations

/*** Check whether the request matches a list of exclude patterns.** @param request          The request to check patterns against* @param excludedPatterns list of patterns for exclusion** @return <tt>true</tt> if the request URI matches one of the given patterns*/public boolean isUrlExcluded( HttpServletRequest request, List<Pattern> excludedPatterns ) {if (excludedPatterns != null) {String uri = RequestUtils.getUri(request);for ( Pattern pattern : excludedPatterns ) {if (pattern.matcher(uri).matches()) {return true;}}}return false;}

经过以上的分析。如今在看看struts2的默认配置文件default.properties,在struts2-core-2.3.16.jar,  org.apache.truts2以下

### Used by the DefaultActionMapper
### You may provide a comma separated list, e.g. struts.action.extension=action,jnlp,do
### The blank extension allows you to match directory listings as well as pure action names
### without interfering with static resources, which can be specified as an empty string
### prior to a comma e.g. struts.action.extension=, or struts.action.extension=x,y,z,,
struts.action.extension=action,,

依据描写叙述。能够设置struts.action.extension的value为一个逗号就能够支持无扩展名的action了。假设想兼容之前的,能够加入上之间的,如:

<pre name="code" class="plain">struts.action.extension=<span style="font-family: Arial, Helvetica, sans-serif;">do,action,jspt,, </span>

另外。假设你使用的struts2的版本号低于2.3.16(至于详细那个版本号是过度的。我没有測试),静态资源js,css可能会被吃掉了,能够加入例如以下的一个属性

struts.action.excludePattern=/css,/javascript

有的项目中处理js和css的方式是对js、css进行压缩的servlet,如:

<link type="text/css" rel="stylesheet" href="/compressor?

v=${globalVersion}&type=css&munge=true&files=/cssStyle/index.css,/cssStyle/dialog.css,/cssStyle/jbox/Gray/jbox.css,/cssStyle/home.css"> <script src="/compressor?v=${globalVersion}&type=js&munge=true&files= /javascript/lib/json2/json2.js, /javascript/lib/jquery/1.7.2/jquery.js, /javascript/lib/jquery/jquery.ext.js, /javascript/lib/juicer/0.6.1/juicer-min.js, /javascript/lib/underscore/1.3.3/underscore-min.js, /javascript/lib/cookie/cookie.min.js, /javascript/core/core.js, /javascript/core/toptips.js, /javascript/core/selectBankCard.js, /javascript/core/dialog.js, /javascript/core/page.js, /javascript/core/regex.js, /javascript/core/topLogRegister.js" type="text/javascript"></script>

即使用servlet  compressor 输出js和css文件,此时配置应例如以下

struts.action.excludePattern=/compressor

如要过滤 以 “/druid”和“/compressor”开头的请求,模式例如以下(注意加入的是".*"。而不仅仅是“*”)

struts.action.excludePattern=/compressor.*,/druid.*

注意:在设置struts2的配置时。最好使用struts.properties,由于我在struts.xml中使用同样的配置,就不兼容曾经的".do"了。假设struts.properties和struts.xml同一时候存在,struts.properties的优先级会高于struts.xml

版权声明:本文博主原创文章,博客,未经同意不得转载。

struts2 no extension(excludePattern)相关推荐

  1. Java进阶学习第十六天(Struts框架:配置、数据处理、自动封装、日期类型转换、文件上传)

    一.Struts2配置 1.Struts2的Action开发的几种方式 ① 方式1:继承ActionSupport(一般使用方法) public class UserAction extends Ac ...

  2. Struts2文件上传的大小限制问题

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC"-/ ...

  3. php 正则匹配静态资源,Struts2 配置静态资源文件不经过Strut处理(正则匹配)

    Struts2框架有两个核心配置文件:struts.xml和Struts2默认属性文件default.properties(在struts2-core-2.3.20.jar中) default.pro ...

  4. Struts2.x教程(一) Struts2介绍

    一.Struts2是什么 Struts2是在WebWork2基础发展而来的.和Struts1一样, Struts2也是基于MVC的web层框架. 那么既然有了Struts1,为何还要Struts2? ...

  5. Struts2 - 常用的constant总结

    见注释 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC" ...

  6. Struts2标签库

    这是个音乐播放列表 1.queryMusic.jsp <%@ page language="java" import="java.util.*" page ...

  7. struts2实验2:struts2.xml action中* ,{}以及${}

    p.s 关键在于struts.xml中的匹配,使用* ,{}以及${}可以让代码更加简洁清晰 代码核心思路 在struts.xml中通过路由(url)去指定控制逻辑的Action中的方法,例如 < ...

  8. struts2之配置文件struts.xml详解

    struts配置文件 struts.xml配置参数详解 struts.xml中很大一部分配置默认配置就好了 但是有些还是需要做了解  以便于理解 和修改 <?xml version=" ...

  9. 关于struts2如何去掉默认的后缀(.action)

    struts2是可以配置默认的后缀名的,如http://localhost:8080/test.action,这个是默认的,但是也可以通过配置去修改这个.action为别的. 这里是通过一个常量配置改 ...

最新文章

  1. Android 无法监听安装,Android关于apk安装成功广播监听
  2. 『树上匹配 树形dp』
  3. 如何备份桌面文件呢?
  4. python type instance_Python type, types and isinstance()使用
  5. springMvc json 参数
  6. bigint在java中用什么表示_为什么说开车最能看出一个人的人品和情商?这几条说的太精辟了...
  7. Linunx操作基础(十六)之Systemd 入门教程(一)
  8. 火车票售票系统mysql_今日开售!2020元旦火车票可以买了,春运首日车票也快了→...
  9. JDBCUtils工具类
  10. 【路径规划】基于matlab粒子群融合遗传算法栅格地图路径规划【含Matlab源码 526期】
  11. kindle刷机ttl_“免费” PHICOMM 斐讯 K2路由器TTL刷机全纪录
  12. EnableViewState 属性
  13. python编写鸡兔同笼程序_Python解决鸡兔同笼问题的方法
  14. No instances available for provider
  15. 初中文化能学python吗_初中文化可以学Python编程吗,我想通过这个渠道进入人工智能这个大行业?...
  16. 齐次方程与非齐次方程
  17. Unity中UI组件
  18. 上了年纪的酒店,如何“鸟枪换炮”?
  19. 模型动态测试工具 TPT 18更多新特性——HiL测试、需求管理
  20. 华为云物联网平台的微信小程序开发

热门文章

  1. 小脑过度活跃,会引起整个大脑的问题
  2. 儿子转眼就长大:Hinton、LeCun、Bengio 口述神经网络简史
  3. 时空大数据赋能智慧城市的思考和实践
  4. 从基础设施的演变,看人工智能到底需要什么样的底层平台
  5. 嘿,老李,又在写 BUG 呢?
  6. 狂赚 1227 亿!腾讯员工 2020 年人均年薪 81 万;小米员工人均年薪 45 万
  7. 搭乘“云原生”硬核实践之舟,移动云助力开发者畅游未来创新之旅
  8. 特定构造方法 如何让子类重写某些方法时提醒调用super
  9. 前端测试 karma mocha should 都是什么鬼?
  10. 统计学习方法---拉格朗日对偶新性