对于struts2而言,一个请求是否被它处理,取决于struts2在web.xml中的配置
<filter-mapping>
<filter-name>struts-prepare</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
如上示例这个地方url-pattern就是指的要进行过滤的url,如果是上面那种
配置就是所有的请求都是要被拦截的,如果是/.action那么就是只有后缀为
.action的请求会被拦截,如果是其他的比如.do那么就只要.do会被拦截.
所以在看一个请求(包括url请求,post请求,ajax请求)是否会被拦截的时候需要看两个地方:
1.请求本身的格式
2.struts2的拦截的url-pattern
还有就是同样的一个struts.xml下面的一个Action下面的result如果不配置
它的name属性的话,那么就表示这是一个默认的结果,就是成功的结果.
而如果一个请求没有指定Action中所要调用的方法的话,那么这个请求将会
被Action的默认的execute方法进行处理,如果返回的是SUCCESS的话,那么.
action会返回结果中被定义了name="SUCCESS"的结果,如果没有这样的一个
结果的话,那么它将会返回默认的没有任何name定义的结果.
而如果一个请求在被Action处理返回之后的过程中中用到了ajax的请求,那么
这些请求会不会被拦截器所截获还是要看上面的那两点,而且后台不会重新的
再返回一个页面回来,因为这个时候的请求是ajax请求,它只会返回部分的数据
但是不会去刷新页面的.
普通的请求和ajax请求的区别在于ajax的请求的头部有
不论是普通http请求还是ajax请求,都可以通过拦截器来将请求捕获,而且区分这两种请求在于头部信息的不同:
普通http请求的header参数中没有x-requested-with:XMLHttpRequest头信息,而异步的有。