请教struts中的NoSuchMethodException的问题

clwf 2010-01-12 12:03:45
前两天看见一个童鞋的问题:

--举个例子:

--正常请求应该是:http://localhost:8080/xxxx/book.do?method=bookList

--但,如果用户非法操作,将上面的URL截掉后面一部分,成为:
--http://localhost:8080/xxxx/book.do?method=bookLi 也就是st被截掉

--就会报错:java.lang.NoSuchMethodException


--请教:该怎样处理这样的问题呢?

我知道用struts的全局变量可行
<global-exceptions>
<exception key="error" type="java.lang.NoSuchMethodException"
path="/error.jsp" scope="request">
</exception>
</global-exceptions>

但是这样,后台还是会报错啊,怎么样捕获后台抛出的NoSuchMethodException的这个异常?即在后台打印捕获后的处理语句,如:“地址不正确!”之类的,而不是打印一大堆的堆栈信息,求高人指点
...全文
208 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazylaa 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 chenwei9988 的回复:]
引用 17 楼 crazylaa 的回复:
引用 16 楼 chenwei9988 的回复:
引用 15 楼 ibm_hoojo 的回复:
捕捉到NoSuchMethodException异常,然后在下面进行相应的提示处理。
try{
  //....业务代码
}catch(NoSuchMethodException e) {
    //如果出现异常
      errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage("信息错误!",false));
this.addErrors(request, errors);
}


现在的问题就是如果用户非法操作,直接在地址栏输入不正确的连接,怎么捕获?


所以叫你修改struts底层啊。


额。。。除了修改struts底层,还有其他办法吗?
[/Quote]
楼上不是有人说了利用反射吗?说不定可行。。。。楼主试试看咯。。。
hoojo 2010-01-12
  • 打赏
  • 举报
回复
捕捉到NoSuchMethodException异常,然后在下面进行相应的提示处理。
try{
//....业务代码
}catch(NoSuchMethodException e) {
//如果出现异常
errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage("信息错误!",false));
this.addErrors(request, errors);
}

crazylaa 2010-01-12
  • 打赏
  • 举报
回复
估计得修改struts底层了。
Z_FEI 2010-01-12
  • 打赏
  • 举报
回复
使用struts2,我把url地址栏里的地址改变了,只是报了个页面404,后台没抛异常!
clwf 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 crazylaa 的回复:]
引用 16 楼 chenwei9988 的回复:
引用 15 楼 ibm_hoojo 的回复:
捕捉到NoSuchMethodException异常,然后在下面进行相应的提示处理。
try{
  //....业务代码
}catch(NoSuchMethodException e) {
    //如果出现异常
      errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage("信息错误!",false));
this.addErrors(request, errors);
}


现在的问题就是如果用户非法操作,直接在地址栏输入不正确的连接,怎么捕获?


所以叫你修改struts底层啊。
[/Quote]

额。。。除了修改struts底层,还有其他办法吗?
yulu0214 2010-01-12
  • 打赏
  • 举报
回复
在web.xml配置404,504错误页面就好了
liujun_1028 2010-01-12
  • 打赏
  • 举报
回复
修改struts底层代码!!
xinxian13 2010-01-12
  • 打赏
  • 举报
回复
没有相应的方法,这个异常自己写较好,像楼上说的那样”不要在配置文件里配置,手动捕获异常,想怎么写就怎么写“
freedom2001 2010-01-12
  • 打赏
  • 举报
回复
不在配置文件里搞,楼上你手动能捕获到这个异常?如果你去改struts底层那也就不用捕获异常了,struts已经捕获了,只需要把错误信息给变更处理一下就行了
csd6101 2010-01-12
  • 打赏
  • 举报
回复
那你不要再配置文件里配置,手动捕获异常,想怎么写就怎么写
fengfengye 2010-01-12
  • 打赏
  • 举报
回复
自己写个异常类。
xiechunmei13 2010-01-12
  • 打赏
  • 举报
回复
在struts.xml中定义一个错误跳转的action例如:

<struts>
<package name="itv" extends="struts-default">
<!--这里定义一个default-action-ref 的name是你定义的错误action的name pageNotFound-->
<default-action-ref name="pageNotFound"></default-action-ref>
<action name="pageNotFound">
<result>/index.jsp</result>//这里可以定义你预先设计好的错误页面。
</action>

------其他省略----
<action>
.........
</action>

</package>
</struts>



luffyke 2010-01-12
  • 打赏
  • 举报
回复
修改struts底层代码!!
Z_FEI 2010-01-12
  • 打赏
  • 举报
回复
我猜想应该还是在哪里配置一下!搜半天也没找到答案!lz要是解决了,麻烦把答案分享下!谢谢了!
如果暂时没可行的办法,那就屏蔽地址好了!安全第一!
码农小小鸟 2010-01-12
  • 打赏
  • 举报
回复
你可以先获取这个URL,截取方法名,利用反射技术来判断这个方法是否存在,存在继续执行,不存在抛出,方法不存在的异常,直接返回
colin_pxx 2010-01-12
  • 打赏
  • 举报
回复
请问book是action还是servlet啊
你在web.xml中配置的时候
<filter-name>encodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
是不是配成*.do
xinyiben 2010-01-12
  • 打赏
  • 举报
回复
修改struts底层
crazylaa 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 chenwei9988 的回复:]
引用 15 楼 ibm_hoojo 的回复:
捕捉到NoSuchMethodException异常,然后在下面进行相应的提示处理。
try{
  //....业务代码
}catch(NoSuchMethodException e) {
    //如果出现异常
      errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage("信息错误!",false));
this.addErrors(request, errors);
}




现在的问题就是如果用户非法操作,直接在地址栏输入不正确的连接,怎么捕获?
[/Quote]

所以叫你修改struts底层啊。
clwf 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 ibm_hoojo 的回复:]
捕捉到NoSuchMethodException异常,然后在下面进行相应的提示处理。
try{
  //....业务代码
}catch(NoSuchMethodException e) {
    //如果出现异常
      errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage("信息错误!",false));
this.addErrors(request, errors);
}


[/Quote]

现在的问题就是如果用户非法操作,直接在地址栏输入不正确的连接,怎么捕获?
config_man 2010-01-12
  • 打赏
  • 举报
回复
转到error页面就算完成功能了。可以在error页面上设置个超链接、按钮、自动转向功能。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧