现在的位置: 主页 > 在线留言 > 文章列表

javaWeb(struts+freemarker)项目,捕获404、异常并做

作者:沈阳市沈河区金瑞龙美术社 来源:www.jrlgg.com 发布时间:2017-09-02 11:44:53
 

javaWeb(struts+freemarker)项目,捕获404、异常并做优化处理

最近开发的java web项目(struts+freemarker),页面各种报404,500,抛各种异常,而且这些错误直接显示在页面上,对用户很不友好。最后通过以下三个步骤优化项目的容错


一、修改web.xml,重定向404页面
web.xml的功能很强大,如果页面返回错误码,如404,500,可以将页面重定向新的页面,如下配置,将所有404页面重定向到自定义的404.html
[html]
<error-page>
<error-code>404</error-code>
<location>/404.html</location>
</error-page>

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

二、修改struts.xml,捕获代码中未catch的异常,并重定向至专门处理错误的action,站群系统,返回用户友好的界面
上面提到的web.xml,也可以配置捕获异常,但如果捕获异常后,想做进一步处理,例如通知项目开发人员页面报错,就不太方便了。为满足异常处理的个性化需求,可以配置struts.xml
配置struts.xml,找到package节点,
定义捕获所有未捕获的异常,并交给errorHandle这个action处理
[html]
<global-results>
<result name="allException" type="chain">errorHandle</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="allException" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>

<global-results>
<result name="allException" type="chain">errorHandle</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="allException" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>新增errorHandle action配置
[html] view plaincopyprint?
<action name="errorHandle" class="com.test.action.ErrorHandleAction">
<result name="success" type="freemarker">/WEB-INF/error.html</result>
</action>

<action name="errorHandle" class="com.test.action.ErrorHandleAction">
<result name="success" type="freemarker">/WEB-INF/error.html</result>
</action>当然,还需要你自己写com.test.action.ErrorHandleAction代码逻辑,这个acion中,要特别注意,要自己捕获异常,不然,如果这个acion也抛出异常,逻辑就陷入死循环了


最后,我的struts.xml大致是这样的
[html]
<struts>
<package name="default" namespace="/" extends="json-default">

<result-types>
<result-type name="chart"
class="org.apache.struts2.dispatcher.ChartResult" />
</result-types>
<global-results>
<result name="allException" type="chain">errorHandle</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="allException" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>

<action name="errorHandle" class="com.test.action.ErrorHandleAction">
<result name="success" type="freemarker">/WEB-INF/error.html</result>
</action>

//以下省略其他的
</struts>

<struts>
<package name="default" namespace="/" extends="json-default">

<result-types>
<result-type name="chart"
class="org.apache.struts2.dispatcher.ChartResult" />
</result-types>
<global-results>
<result name="allException" type="chain">errorHandle</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="allException" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:宜昌SEO http://yichang.4567w.com

  • 上一篇:卡汀财经—CFA (特许金融分析师)简介
  • 下一篇:最后一页
  •