博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2 404处理
阅读量:6917 次
发布时间:2019-06-27

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

hot3.png

目前在做一个网络应用程序,struts2 + spring + hibernate,服务器是tomcat。希望用户在IE地址栏乱敲的时候,所敲入的所有未定义的URL都能被程序捕捉到,然后转到一个自制的404错误处理页面。

首先查阅网上的资料,得知可以在web.xml中加入这么一段:

<error-page>

   <error-code>404</error-code>
   <location>/error/404.jsp</location>
</error-page>

这样,所以未找到的404错误都会转到/error/404.jsp接受处理。

但是经过试验,我发现以.action结尾的URL会先被struts2框架所捕获,而不会直接转入web.xml中配置的处理页面。这样,如果在struts.xml没有配置相应的action,则会在tomcat里输出错误:

严重: Could not find action or result

There is no Action mapped for namespace / and action name ******. - [unknown location]

虽然最后也能转入web.xml中配置的处理页面,但是这样在命令台瞎输出一些东西,非常不便于程序的管理和调试,所以还得想办法让struts2框架处理未定义的action。

查阅网上资料,发现可以在struts.xml中,添加一个默认的package,然后在这个默认的package中,添加一个默认的action,让这个action转向404错误处理页面:

<package name="default" extends="struts-default">

   <default-action-ref name="notFound" />
   <action name="notFound">
    <result>/error/404.jsp</result>
   </action>
</package>

默认的package的特点就在于不定义namespace属性,这样所有未定义的namespace都会转向这里。name="default"是为了便于阅读,其实name是什么都可以,也可以为空:name=""。

然后还要在其它已定义的package中也添加默认的action,转向404错误处理页面。这样就可以完全处理所有的404错误了。

网友评论:

<global-results>

<result name="notFound">/404.html</result>
</global-results>,也可以

转载于:https://my.oschina.net/songjianguo/blog/728985

你可能感兴趣的文章
基于S2SH框架的项目—antlr-2.7.2.jar包冲突问题
查看>>
RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本━新增岗位管理-WinForm部分...
查看>>
kafka-命令行创建topic
查看>>
《数据结构与算法分析——c语言描述》读后笔记
查看>>
windows系统如何查看物理cpu核数,内存型号等
查看>>
salt-key参数
查看>>
最安全的TurboMail邮件系统的安全防范技术介绍
查看>>
通向架构师的道路(第十二天)之Axis2 Web Service(三)
查看>>
我的友情链接
查看>>
pygame转换图片时 No video mode has been set 的错误
查看>>
linux删除某个文件夹下30天前的文件
查看>>
Fragment(碎片)
查看>>
hadoop地址
查看>>
linux
查看>>
Go语言gdb调试踩坑
查看>>
用户管理 之 在Linux系统中,批量添加用户的操作流程
查看>>
Hibernate fetch属性详解,很清楚
查看>>
关于biztel以及代理的一些相关问题
查看>>
js里面动态赋值 对象属性名
查看>>
vue全家桶之常用选项(四)
查看>>