举个例子:正常请求应该是:http://localhost:8080/xxxx/book.do?method=bookList但,如果用户非法操作,将上面的URL截掉后面一部分,成为:
http://localhost:8080/xxxx/book.do?method=bookLi 也就是st被截掉就会报错:java.lang.NoSuchMethodException
请教:该怎样处理这样的问题呢?
http://localhost:8080/xxxx/book.do?method=bookLi 也就是st被截掉就会报错:java.lang.NoSuchMethodException
请教:该怎样处理这样的问题呢?
1 在反射调用方法的地方,用try{} catch(){}把当前异常捕获。
2.写一个过滤器,截获当前访问路径的method方法,在数据库中做一个action与方法的对照表,将截获当前访问路径的method方法在数据库中查找,是否存在,存在则跳转到指定路径,否则,提示
<global-exceptions>
<exception key="error" type="java.lang.NoSuchMethodException"
path="/error.jsp" scope="request">
</exception>
</global-exceptions> 在资源文件下(扩展名为properties)下配置异常错误信息:
java.lang.NoSuchMethodException=错误的请求
在JSP文件中可以从request对象里拿到这个资源文件消息,并友好地呈现出来,其它的异常解决也类似。
<global-exceptions>写在struts-config.xml的什么位置?
什么位置都可以...
<!-- 固定资产购置单记录审批后发送 -->
<action path="/oa/supplies/fixed/fixedAppApproveSend"
parameter="approveSend" name="fixedAppForm" scope="request"
type="com.bluefish.oa.supplies.fixed.action.FixedAppAction">
</action> <!-- 查看固定资产购置单记录历史 -->
<action path="/oa/supplies/fixed/fixedAppHistory"
parameter="history" name="fixedAppForm" scope="request"
type="com.bluefish.oa.supplies.fixed.action.FixedAppAction">
<forward name="success"
path="/oa/supplies/fixed/fixedAppEdit.jsp" />
</action>
<!-- ************************ 固定资产购置审批 end *********************** -->
</action-mappings>
<message-resources parameter="ApplicationResources" />
<global-exceptions>
<exception key="" type=""></exception>
</global-exceptions>
但是这样,后台还是会报错啊,怎么样捕获后台抛出的NoSuchMethodException的这个异常?即在后台打印出我想要的处理,求高人指点