struts拦截配置文件|struts在配置文件中package里定义了全局拦截器怎么让其中某个action不被拦截

1. struts2如何拦截.html页面web.xml中配置<url-pattern>*.html</url-pattern>为何不能过滤

<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> //这个 地方指定要过滤的url</filter-mapping>

2. struts2如何拦截请求,面试时一直被问到这个以及这方面的。求一个标准答案啊。

目测这是问struts2流程.容器启动,加载web.xml,初始化FilterDispatcher,加载default.properties文件,根据struts.configration.files加载struts的三种配置文件。客户端将请求提交到web容器,被filterDispatcher过滤到,将请求转发给ActionProxy,获取表示请求的字符串,提交给ActionInvocation;根据解析的字符串找到对应的action映射节点,实例化class属性指定的业务逻辑Action;在执行execute之前,查看action周围是否有拦截器引用,如果有,按照引用的顺序逐个执行;执行execute方法进行业务逻辑处理;处理完毕之后,根据方法的返回值,在action节点下查找对应的result节点,返回匹配的视图给客户端。

3. struts2 拦截器 拦截所有请求

个人感觉 loveOuyoko所给出的是过滤器的配制方法首先在struts.xml配置文件中写入<default-interceptor-ref name="myStack"></default-interceptor-ref>上述代码中name="myStack",myStack是你自己起的对默认拦截器的名字,在默认拦截器中配置拦截器然后在其中配置你的拦截器内容,这个默认拦截器要写在所有的拦截器或者action上面。

4. struts2拦截器怎么拦截action(DMI)中的一个方法

struts2是通过action中的返回结果进行拦截,struts2中对action的返回结果要求变得更低,字符串类型的也能识别了,并不需要像struts1中那样到建立的from中去识别。而且struts2的机制和struts1的机制也完全不同。在struts2中当拦截到返回结果后,会到struts2的配置文件中去找相应结果需要返回的页面。

5. Struts2框架里的Struts.xml配置文件里的拦截器和Action各自什么意思,二者有什么关系,初学,求高手指点~

拦截器拦截请求(Request),阻止非法请求,比如字符乱码,登录,权限。Action就是业务处理请求的中心,所有请求在这里被处理里,处理结果又Action返回一个逻辑视图。这张图最典型了。

6. struts2拦截器工作原理

Struts2拦截器原理:当请求到达Struts2时,Struts2查找配置文件,并根据配置实例化相对的拦截器对象,串成一个列表,最后一个一个调用列表中的拦截器。Struts2拦截器栈将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,按其之前定义顺序被调用。

Struts2拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。

(6)struts拦截配置文件扩展阅读:

拦截器的自定义:

1、自定义一个实现Interceptor接口(或者继承自AbstractInterceptor)的类。

2、在struts.xml中注册Interceptor接口中定义的拦截器。

3、在需要使用的Action中引用struts.xml定义的拦截器,为了方便也可将拦截器定义为默认的拦截器,这样在不加特殊声明的情况下所有的Action都被这个拦截器拦截。

4、开发者自定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式。

7. Struts2 过滤器不能拦截*.do

应该是/*.do这样才能拦截<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*.do</url-pattern> </filter-mapping>楼主复制我的答案上去吧,绝对行,给分吧。。

8. struts2 拦截器拦截action中指定方法可以吗

使用MethodFilterInterceptor 自定义方法过滤拦截器,然后:在struts.xml配置文件中,找到interceptor-ref 标签,添加:<param name="拦截器名称.includeMethods">edit,add</param>自定义拦截器:package net.hncu.interceptor;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class MyInterceptor3 extends MethodFilterInterceptor{ //拦截器的名称 private String interceptorName; public void setInterceptorName(String interceptorName) { this.interceptorName = interceptorName; } //实现拦截的方法 public String intercept(ActionInvocation invocation) throws Exception { System.out.println(interceptorName + ":—–2拦截前操作—–"); String result = invocation.invoke(); System.out.println(interceptorName + ":——2拦截后操作——"); return result; }}给一个struts.xml文件你参考:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><!– struts为配置文件根元素–><struts> <!– Action必须放在指定的包名空间中–> <package name="struts2" extends="struts-default"><interceptors> <interceptor name="myInter3" class="net.hncu.interceptor.MyInterceptor3"> <param name="interceptorName">过滤拦截器</param> </interceptor> <interceptor-stack name="myInterStack"> <interceptor-ref name="myInter3"> <param name="interceptorName">自定义过滤拦截器</param> </interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack></interceptors> <action name="login" class="net.hncu.struts2.action.LoginAction"> <result name="success">/login_success.jsp</result> <result name="error">/login_failure.jsp</result> <result name="input">login.jsp</result> <interceptor-ref name="myInterStack"> <param name="myInter3.includeMethods">edit,add</param> <!– 用includeMethods指定被拦截的名称 –></interceptor-ref></action> </package> <!– 指定资源文件baseName为messageResource –> <constant name="struts.custom.i18n.resources" value="messageResource"></constant></struts>

9. struts在配置文件中,package里定义了全局拦截器,怎么让其中某个action不被拦截

想让某个action不被拦截 就在<action></action>内设置默认拦截器

<interceptor-refname="defaultStack"></interceptor-ref>

这样就可以了。


赞 (0)