1

我的工作环境低于jsp,struts 2.0,java我的问题是当我在浏览器中的url下面触发时

(1) https://test123.local.com/test123/test.action?id=9

它工作正常

但是当我使用更新 9 到 9' 触发相同的 url 时

(2) https://test123.local.com/test123/test.action?id=9 '

在控制台中给我以下异常

严重:servlet 默认的 Servlet.service() 抛出异常检测到无限递归:

并根据检查 FF fireburg 工具向我显示 500 内部服务器错误。

和 body 有防止此类错误的想法,我需要在异常中捕获此错误并希望将用户重定向到访问受限页面。

在这里,我提到了我从我身边发现的更多细节。

根据(2)中给出的url

我的 struts-admin.xml 条目如下

<action name="test" method="test" class="com.os.Environment.TestAction">  
            <interceptor-ref name="customStack">  
            </interceptor-ref>  
            <result>/jsp/user/tested.jsp</result>  
            <result name="passed" type="redirect-action">passed?Id=${Id}</result>  
</action>  
<interceptor-stack name="customStack">  
                <interceptor-ref name="chainStack"/>  
                <interceptor-ref name="myCustomCheck"/>  
                <interceptor-ref name="defaultStack"/>  
                <interceptor-ref name="exception">  
                    <param name="logEnabled">true</param>  
                    <param name="logLevel">ERROR</param>  
                </interceptor-ref>  
</interceptor-stack>  

因此我的第一个 customStack 拦截器称为

下面是我的自定义拦截器代码

public class myCustomCheck extends AbstractInterceptor  
{  

    private String invoke(ActionInvocation invocation) throws Exception  
    {  
        HttpServletRequest request = ServletActionContext.getRequest();  
        HttpServletResponse response = ServletActionContext.getResponse();  
        return invocation.invoke(); //this line throw the exception  
    }  

public String intercept(ActionInvocation invocation) throws Exception  
    {  
        HttpServletRequest request = ServletActionContext.getRequest();  
        HttpServletResponse response = ServletActionContext.getResponse();  
        return invoke(invocation);        
        }  

}  

我调试了上面的代码,我发现我的拦截器不会调用我的“已处理”名称操作并抛出异常,如下所示:

检测到无限递归:[//test!test, //handled, //handled] - [unknown location] at com.opensymphony.xwork2.ActionChainResult.execute(ActionChainResult.java:207) at com.opensymphony.xwork2.DefaultActionInvocation。 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)处的执行结果(DefaultActionInvocation.java:348)

如果您想了解其他信息,请告诉我

4

0 回答 0