搜档网
当前位置:搜档网 › Struts 2 异常处理的常用的解决方法

Struts 2 异常处理的常用的解决方法

Struts 2 异常处理的常用的解决方法
Struts 2 异常处理的常用的解决方法

一、第一个异常处理

严重: Servlet.service() for servlet jsp threw exception

The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag. - [unknown location]

at org.apache.struts2.views.jsp.TagUtils.getStack(TagUtils.java:60)

at

org.apache.struts2.views.jsp.StrutsBodyTagSupport.getStack(StrutsBodyTagSupport.java:44) at

https://www.sodocs.net/doc/6711110076.html,ponentTagSupport.doStartTag(ComponentTagSupport.java:48) at

https://www.sodocs.net/doc/6711110076.html,_005fstruts2_005flz.YpxxbQuery_jsp._jspx_meth_s_005fdebug_005f0(Ypxxb Query_jsp.java:108)

at

https://www.sodocs.net/doc/6711110076.html,_005fstruts2_005flz.YpxxbQuery_jsp._jspService(YpxxbQuery_jsp.java:83)

解决的办法:(4种解决方案)

1.

web.xml 中添加一个filter

struts2

*.jsp

struts2

/action/*

2.

struts2

/*

注意这里一定要是/*

3.

这通常是由于不经由Filter访问包含struts标签的jsp页面导致的。那么,只要通过配置,使得对jsp页面的访问请求由Filter过滤转发即可。

方法1:在strut.xml中配置一个通用Action,通过这个Action转发到jsp页面。这个时候,原先访问jsp的请求路径就要换成相应的Action路径了。写法如下。

/{1}.jsp

方法2:在web.xml中配置Filter的url-parttern。写法如下。其中struts2-dispatcher 是已定义的Filter。

struts2-dispatcher

*.action

struts2-dispatcher

*.jsp

方法3:在web.xml中配置扩展名。写法如下。配置完成后,就可以这样访问了:http://localhost:8080/yk_cpp/public/index.html

在web.xml中加

struts.action.extension

html

在struts.xml中加

方法4:修改struts.properties文件。去struts2的包里看一下default.properties,里面默认的action 是struts.action.extension=action,,(注意有两个逗号,意思是第二个配置是空)空是全部拦截。在这里修改要拦截的带扩展名的文件,比如struts.action.extension=action,jnlp,do

不过这些没有经过测试;因为我的本地服务器没有出500的错误,问题是出在正式服务器上的,所以没法调试。下次设法在本地重现一下问题,然后挨个试一试。

4.

操作:struts2中直接访问jsp

异常:The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag.

环境:struts2

原因:如果想要在jsp文件中,采用 struts的tag,那么jsp必须是通过action跳转得到,也就是必须通过web.xml所配置的过滤器访问文件,否则会有异常。

解决办法:

方案一:将web.xml 的过滤器,从 *.action 修改为: /* 。

方案二:web.xml 中添加一个filter?

?

struts2

*.jsp

struts2

/action/*

实验六 利用Struts2实现自定义拦截器

1、自定义拦截器,实现对注册页面上的文字信息进行过滤拦截,不允许出现字符集合中{“佛法”,”集会”,”党派”}的文字信息。如出现,则返回到注册页面,重新填写。 2、定义拦截器,实现登录检查。由于在项目开发时,需要对大多数的页面进行登录检查。当没有登录就无法进行操作,并返回到登录页面。为减少代码量利用Struts2中自定义拦截器的功能,实现登录检查。(避免不登录直接访问某个Action) Web.xml struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter actionPackages com.mycompany.myapp.actions struts2 /* WDF_INTERCEPTOR_6 index.html index.htm index.jsp default.html default.htm default.jsp struts.xml

struts2拦截器配置详解

Struts2拦截器详细配置过程 1:所有拦截器的超级接口Interceptor,拦截器去实现这个接口; Interceptor它其中有三个方法 (init(),destroy(),interceptor()):Init()方法:在服务器起动的时候加载一次,并且只加载一次; Destroy()方法:当拦截器销毁时执行的方法; Interceptor()方法:其中里边有一个参数invocation public String intercept(ActionInvocation invocation)throws xception { System.out.println("interceptor!!"); String result=invocation.invoke(); return result; }Invocation.invoke()是如果只有一个拦截器执行完这个方法后,会返回给视图,如果有多 个拦截器,它顺序的执行完所有的拦截器,才返回给视图. 2:可以在系统初始化中给拦截器指定默认的参数(也包括了定义拦截器方式)如下:在拦截器类中把hello当做属性set/get方式注入到拦截器类中;

张钊钊 也可以在使用拦截器的时候给它设置参数: 就是在一个action的reslut下面配置上如下: 2、警告:No configuration found for the specified action: 'sum.action' in namespace: ''. Form action defaulting to 'action' attribute's literal value. 分析及解决方法: 由于jsp文件中标签它对应的源文件是

,sturts把action属性值当成了一个action name了,但这也不影响使用;但是对于使用了动态方法调用(struts.enable.DynamicMethodInvocation = true)就没有那么幸运了,提交时就会得到HTTP Status 404 - /context/sum错误。对于以上情况,可以把标签写成 3、ERROR:Cannot create JDBC driver of class '' for connect URL 'null' 分析及解决方法: 这是由于tomcat下的server.xml里的没有配置好或没有相应的配置,可按如下配置: 4、ERROR:Cannot load JDBC driver class 'com.microsoft.jdbc.sqlserver.SQLServerDriver' 分析及解决方法: 这是由于JDBC的驱动没有装,可将sqlserver需要的三个驱动包msbase.jar,mssqlserver.jar,msutil.jar拷贝到tomcat的安装目录下的 common\lib文件夹下面即可。 5、ERROR:Cannot create resource instance 分析及解决方法: 这是由于里type属性设置不正确,按不同的数据库相应的做出调整就好了。 6、ERROR:https://www.sodocs.net/doc/6711110076.html,NotFoundException: Name jdbc is not bound in this Context 分析及解决方法: 这个很明显,上下文中找不到所给的jdbc名称,仔细查看纠正一下就好了 7、严重: Exception starting filter struts2、Error filterStart、Context [/struts2] startup failed due to previous errors 分析及解决方法: (1)在struts.xml中action中的包路径出错 (2)在工程中导入一个commons-fileupload的包 8、java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'info' 无效 分析及解决方法: 出现这情况由两种可能性: (1)配置的数据库中没有info表或者是表名写错了,这是就要将其更改为info表所在的数据库名或

Struts2考试题分析

题目1 以下不届丁 Struts2中result 的type 届性() ? A. action B. redirect 题目2 下歹0有关拦截器说法错误的是? 「A.struts 通过拦截器完成执行action 请求处理方法前一系歹U 操作。例如: 数据封装、文件上传、数据校验等 'B.在struts 中,直接访问jsp 页面,struts 将使用默认拦截器栈处理当前 请求。 厂C.在执行action 时,struts 将执行若干拦截器1、2、3,执行action 完成 后,将继续执行拦截器3、2、1 'D.默认情况,在一个action 没有配置拦截器的引用,说明当前action 将不 使用拦截器 题目3 以下哪些是Action 接口提供的返回值? W A A. success ,D B. none C. error 财 D.input 题目4 如果要实现struts2的数据检验功能 广A 普通的Action 类可以实现 C. redirectAction D. dispatcher

「B继承自Action接口的可以实现 面C继承自ActionSupport类可以实现 厂D继承自ActionValidate 类可以实现 题目5 struts2默认的处理结果类型是: ? A.dispatcher ' B.redirect 「C.chain D. forward 题目6 在值栈的上下文Context中,存在一些固定的key表示不同的对象,以下描述正确的是? A. request,表示request作用域的数据 'B.session,表示session 作用域的数据 阿 C.application ,表示application 作用域的数据 * D.parameters ,表示请求参数的所有数据 题目7 以下届丁struts2配置文件中的配置元素是:()多选) A. B. 厂 C. 厂 D.

Struts2自定义拦截器实现防止重复提交

由于struts2标签的性能不好,项目组决定不使用,但是如果用struts2自带的拦截器防止重复提交又必须struts标签,所以只好自定拦器实现,具体步骤如下: 新建拦截器类: public class TokenAtionInterceptor extends AbstractInterceptor { public String intercept(ActionInvocation invocation) throws Exception { Map session = invocation.getInvocationContext().getSession(); HttpServletRequest request = ServletActionContext.getRequest(); String strGUID = RandomGUIDUtil.newGuid(); //生成令牌 String strRequestToken = (String)session.get("request_token"); //取出会话中的令牌 String strToken = request.getParameter("token"); //页面中的令牌 if(strRequestToken != null && !strRequestToken.equals(strToken)){ //重复提交,重置令牌 session.put("request_token", strGUID); request.setAttribute("token", strGUID); return"invalidToken"; } session.put("request_token", strGUID); request.setAttribute("token", strGUID); return invocation.invoke(); //否则正常运行 } } 建一个生成令牌的工具类: public class RandomGUIDUtil extends Object { /**日志管理类对象*/ private Logger logger= Logger.getLogger(this.getClass().getName()); public String valueBeforeMD5 = ""; public String valueAfterMD5 = ""; private static Random myRand; private static SecureRandom mySecureRand; private static String s_id; /* * 静态块初始化

Struts2结果类型、拦截器、类型转换器

结果类型 Action处理完用户请求后,将返回一个普通的字符串,整个普通字符串就是一个逻辑视图。Struts2通过配置一个逻辑视图和物理视图的映射关系,一旦系统返回某个逻辑视图系统就会把对应的物理视图呈现给用户。 Struts2 在struts.xml中使用来配置结果,根据元素的位置不同可以分为两类: 局部结果:将 作为子元素来配置。 全局结果:将作为元素的子元素配置。 配置 元素时通常需要指定两个属性: name:该属性指定所需要的逻辑视图名 type:该属性指定结果类型: 常用的结果类型 结构类型含义 dispatcher默认,类似于JSP中forword服务器端的 分发 redirect直接跳转其他URL的结果类型,类似 与JSP的重定向 redirect-action直接跳转其他Action的结果类型 plainText用于展示某个页面原代码的结构类型 拦截器 Struts2中提供了很多特性都是通过拦截器实现的,例如异常处理,文件上传,生命周期回调和验证。拦截器从概念上来讲和Servlet过滤器 或JDK的Proxy类是一样的。提供了一种对Action进行预处理和事后处理的功能。 自定义拦截器 要自定义拦截器需要实现

com.opensymphony.xwork2.interceptor.Interceptor接口: public class PermissionInterceptor implements Interceptor { private static final long serialVersionUID = -5178310397732210602L; public void destroy() { } public void init() { } public String intercept(ActionInvocation invocation) throws Exception { System.out.println("进入拦截器"); if(session里存在用户){ String result = invocation.invoke(); }else{ return “logon”; } //System.out.println("返回值:"+ result); //return result; } } /WEB-INF/page/hello.jsp 因为struts2中如文件上传,数据验证,封装请求参数到action等功能都是由系统默认的defaultStack中的拦截器实现的,所以我们定义的拦截器需要引用系统默认的defaultStack,这样应用才可以使用struts2框架提供的

Struts S2-045 漏洞调试及分析

Struts S2-045漏洞调试及分析 Auth:Cryin’ Date:2016.3.9 漏洞公告 首先看官方给出的漏洞公告信息: “Possible Remote Code Execution when performing file upload based on Jakarta Multipart parser.” 问题原因: “It is possible to perform a RCE attack with a malicious Content-Type value. If the Content-Type value isn't valid an exception is thrown which is then used to display an error message to a user.” 从公告信息可以得到几个漏洞的重点信息: ●存在漏洞的模块是Jakarta ●漏洞产生的点是恶意的Content-Type头 ●恶意的Content-Type头会造成程序抛出异常,在显示错误消息给用户时造成RCE 补丁对比 查看Struts2版本2.3.32在github上的commit(Uses default error key if specified key doesn't exist)并对比修改内容: https://https://www.sodocs.net/doc/6711110076.html,/apache/struts/commit/352306493971e7d5a756d61780d57a76eb1 f519a 可以看到对LocalizedTextUtil.findText方法进行了重写,并添加了判断。Struts2RCE漏洞的根本原因是程序将用户可控数据带入OGNL表达式解析并执行,而OGNL(Object Graph Navigation Language)对象图形导航语言是一个功能强大的表达式语言,可以用来获取和设置Java对象的属性,但同时也可以对服务端对象进行修改,绕过沙盒甚至可以执行系统命令。 所以,从补丁分析来看LocalizedTextUtil.findText函数很可能是OGNL表达式的传入点,在调试分析时可在此处下断点跟踪分析。 关于jakarta Jakarta是struts2默认处理multipart报文的解析器,该组件定义在struts-default.xml中: 默认使用org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest类对上传数据进行解析并调用第三方组件commons-fileupload.jar完成上传操作。

struts2 ognl 异常 InstantiatingNullHandler

ERROR [com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler]-Could not create and/or set value back on to object 引用 struts2类型转换异常时错误信息屏蔽 2011-05-2416:29 类型转换异常导致转换方法没有正常返回,fieldError中添加了相应的错误记录,系统打印出改异常,级别为warm。我认为不算是struts2的bug.转换异常抛出警告很正常。如想屏蔽可用logger4j配置级别到error即可 ognl.MethodFailedException:Method"setLoc"failed for object tjx.HelloWorld@651e95[https://www.sodocs.net/doc/6711110076.html,ng.NoSuchMethodException: tjx.HelloWorld.setLoc([https://www.sodocs.net/doc/6711110076.html,ng.String;)] at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1285) at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1474) at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccesso r.java:85) at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:16 2) at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(Ob jectAccessor.java:27) at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2245) at

struts2简答题

1.Struts1存在的缺点是什么? 答:Struts1的缺点:没有实现model的整合技术;没有与Freemark或velocity等模板技术整合的技术;由于与ServletAPI耦合严重,测试需要web服务器,比较麻烦,属于侵入式设计,系统重构困难。 2.与struts1对比,Struts2 的优点是什么? 答:Action不再与servletAPI耦合,实现B/S向C/S结构的转换;Action不需要和webWork 耦合,代码重用性好;支持更多的表现技术层;测试更加容易。 3.struts2框架的处理流程? 答:浏览器发送请求;FilterDispatcher根据用户的请求调用相应的action;Struts2的拦截器链自动对请求调用通用功能;回调Action的execute方法;Execute方法处理结果将被输出到浏览器中,对应于相应的表现技术。 4.Struts2的web应用如何自动整合其他框架? 答:structs 2框架提供一种类似esclipse的扩展方式,它允许一种“可插拔”的方式安装插件,提供类似Structs2-xxx-plugin.jar的文件,只要该文件放在web应用的WEB-INF/lib路径下,struts2框架将自动加载该框架。 5.Struts2中如何匹配后缀为.action的请求的,是否可以改成.do? 答:可以,还可以改成/*任何其他URL pattern形式 6.在struts.xml中,包含配置的作用是什么? 答:采用标签,将较大struts.xml分而治之 7.什么是拦截器?拦截器的作用,拦截器栈与拦截器的区别,拦截器的配置 答:拦截器可以动态的拦截发送到指定Action的请求,通过拦截器机制,可以在Action的执行前插入某些代码,通过这种方式,就可以把多个action中需要重复指定的代码提取出来,就在拦截器是定义而提供了更好的代码重用。拦截器是AOP的编程思想,允许在Action处理之前和处理之后,加入用户自定义代码;它的作用:进行权限控制,跟踪日志,跟踪系统瓶颈区别:一个拦截器栈可以包含多个拦截器,一个拦截器可以完成一组特殊功能。配置:先定义拦截器,再定义拦截器栈,使用拦截器。 8.Action接口和ActionSupport类有什么作用?为什么我们写Action类时要实现Action接口? 答:actionsuppot是struts2框架的一个默认的Action类,该类里已提供许多默认方法;Actionsupport可以作为struts应用的actionsupport可以作为struts 应用的action处理类,继承该类可以简化action的开发。 9.在Action中用什么方法可以调用ServletAPI? 答:ServeletContentAware ServletResponseAware ServletRequestAware 10.在程序中使用直接访问ServletAPI的优缺点? 答:struts2 提供了一个ActionContext类来访问serletAPI使得用户应用不需要考虑那么多servletAPI方面的编程,使得编程更加优雅,并且可以脱离web 11.是否可以在一个action中处理多个动作,如何配置? 答:可以,为action元素指定method属性,让action类调用指定的方法,在struts.xml中配置action标签的method属性。 12.全局结果和局部结果的区别是什么?如果全局结果和局部结果都定义了同名结果,如何处理? 答:1)全局结果作用域为所有Action,局部结果作用域只针对某个action起作用2)局部Action会覆盖全局Action 13.Struts2 内建的结果类型有哪些?什么是默认的结果类型?

Struts2的拦截器总结

Struts2 中的拦截器和servelt 中的过滤器是非常的相似的。如果学过过滤器的话,肯定能够感觉的到,尽管有些微的不同。可是struts2的拦截器到底如何使用呢,为什么会有这些配置呢?接下来一一来看。 过滤器和拦截器是非常相似的,过滤器public interface Filter 接口里面有三个方法: ?init(FilterConfig filterConfig), ?destroy(), ?doFilter(ServletRequest request, ServletResponse response, FilterChain chain), 这里面的doFilter() 方法是最重要的,在struts2 中String intercept(ActionInvocation invocation)就相当于此方法。 如何完成一个拦截器呢?在struts2 中要实现一个接口这个接口是什么呢?在哪呢?,是否在哪听说过?是webwork 是我们以前听的最多的关于拦截器的框架,struts2 用了其中一个核心的东西,这个东西在是什么呢?是xwork 。恩,有了它才可以拦截,好了我们在哪找呢?在com.opensymphony.xwork2.interceptor 中找,里面有个Interceptor 这是个接口,里面也有三个方法,有init,destroy 和intercept 三个方法,而在struts2 里面的所有的拦截器都继承这个接口!

为了看这些是怎么实现的,加入了一些打印! 将上面的配置整合起来就是:

这样就可以让Aciton 被拦截了,到此,好了,可以运行程序了: 输出结果是:启动服务器init 被打出 运行后提交action 输出intercept 这个就是初步的一个拦截器。 ======= 在此可能出现一个问题,是什么呢?如果就我们做的注册程序而言,可以想一下,有数据转换,有数据校验,以前当转换和校验不符合的时候,点击提交,会提示相关错误信息,然而,此时当转换和校验依然不符合要求时,点击提交,却不会提示错误信息,为什么呢? ==== 当然你答对了,这些功能都包含在struts2的默认拦截器中,这里没执行是被添加的拦截器myinterceptor取代了。 为了查明原因可以查看一下struts2-core-2.xx.jar中的struts-default.xml 这个文件 这里定义的很多的东西,和我们的程序相关的非常紧密 首先这里有个 ... 和struts.xml 里面的 ...有什么关系呢?很明显可以猜到struts.xml 继承的就是struts-default.xml中的包struts-default。 这个里面还看到标签,这个是定义拦截器栈的,仔细看可以发现里面有个validation 如此可以猜想,validation 也是定义的一个拦截器,猜想当注册信息出错后没有提示信息呢?肯定是相关的验证功能没有执行,以前的执行了,现在没执行,

Struts 2 异常处理的常用的解决方法

一、第一个异常处理 严重: Servlet.service() for servlet jsp threw exception The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag. - [unknown location] at org.apache.struts2.views.jsp.TagUtils.getStack(TagUtils.java:60) at org.apache.struts2.views.jsp.StrutsBodyTagSupport.getStack(StrutsBodyTagSupport.java:44) at https://www.sodocs.net/doc/6711110076.html,ponentTagSupport.doStartTag(ComponentTagSupport.java:48) at https://www.sodocs.net/doc/6711110076.html,_005fstruts2_005flz.YpxxbQuery_jsp._jspx_meth_s_005fdebug_005f0(Ypxxb Query_jsp.java:108) at https://www.sodocs.net/doc/6711110076.html,_005fstruts2_005flz.YpxxbQuery_jsp._jspService(YpxxbQuery_jsp.java:83) 解决的办法:(4种解决方案) 1. web.xml 中添加一个filter struts2 *.jsp struts2 /action/* 2. struts2 /* 注意这里一定要是/* 3. 这通常是由于不经由Filter访问包含struts标签的jsp页面导致的。那么,只要通过配置,使得对jsp页面的访问请求由Filter过滤转发即可。 方法1:在strut.xml中配置一个通用Action,通过这个Action转发到jsp页面。这个时候,原先访问jsp的请求路径就要换成相应的Action路径了。写法如下。 /{1}.jsp 方法2:在web.xml中配置Filter的url-parttern。写法如下。其中struts2-dispatcher 是已定义的Filter。

strut2自定义拦截器的步骤

理解拦截器 1.1.什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。 在Webwork的中文文档的解释为——拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。 谈到拦截器,还有一个词大家应该知道——拦截器链(Interceptor Chain,在Struts 2中称为拦截器栈Interceptor Stack)。拦截器链就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。 1.2.拦截器的实现原理: 大部分时候,拦截器方法都是通过代理的方式来调用的。Struts 2的拦截器实现相对简单。当请求到达Struts 2的ServletDispatcher时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表(list),最后一个一个地调用列表中的拦截器。如下图: 2.拦截器的配置 Struts 2已经为您提供丰富多样的,功能齐全的拦截器实现。大家可以至struts2的jar包内的struts-default.xml查看关于默认的拦截器与拦截器链的配置。 Struts2(XWork)提供的拦截器的功能说明:

3.使用拦截器 一旦定义了拦截器和拦截器栈后,就可以使用这个拦截器或拦截器栈来拦截 栈将会失去作用。为了继续使用默认拦截器,所以上面配置文件中手动引入了默认拦截器。 4.自定义拦截器 作为“框架(framework)”,可扩展性是不可或缺的。虽然,Struts 2为我们提供如此丰富的拦截器实现,但是这并不意味我们失去创建自定义拦截器的能力,恰恰相反,在Struts 2自定义拦截器是相当容易的一件事。 4.1.实现拦截器类: 所有的Struts 2的拦截器都直接或间接实现接口 com.opensymphony.xwork2.interceptor.Interceptor。该接口提供了三个方法: 1)void init(); 在该拦截器被初始化之后,在该拦截器执行拦截之前, 系统回调该方法。对于每个拦截器而言,此方法只执行一次。 2)void destroy();该方法跟init()方法对应。在拦截器实例被销毁之前, 系统将回调该方法。

Struts2-拦截器详细配置过程

Struts2 拦截器详细配置过程 1:所有拦截器的超级接口Interceptor ,Action去实现这个接口; Interceptor 它其中有三个方法 (init(),destroy() ,interceptor()): Init()方法:在服务器起动的时候加载一次,并且只加载一次; Destroy()方法:当拦截器销毁时执行的方法; Interceptor()方法:其中里边有一个参数invocation public String intercept(ActionInvocation invocation) throws xception { System.out.println("interceptor!!"); String result=invocation.invoke(); return result; } Invocation.invoke()是如果只有一个拦截器执行完这个方法后,会返回给视图,如果有多个拦截器,它顺序的执行完所有的拦截器,才返回给视图. 2:可以在系统初始化中给拦截器指定默认的参数(也包括了定义拦截器方式)如下:在拦截器类中把hello当做属性set/get方式注入到拦截器类中;

张钊钊 也可以在使用拦截器的时候给它设置参数: 就是在一个action 的reslut下面配置上如下: /success.jsp /register.jsp welcome