博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2 跳转至404 页面的解决方案
阅读量:7101 次
发布时间:2019-06-28

本文共 2291 字,大约阅读时间需要 7 分钟。

hot3.png

对于使用了struts2的工程,以下几种情况,我觉得需要跳转至 404 页面告诉用户:

① 在地址栏里,直接输入一个不存在的jsp页面

     比如, http://xxx:port/webapp/test.jsp, 其中test.jsp根本就不存在

解决办法:

404
/jsp/error/error_forward.jsp?code=400

上面的location对应的页面有如下限制: 

(1) 必须以“/”开头

(2) jsp页面中不能使用struts2的tag,否则会报错

(3)无法指定一个action作为location的值。如果你指定了一个action,那么当出现404出错时,画面将会是一片空白。

PS:下面两种情况是以使用“convention plugin”为前提的

② 在地址栏里,直接输入一个不存在的action

     比如, http://xxx:port/webapp/test!method1,其中,TestAction根本就不存在。报以下异常:

WARN [org.apache.struts2.dispatcher.Dispatcher : 68] - 
There is no Action mapped for namespace / and action name forward11. - [unknown location] at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185) at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:70) at org.apache.struts2.rest.RestActionProxyFactory.createActionProxy(RestActionProxyFactory.java:53) ...

解决办法:

/jsp/error/404.jsp

需要提醒的是,不要给上面的package指定namespace。另外,action的 result 一定要声明。除非在global-results中刚好有一个result 与你的“notFound()”这个方法所要跳转的result的名字 是一样的。 

上面的配置的意思就是,在package下配置一个 default action,这个当输入的action找不到的时候,就会使用此action来进行处理。

以我上面的配置来说,当一个action找不到时候,就会调用 com.test.test.action.ForwardAction 中的 notFound() 方法来对应。

③ 在地址栏里,输入了的action虽然存在,但是指定的方法,在action中却不存在

     比如,http://xxx:port/webapp/test!method2,其中TestAction存在,但是method2却不存在于TestAction中

解决办法:

首先,声明了两个bean,一个是convetion自己实现的handler,一个是我自己实现的handler,然后在,在unknown-handler-stack标签中引用它们,这样一来,在上面的“methodResult = unknownHandlerManager.handleUnknownMethod(action, methodName);”处,就会使用这里所引用的handler去处理未知情况。当然, handleUnknownAction、handleUnknownResult还是使用的是convention plugin中的实现,handleUnknownActionMethod使用的是我的实现。

 

以上具体详细内容详见

另外还有一种解决第种的方式(尚未验证):

参考

There is no Action mapped for namespace [/] and action name [] associated with context path....

在需要处理的命名空间下,加入由【*】配置的action即可。这个方法不单单能在根命名空间做处理,在任意命名空间都可以做这个处理,需要处理的就加上即可。

/WEB-INF/jsp/user.jsp
index

 

转载于:https://my.oschina.net/u/163737/blog/796205

你可能感兴趣的文章
#pragma once
查看>>
C#序列化多个对象到单个文件
查看>>
[Usaco2009 Jan]安全路经Travel BZOJ1576 Dijkstra+树链剖分+线段树
查看>>
CSS3制作下拉菜单
查看>>
从机器学习谈起
查看>>
SpringCloud之Eureka入门使用
查看>>
JS-JavaScript类库整理 [更新中...]
查看>>
分布式缓存的面试题11
查看>>
rep insw的用法小记
查看>>
程序员节诗词
查看>>
git远程仓库
查看>>
mysql之 重建GTID下主从关系
查看>>
Oracle 表空间与数据文件
查看>>
[Java小程序]聊天室——Socket和ServerSocket的使用
查看>>
iOS开发-面试总结(十七)
查看>>
改变注释字体颜色
查看>>
indexOf()、lastIndexOf()
查看>>
HDU2044 一只小蜜蜂...
查看>>
POJ2780 Linearity
查看>>
解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX
查看>>