我的工作环境低于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)
如果您想了解其他信息,请告诉我