struts2中的异常映射处理机制
04-14 阅读数 1947
赞
踩
任何成熟的MVC框架都应该提供成就的异常处理机制,Strut2也不例外。Struts2提供了一种声明式的异常处理方式,Struts2也是通过配置的拦截器来实现异常处理机制的。
一异常处理机制
1、配置
Struts2的异常处理机制是:通过在struts.xml文件中配置﹤exception-mapping …﹥元素完成的,配置该元素时,需要指定两个属性:
exception:此属性指定该异常映射所设置的异常类型。
result:此属性指定Action出现该异常时,系统转入result属性所指向的结果。
异常映射也分为两种:
局部异常映射:<exception-mapping…>元素作为<action…>元素的子元素配置。
全局异常映射:<exception-mapping…>元素作为<global-exception-mappings>元素的子元素配置。
2、输出异常信息
使用Struts2的标签来输出异常信息:
<s:property value="exception.message"/>:输出异常对象本身。
<s:property value="exceptionStack"/>: 输出异常堆栈信息。
利用struts2的异常处理机制和拦截器机制,可以很方便的实现异常处理功能,你不再需要在Action中捕获异常,并抛出相关的异常了,这些都交给拦截器来帮你做了。
二、应用实例
1、配置struts.xml
1. 在 struts.xml 文件中,声明全局异常映射,以及对应的全局异常转发如下所示:
<global-results>
<result name="error">/admin/error/ErrDisplay.ftl</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="error"
exception="org.basis.common.exception.SystemException"></exception-mapping>
</global-exception-mappings>
2、异常处理类
SystemException是异常处理类,代码如下所示:
package org.basis.common.exception;
public class SystemException extends RuntimeException {
private static final long serialVersionUID = 1L;
public SystemException(String frdMessage) {
super(createFriendlyErrMsg(frdMessage));
}
public SystemException(Throwable throwable){
super(throwable);
}
public SystemException(Throwable throwable, String frdMessage){
super(throwable);
}
private static String createFriendlyErrMsg(String msgBody) {
String prefixStr = "抱歉。";
String suffixStr = "请稍后再试或与管理员联系!";
StringBuffer friendlyErrMsg = new StringBuffer();
friendlyErrMsg.append(prefixStr);
friendlyErrMsg.append(msgBody);
friendlyErrMsg.append(suffixStr);
return friendlyErrMsg.toString();
}
}
3、全局异常处理页面
在系统的/WebRoot/common/global/目录下,新建一个全局的异常处一页面errorPage.jsp。这个页面很简单。
JAVA代码:errorPage.jsp
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page isErrorPage="true"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
response.setHeader("Cache-Control","no-cache");
response.setHeader("Cache-Control","no-store");
response.setDateHeader("Expires",0);
response.setHeader("Pragma","no-cache");
%>
<html>
<head>
<script language="javascript">
function showContent(){
if(document.getElementByIdx_x("errorMessage").style.display == 'block'){
document.getElementByIdx_x("errorMessage").style.display = 'none';
}else{
document.getElementByIdx_x("errorMessage").style.display = 'block';
}
}
</script>
</head>
<body scroll="auto">
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" class="bg" valign="top">
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="table-layout:fixed;word-break:break-all;">
<tr>
<td align="center" width="100%" height="80">
<img src="${pageContext.request.contextPath}/common/images/basis/systemException.gif" border="0" align="absmiddle"> <s:property value="exception.message" />
</td>
</tr>
<tr>
<td height="30" align="center">
<a href="#" οnclick="javascript:history.go(-1);"><s:text name="global.return"/></a>
<a href="#" οnclick="javascript:showContent();">查看详细信息</a>
</td>
</tr>
<tr>
<td align="left" valign="top">
<!-- 异常堆栈信息(开发人员用) -->
<div style="display:none;" id="errorMessage">
<pre> <s:property value="exceptionStack" /></pre>
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
在这里,应用自定义的异常拦截器,在拦截器中,捕获常见的异常,并以友好异常信息抛出,相关代码如下所示:
JAVA代码:ExceptionInterceptor.java
package org.basis.struts.interceptor;
import java.io.IOException;
import java.sql.SQLException;
import org.basis.common.exception.SystemException;
import org.springframework.dao.DataAccessException;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
@SuppressWarnings("serial")
public class ExceptionInterceptor extends AbstractInterceptor {
@SuppressWarnings("unchecked")
public String intercept(ActionInvocation actionInvocation) throws Exception {
String result = "";
try {
result = actionInvocation.invoke();
} catch (DataAccessException ex) {
throw new SystemException("数据库操作失败!");
} catch (NullPointerException ex) {
throw new SystemException("空指针,调用了未经初始化或者是不存在的对象!");
} catch (IOException ex) {
throw new SystemException("IO读写异常!");
} catch (ClassNotFoundException ex) {
throw new SystemException("指定的类不存在!");
} catch (ArithmeticException ex) {
throw new SystemException("数学运算异常!");
} catch (ArrayIndexOutOfBoundsException ex) {
throw new SystemException("数组下标越界!");
} catch (IllegalArgumentException ex) {
throw new SystemException("调用方法的参数错误!");
} catch (ClassCastException ex) {
throw new SystemException("类型强制转换错误!");
} catch (SecurityException ex) {
throw new SystemException("违背安全原则异常!");
} catch (SQLException ex) {
throw new SystemException("操作数据库异常!");
} catch (NoSuchMethodError ex) {
throw new SystemException("调用了未定义的方法!");
} catch (InternalError ex) {
throw new SystemException("Java虚拟机发生了内部错误!");
} catch (Exception ex) {
throw new SystemException("程序内部错误,操作失败!");
}
return result;
}
}
5、配置异常拦截器
配置这个拦截器,代码如下:
struts.xml文件局部:
<interceptors>
<interceptor name="checkLogin" class="org.basis.struts.interceptor.CheckLoginInterceptor" />
<interceptor name="checkException" class="org.basis.struts.interceptor.ExceptionInterceptor" />
<!-- 定义一个拦截器栈 -->
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="checkException" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mydefault" />
<global-results>
<result name="error">/common/global/errorPage.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="error"
exception="org.basis.common.exception.SystemException"></exception-mapping>
</global-exception-mappings>
经过这样处理,Struts2做异常处理还是比较方便的了。
下面我们修改一下前面国际华的那个Action,让它抛一个错误。
package demo.struts2.action;
import java.util.ArrayList;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
public class MessageAction extends ActionSupport {
public String execute() throws Exception {
// getText(String) string为key
String str1 = getText("label.helloWorld");
System.out.println(str1);
// 带参数的
String str2 = getText("label.hello", new String[] { "fjf" });
System.out.println(str2);
// 与上一种实现一样
List l = new ArrayList();
l.add("callan");
String str3 = getText("label.hello", l);
System.out.println(str3);
String str4 = getText("userName.required");
System.out.println(str4);
int i = 1/0;
return SUCCESS;
}
}
我们知道,做除法的时候,除数不能为零,int i = 1/0;这里应该抛出错误,实际运行一下这个Action,系统提示异常,如下图所示:
<div class="hide-article-box hide-article-pos text-center"> <a class="btn-readmore" data-report-view="{"mod":"popu_376","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226","strategy":"readmore"}" data-report-click="{"mod":"popu_376","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226","strategy":"readmore"}"> 展开阅读全文 <svg class="icon chevrondown" aria-hidden="true"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-chevrondown"></use> </svg> </a> </div> <!--打赏开始--> <div class="reward-user-box"> <span class="reward-word" style="color:#B4B4B4 !important">有 <span class="num">0</span> 个人打赏</span> </div> <!--打赏结束--> <div class="recommend-box"><div class="recommend-item-box type_blog clearfix" data-report-view="{"mod":"popu_387","dest":"https://blog.csdn.net/u011159417/article/details/72782627","strategy":"BlogCommendFromMachineLearnPai2","index":"0"}" data-report-click="{"mod":"popu_387","dest":"https://blog.csdn.net/u011159417/article/details/72782627","strategy":"BlogCommendFromMachineLearnPai2","index":"0"}"> <div class="content" style="width: 712px;"> <a href="https://blog.csdn.net/u011159417/article/details/72782627" target="_blank" rel="noopener" title="Struts2声明式异常处理"> <h4 class="text-truncate oneline" style="width: 552px;"> <em>Struts</em><em>2</em>声明式<em>异常</em><em>处理</em> </h4> <div class="info-box d-flex align-content-center"> <p class="date-and-readNum oneline"> <span class="date hover-show">05-27</span> <span class="read-num hover-hide"> 阅读数 1550</span> </p> </div> </a> <p class="content" style="width: 712px;"> <a href="https://blog.csdn.net/u011159417/article/details/72782627" target="_blank" rel="noopener" title="Struts2声明式异常处理"> <span class="desc oneline">在使用框架之前我们的程序中遇到异常,都是使用try{…}catch{…}手动捕获解决,或者使用throwsException将异常抛给别人去解决。在struts2框架中,异常的解决方法,更方便了,只要...</span> </a> <span class="blog_title_box oneline "> <span class="type-show type-show-blog type-show-after">博文</span> <a target="_blank" rel="noopener" href="https://blog.csdn.net/u011159417">来自: <span class="blog_title"> 红桃峰峰 的博客</span></a> </span> </p> </div> </div>
08-11 阅读数 916
struts.xml配置&lt;?xmlversion="1.0"encoding="UTF-8"?&gt;&lt;!DOCTYPEst... 博文 来自: cyywxy的博客
08-21 阅读数 384
struts2异常处理JSPStrutsApacheWeb *编写整个系统统一的异常类:SystemException Java代码 package com.bjsxt.oa; publ... 博文
<div class="recommend-item-box recommend-recommend-box"><div id="kp_box_59" data-pid="59"><script type="text/javascript">
(function() {
var s = "_" + Math.random().toString(36).slice(2);
document.write('<div style="" id="' + s + '"></div>');
(window.slotbydup = window.slotbydup || []).push({
id: "u3491668",
container: s
});
})();
05-03 阅读数 170
Struts提供了一种更简单的方法来处理未捕获的异常,并将用户重定向到专门的错误页面。你可以很轻松地配置Struts为不同的异常显示不同的错误页面。Struts通过使用“exception”拦截器来使... 博文 来自: michael1112的专栏
06-11 阅读数 21
&lt;global-results&gt;定义全局结果处理一般发生异常之后结果返回errHandler因为errHandler是由&lt;global-exception-m... 博文 来自: weixin_33726943的博客
04-24 阅读数 8071
异常处理很重要,异常处理不是定义在验证阶段的,就拿登录这个功能来说吧,假如用户填入的信息都符合规范,通过了验证阶段,但去数据库中查询该用户信息时,发现数据库中没有与其匹配的信息,则会抛出异常,转向错误... 博文 来自: Super的专栏
11-14 阅读数 1537
在Struts2框架中,采用声明式异常处理方式。在这种方式下,只需要在struts.xml文件中进行配置,Struts2便能够处理异常,并跳转到相应的视图,而在Action中无须编写任何异常处理代码。... 博文 来自: Mr. David 专栏
08-27 阅读数 1717
最近在做项目需要实现在系统出现错误时做一定的处理,例如自定义发邮件。再转发到异常的页面,网上的资料大多都是直接转发到异常的页面。没有进行自定义的处理。实现这个功能是在struts2的拦截器基础上加上自... 博文 来自: 孙琛斌的专栏
<div class="recommend-item-box recommend-recommend-box"><div id="kp_box_60" data-pid="60"><iframe src="https://adaccount.csdn.net/#/preview/645?m=biLLbiticALpQQnnHiLbbcDbyLtHciAbnDEmtLQJSHXQiLHbXfvAHnQtWpiciXEDvEnDAptDnnnAAiSpfDHJiDtpQtSiptEnEJiQ&k=" frameborder="0" width="100%" height="75px" scrolling="no"></iframe><img class="pre-img-lasy" data-src="https://kunyu.csdn.net/1.png?d=2&k=&m=biLLbiticALpQQnnHiLbbcDbyLtHciAbnDEmtLQJSHXQiLHbXfvAHnQtWpiciXEDvEnDAptDnnnAAiSpfDHJiDtpQtSiptEnEJiQ"></div></div>
06-26 阅读数 506
Struts2采用声明式的方法管理异常处理,因此我们无需在execute方法体内写大量的try...catch...语句来捕获异常,execute方法将产生的所有异常抛出,统一交由Struts2框架处... 博文 来自: jazywoo_在路上
01-13 阅读数 413
Struts2的异常处理机制①Action接口里的execute方法签名://处理用户请求的execute方法,该方法抛出所有异常publicStringexecute()throwsExceptio... 博文 来自: Slow_Wakler的专栏
<div class="recommend-item-box blog-expert-recommend-box" style="display: block;">
<div class="d-flex">
<div class="blog-expert-recommend">
<div class="blog-expert">
<div class="blog-expert-flexbox" data-report-view="{"mod":"popu_709","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226"}"><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226"}"><a href="https://blog.csdn.net/u011159417" target="_blank"><img src="https://profile.csdnimg.cn/5/6/6/3_u011159417" username="u011159417" alt="关注:日拱一卒" title="关注:日拱一卒"></a><span data-report-click="{"mod":"popu_710","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226"}"><span class="blog-expert-button-follow btn-red-follow" data-name="u011159417" data-nick="关注:日拱一卒">关注</span></span></div><div class="info"><span data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226"}"><a href="https://blog.csdn.net/u011159417" target="_blank"><h5 class="oneline" title="关注:日拱一卒">关注:日拱一卒</h5></a></span> <p></p><p class="article-num" title="230篇文章"> 230篇文章</p><p class="article-num" title="排名:7000+"> 排名:7000+</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226"}"><a href="https://blog.csdn.net/VipMao" target="_blank"><img src="https://profile.csdnimg.cn/7/7/9/3_vipmao" username="VipMao" alt="VipMao" title="VipMao"></a><span data-report-click="{"mod":"popu_710","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226"}"><span class="blog-expert-button-follow btn-red-follow" data-name="VipMao" data-nick="VipMao">关注</span></span></div><div class="info"><span data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226"}"><a href="https://blog.csdn.net/VipMao" target="_blank"><h5 class="oneline" title="VipMao">VipMao</h5></a></span> <p></p><p class="article-num" title="94篇文章"> 94篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226"}"><a href="https://blog.csdn.net/cyywxy" target="_blank"><img src="https://profile.csdnimg.cn/C/F/7/3_cyywxy" username="cyywxy" alt="cyywxy" title="cyywxy"></a><span data-report-click="{"mod":"popu_710","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226"}"><span class="blog-expert-button-follow btn-red-follow" data-name="cyywxy" data-nick="cyywxy">关注</span></span></div><div class="info"><span data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226"}"><a href="https://blog.csdn.net/cyywxy" target="_blank"><h5 class="oneline" title="cyywxy">cyywxy</h5></a></span> <p></p><p class="article-num" title="131篇文章"> 131篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226"}"><a href="https://blog.csdn.net/kaixuanfeng2012" target="_blank"><img src="https://profile.csdnimg.cn/3/7/5/3_kaixuanfeng2012" username="kaixuanfeng2012" alt="凯炫风" title="凯炫风"></a><span data-report-click="{"mod":"popu_710","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226"}"><span class="blog-expert-button-follow btn-red-follow" data-name="kaixuanfeng2012" data-nick="凯炫风">关注</span></span></div><div class="info"><span data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226"}"><a href="https://blog.csdn.net/kaixuanfeng2012" target="_blank"><h5 class="oneline" title="凯炫风">凯炫风</h5></a></span> <p></p><p class="article-num" title="102篇文章"> 102篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div></div>
</div>
</div>
</div>
</div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{"mod":"popu_387","dest":"https://blog.csdn.net/michael1112/article/details/71128832","strategy":"searchFromBaidu1","index":"5"}" data-report-click="{"mod":"popu_387","dest":"https://blog.csdn.net/michael1112/article/details/71128832","strategy":"searchFromBaidu1","index":"5"}" data-track-view="{"mod":"popu_387","dest":"https://blog.csdn.net/michael1112/article/details/71128832","strategy":"searchFromBaidu1","index":4,"extend1":"_"}" data-track-click="{"mod":"popu_387","dest":"https://blog.csdn.net/michael1112/article/details/71128832","strategy":"searchFromBaidu1","index":4,"extend1":"_"}" data-flg="true"> <a href="https://blog.csdn.net/michael1112/article/details/71128832" target="_blank"> <h4 class="text-truncate oneline" style="width: 626px;"><em>Struts</em><em>2</em> <em>异常</em><em>处理</em> - michael111<em>2</em>的专栏 - CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">11-24</span> </p> </div> </a> </div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{"mod":"popu_387","dest":"https://blog.csdn.net/collegeyuan/article/details/84764785","strategy":"searchFromBaidu1","index":"6"}" data-report-click="{"mod":"popu_387","dest":"https://blog.csdn.net/collegeyuan/article/details/84764785","strategy":"searchFromBaidu1","index":"6"}" data-track-view="{"mod":"popu_387","dest":"https://blog.csdn.net/collegeyuan/article/details/84764785","strategy":"searchFromBaidu1","index":5,"extend1":"_"}" data-track-click="{"mod":"popu_387","dest":"https://blog.csdn.net/collegeyuan/article/details/84764785","strategy":"searchFromBaidu1","index":5,"extend1":"_"}" data-flg="true"> <a href="https://blog.csdn.net/collegeyuan/article/details/84764785" target="_blank"> <h4 class="text-truncate oneline" style="width: 633px;"><em>Struts</em><em>异常</em><em>处理</em><em>机制</em> - collegeyuan的专栏 - CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">10-9</span> </p> </div> </a> </div>
07-21 阅读数 204
在Struts2中支持声明式异常处理 抛出 一般我们处理异常是在后台抛出或者捕获如在上一个BBS中,我们的service包的中CategoryService在处理实现数据库的操作时有很多异常,如在增加... 博文 来自: wangdongli_1993的博客
09-28 阅读数 2855
我们在很多网站中都有看到,如果我们访问不到一些资源页面的时候,网站huibangwomen... 博文 来自: 陈楚东的专栏-学编程切记心浮气躁,贵在坚持
07-20 阅读数 671
1、新建一个web工程,添加struts支持2、在src下新建一个包com.etc.action,在包下新建一个类ResultAction:packagecom.etc.action;importja... 博文 来自: 小梦想的博客
<div class="recommend-item-box recommend-recommend-box"><div id="kp_box_61" data-pid="61"><iframe src="https://adaccount.csdn.net/#/preview/263?m=cEEbQQHntEALLbpicADiJLASJnybAiJHnJcEtJSQnSmLvtpttHXpStcJtEHDpXUtHQnWcSELvJfQyyppotbiAmtJAiSHtDQELEAQ&k=" frameborder="0" width="100%" height="75px" scrolling="no"></iframe><img class="pre-img-lasy" data-src="https://kunyu.csdn.net/1.png?d=2&k=&m=cEEbQQHntEALLbpicADiJLASJnybAiJHnJcEtJSQnSmLvtpttHXpStcJtEHDpXUtHQnWcSELvJfQyyppotbiAmtJAiSHtDQELEAQ"></div></div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{"mod":"popu_387","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226/","strategy":"searchFromBaidu1","index":"9"}" data-report-click="{"mod":"popu_387","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226/","strategy":"searchFromBaidu1","index":"9"}" data-track-view="{"mod":"popu_387","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226/","strategy":"searchFromBaidu1","index":8,"extend1":"_"}" data-track-click="{"mod":"popu_387","dest":"https://blog.csdn.net/tianyulinger3344/article/details/7554226/","strategy":"searchFromBaidu1","index":8,"extend1":"_"}" data-flg="true"> <a href="https://blog.csdn.net/tianyulinger3344/article/details/7554226/" target="_blank"> <h4 class="text-truncate oneline" style="width: 626px;"><em>Struts</em><em>2</em> <em>异常</em><em>处理</em><em>机制</em> - tianyulinger3344的专栏 - CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">10-20</span> </p> </div> </a> </div>
07-08 阅读数 177
1.创建异常类,并且继承RuntimeException,并且从超类生成构造函数publicclassMyExceptionextendsRuntimeException{ publicMyExcep... 博文 来自: HZPHYT的博客
07-27 阅读数 8
如何抓到异常的?步骤:(以之前写的小样例为例)如果CategoryService中的list方法出错(category_表不存在):publicList<Category>list()th... 博文 来自: weixin_33826268的博客
09-08 阅读数 2449
假设项目为dao、service、web.action三层。正常的异常处理流程为,从底层dao开始向上抛throws,抛到上层service层后try-cache捕获处理。 web.action只负... 博文 来自: zilong0536的专栏
<div class="recommend-item-box recommend-recommend-box"><div id="kp_box_62" data-pid="62"><iframe src="https://adaccount.csdn.net/#/preview/677?m=cbEtfvHDQtvnJnHpciUbQypHXEDHXSyyHiSAAnLEAbAbQpbpJiLtWcpALpJpbEQQAJXSbEfJtivXcAbpAbAHJScSLLQLStAbbSLQ&k=" frameborder="0" width="100%" height="75px" scrolling="no"></iframe><img class="pre-img-lasy" data-src="https://kunyu.csdn.net/1.png?d=2&k=&m=cbEtfvHDQtvnJnHpciUbQypHXEDHXSyyHiSAAnLEAbAbQpbpJiLtWcpALpJpbEQQAJXSbEfJtivXcAbpAbAHJScSLLQLStAbbSLQ"></div></div>
02-04 阅读数 11
Struts异常处理 1)、将Action的处理方法写成将异常抛出。throwsException 2)、在Struts.xml中配置异常处理。 异常处理: 局部异常:将&lt;... 博文 来自: collegeyuan的专栏
06-05 阅读数 6
当程序发生异常的时候,最好不要让用户看到异常的那一长串堆栈信息,最好给用户一个友好的提示,告诉用户那里出错即可,给出一个明确的提示,struts2本身提供了这种功能的支持!struts2异常处理示例见... 博文 来自: u011004598的专栏
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_387","dest":"https://download.csdn.net/download/yecaiyu/8690239","strategy":"BlogCommendFromMachineLearnPai2","index":"21"}" data-report-click="{"mod":"popu_387","dest":"https://download.csdn.net/download/yecaiyu/8690239","strategy":"BlogCommendFromMachineLearnPai2","index":"21"}">
<a href="https://download.csdn.net/download/yecaiyu/8690239" rel="noopener" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
<em>Struts</em><em>2</em> <em>异常</em><em>处理</em>的四种获取属性方法 </h4>
<span class="data float-right">05-12</span>
</div>
<div class="desc oneline">
Struts2 异常处理的四种获取属性方法,大家可以借鉴学习 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
struts2配置文件:<interceptors> <interceptor name="customer_exception" class="com.xx.ExceptionInterceptor 论坛
04-27 阅读数 4089
在java中,异常分为两种,运行时异常(也就是uncheckException)和已检查异常checkException,运行时异常包括平常遇到的各种异常,如空指针异常,数据格式异常等一系列异常,这种... 博文 来自: u014087286的专栏
<div class="recommend-item-box recommend-recommend-box"><div id="kp_box_63" data-pid="63"><iframe src="https://adaccount.csdn.net/#/preview/575?m=bESAcAASJtQLivHipicpicypbEbbSiAHAtcDDcHnLLbEJXLUpHnJvyJnAbtvtEiLLEtiHLQWpQEEoLccnnymbLfimHpLiSESJcQQ&k=" frameborder="0" width="100%" height="75px" scrolling="no"></iframe><img class="pre-img-lasy" data-src="https://kunyu.csdn.net/1.png?d=2&k=&m=bESAcAASJtQLivHipicpicypbEbbSiAHAtcDDcHnLLbEJXLUpHnJvyJnAbtvtEiLLEtiHLQWpQEEoLccnnymbLfimHpLiSESJcQQ"></div></div>
07-11 阅读数 1万+
因为在Action的execute方法声明时就抛出了Exception异常,所以我们无需再execute方法中捕捉异常,仅需在struts.xml中配置异常处理。为了使用Struts2的异常处理机制,... 博文 来自: IT徐胖子的专栏
03-24 阅读数 1932
当Action处理用户请求结束后,控制器应该使用哪个视图资源生成响应呢? 这就必须使用元素进行配置,该元素定义逻辑视图名和物理视图资源之间的映射关系。理解处理结果浏览者、控制器和视图... 博文 来自: kakarot5的专栏
02-19 阅读数 215
在struts2应用程序中你还在使用trycatch语句来捕获异常么?如果是这样的,那你OUT啦!struts2支持声明式异常处理,可以再Action中直接抛出异常而交给struts2来处理,当然需要... 博文 来自: coolybq的专栏
现实需要要用$.ajax向后台传送复杂形式的数据,所以$.post不能满足需求 例如: $.ajax({ url:"customerAction_getById.action", data:"{'ci 论坛
<div class="recommend-item-box recommend-recommend-box"><div id="kp_box_64" data-pid="64"><script type="text/javascript">
(function() {
var s = "_" + Math.random().toString(36).slice(2);
document.write('<div style="" id="' + s + '"></div>');
(window.slotbydup = window.slotbydup || []).push({
id: "u3600856",
container: s
});
})();
09-29 阅读数 3430
Struts2拦截器实现异常处理机制在j2ee项目中,系统内部难免会出现一些异常,如果把异常放任不管直接打印到浏览器可能会让用户感觉莫名其妙,也有可能让某些用户找到搞定系统的方法。所以不要在页面上输出... 博文 来自: 心有猛虎,细嗅蔷薇
06-12 阅读数 1246
一、struts2局部结果与异常 1、以用户登录为例 登录界面login.jsp用户登录username:password: 定义自定义的登录异常类publicclassLoginExcepti... 博文 来自: 漂流幻境
03-23 阅读数 668
一、处理一般异常(javaBean异常) struts2进行异常处理首先需要添加exception拦截器,而默认拦截器栈已经加入了这个拦截器,所以不用特意的声明。在Struts2框架中,采用... 博文 来自: 北漂不是天涯,何时才能归家
04-21 阅读数 1736
创建ErrorInterceptor.javaimportjavax.servlet.http.HttpServletRequest;importorg.apache.log4j.Logger;imp... 博文 来自: isiah_zhou的专栏
<div class="recommend-item-box recommend-recommend-box"><div id="kp_box_65" data-pid="65"><script type="text/javascript">
(function() {
var s = "_" + Math.random().toString(36).slice(2);
document.write('<div style="" id="' + s + '"></div>');
(window.slotbydup = window.slotbydup || []).push({
id: "u4221803",
container: s
});
})();
01-31 阅读数 77
为了有利于代码的维护,struts2通过配置struts.xml,用拦截器将异常处理代码和action代码完全分开。具体是用exception-mapping和result标签完成异常处理的映射。下面... 博文 来自: Isaac Lin
10-27 阅读数 465
struts2提供了符合资深框架特点声明式异常处理机制。在struts2中,我们可以再struts.xml文件中配置异常映射,将一种异常类型和一个结果对应起来,由这个结果负责对异常做出响应。strut... 博文 来自: 路漫漫,水迢迢
08-31 阅读数 3万+
网络上虽然已经有了很多关于程序员的话题,但大部分人对这个群体还是很陌生。我们在谈论程序员的时候,究竟该聊些什么呢?各位程序员大佬们,请让我听到你们的声音!不管你是前端开发...... 博文
09-03 阅读数 1万+
| 导语工欲善其事,必先利其器;士欲宣其义,必先读其书。后台开发作为互联网技术领域的掌上明珠,一直都是开发者们的追逐的高峰。本文将从后台开发所涉及到的技术术语出发,基于...... 博文
<div class="recommend-item-box recommend-recommend-box"><div id="kp_box_66" data-pid="66"><div id="three_ad38" class="mediav_ad"></div>
又到深夜了,我按照以往在csdn和公众号写着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而 怨气满满!
而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道…
博文
09-12 阅读数 2439
在 2005 年的某一天,Linux 之父 Linus Torvalds 发布了他的又一个里程碑作品——Git。它的出现改变了软件开发流程,大大地提高了开发流畅度!直到现...... 博文
责编 | 郭 芮
这段时间和一些做数据分析的同学闲聊,我发现数据分析技能入门阶段存在一个普遍性的问题,很多凭着兴趣入坑的同学,都能够很快熟悉Python基础语法,然后不约而同的一头…
博文
作者|王琳
本文经授权转载自燃财经(ID:rancaijing)
9月10日,张勇转正了,他由阿里巴巴董事局…
博文
<div class="recommend-item-box recommend-recommend-box"><div id="_ps9zmr387vs" style=""><iframe width="900" frameborder="0" height="90" scrolling="no" src="https://pos.baidu.com/s?hei=90&wid=900&di=u3491668&ltu=https%3A%2F%2Fblog.csdn.net%2Ftianyulinger3344%2Farticle%2Fdetails%2F7554226&psi=07aafcf1b822ca1e35d681cb72d4ec28&tcn=1573470241&tpr=1573470241377&ant=0&cec=UTF-8&col=zh-CN&ps=13915x397&ari=2&cce=true&ltr=https%3A%2F%2Fblog.csdn.net%2FPastthewind%2Farticle%2Fdetails%2F81839651&ti=Struts2%20%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86%E6%9C%BA%E5%88%B6&psr=1920x1080&dc=3&chi=1&par=1920x1040&cdo=-1&dri=1&drs=1&dai=4&pss=1242x16587&dtm=HTML_POST&cmi=35&ccd=24&cja=false&pcs=1242x615&prot=2&pis=-1x-1&cpl=19&tlm=1573470241&exps=111000&cfv=0&dis=0"></iframe></div><script type="text/javascript" src="//rabc1.iteye.com/production/res/rxjg.js?pkcgstj=jm"></script></div>
作者|James Bedford
译者 |苏本如,责编 | 屠敏
出品 | CSDN(ID:CSDNnews)
以下为译文:
介绍
…
博文
出品 | CSDN(ID:CSDNnews)
从西二旗地铁站B口出来,步行700多米可以看到一个工业建筑风格的院子。这个独立的院子和后厂村各大互联网公司的高楼林立有些不同。
院…
博文
来源:https://zhuanlan.zhihu.com/p/47066521
2.在调试时,将断点设…
博文
第一篇:Python模拟登录淘宝,详细讲解如何使用requests库登录淘宝pc端。
第二篇:淘宝自动登录2.0,新增Cookies序列化…
博文
<div class="recommend-item-box recommend-recommend-box"><div id="_pilo2xft83f" style=""><iframe width="900" frameborder="0" height="90" scrolling="no" src="//pos.baidu.com/s?hei=90&wid=900&di=u3491668&ltu=https%3A%2F%2Fblog.csdn.net%2Ftianyulinger3344%2Farticle%2Fdetails%2F7554226&psi=07aafcf1b822ca1e35d681cb72d4ec28&col=zh-CN&ari=2&cec=UTF-8&pcs=1242x615&cdo=-1&ps=14420x397&par=1920x1040&ti=Struts2%20%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86%E6%9C%BA%E5%88%B6&psr=1920x1080&tcn=1573470241&tlm=1573470241&pis=-1x-1&dis=0&tpr=1573470241377&drs=1&prot=2&cpl=19&cja=false&chi=1&cmi=35&dtm=HTML_POST&ant=0&dc=3&ccd=24&cce=true&exps=111000&cfv=0&pss=1242x16682&dri=2&dai=5&ltr=https%3A%2F%2Fblog.csdn.net%2FPastthewind%2Farticle%2Fdetails%2F81839651"></iframe></div><script type="text/javascript" src="//rabc1.iteye.com/production/res/rxjg.js?pkcgstj=jm"></script></div>
09-17 阅读数 1997
什么是 ServeoServeo 是一个免费的内网穿透服务,Serveo 可以将本地计算机暴露在互联网上,官方声称其为 Ngrok 的绝佳替代品。Serveo 其最大优点...... 博文
09-24 阅读数 902
复习前端面试的知识,是为了巩固前端的基础知识,最重要的还是平时的积累!”开源项目https://github.com/InterviewMap/CS-Interview...... 博文
09-26 阅读数 9410
作者 | 胡巍巍 发自杭州云栖大会责编 | 唐小引出品 | CSDN(ID:CSDNnews)2018年10月31日,阿里旗下的平头哥半导体有限公司成立。如今,平头哥成立...... 博文
这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案…
博文
08-24 阅读数 1万+
很多人都问,技术人员如何成长,每个阶段又是怎样的,如何才能走出当前的迷茫,实现自我的突破。所以我结合我自己10多年的从业经验,总结了技术人员成长的9个段位,希望对大家的职...... 博文
09-29 阅读数 5835
这里先给大家分享一个小故事:在我刚开始参加工作的那年,公司安排我开发一款即时通讯软件(IM,类似于 QQ 聊天软件),在这之前我心里也知道如果多线程操作一个整型值是要加锁...... 博文
帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!让他们的左手 / …
博文
10-15 阅读数 6927
2019年诺贝尔经济学奖,颁给了来自麻省理工学院的 阿巴希·巴纳吉(Abhijit Vinayak Banerjee)、艾丝特·杜芙若(Esther Duflo)夫妇和哈...... 博文
Redis 本质上是一个 Key-Value 类型的内存数据库, 整个数据库加载在内存当中进行操作, 定期通过异步操作把数据库数据 flush 到硬盘上进行保存。
因为是纯内…
博文
阿里云最近在做活动,低至2折,有兴趣可以看看:
https://promotion.aliyun.com/ntms/…
博文
第一步:执行FROM
第二步:WHERE条件过滤
第三步:GROUP BY 分组
第四步:执行SELECT 投影列
第五步:HAVING条件过滤
第六步:执行ORDER B…
博文
10-22 阅读数 2万+
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树
动…
博文
10-22 阅读数 1万+
程序员男朋友你的程序员男朋友为你做过什么暖心的事情呢?我的男朋友是一个程序员,他有很多大家在网络上吐槽的程序员的缺点,比如加班很多,没空陪我吃饭逛街看电影,比如说他有的时...... 博文
10-24 阅读数 5019
文章目录前言介绍 前言 我终于决定还是把这个放出来。 这是我在纪中颓废的时候写的。 介绍 先来视频: 具体信息主界面上都有写。 按空格暂停,建议暂停后再升级属性。 记录最高分的文件进行... 博文
10-25 阅读数 1万+
2019双十一,tb推出了新的活动,商店喵币,看了一下每天都有几个任务来领取喵币,从而升级店铺赚钱,然而我既想赚红包又不想干苦力,遂使用python来进行手机自动化操作,目测全网首发!
用到的库:
…
博文
文/Daniel.W
David坐在我对面,窗外是梦境般的外滩夜景,繁星点点的璀璨灯火,散落在黄浦江两岸。我转过头对David说,你丫挺会享受啊,约我…
博文
前言
天各一方的两台计算机是如何通信的呢?在成千上万的计算机中,为什么一台计算机能够准确着寻找到另外一台计算机,并且把数据发送给它呢?
可能很多人都听说过网络通信的 5 …
博文
<div class="recommend-item-box type_hot_word"> <div class="content clearfix" style="width: 712px;"> <div class="float-left"> <span> <a href="https://www.csdn.net/gather_14/MtTaQg4sLWRvd25sb2Fk.html" target="_blank"> c#后台强行跳转</a> </span> <span> <a href="https://www.csdn.net/gather_1f/MtTaQg5sLWRvd25sb2Fk.html" target="_blank"> c#数据拼接</a> </span> <span> <a href="https://www.csdn.net/gather_17/MtTaUgwsLWRvd25sb2Fk.html" target="_blank"> c# cookie 遍历</a> </span> <span> <a href="https://www.csdn.net/gather_1a/MtTaUgxsLWRvd25sb2Fk.html" target="_blank"> c# 去除空格</a> </span> <span> <a href="https://www.csdn.net/gather_13/MtTaUgysLWRvd25sb2Fk.html" target="_blank"> c#读取tiff未bmp</a> </span> <span> <a href="https://www.csdn.net/gather_1b/MtTaUgzsLWRvd25sb2Fk.html" target="_blank"> c# 识别回车</a> </span> <span> <a href="https://www.csdn.net/gather_11/MtTaUg0sLWRvd25sb2Fk.html" target="_blank"> c#生成条形码ean13</a> </span> <span> <a href="https://www.csdn.net/gather_12/MtTaUg1sLWRvd25sb2Fk.html" target="_blank"> c#子控制器调用父控制器</a> </span> <span> <a href="https://www.csdn.net/gather_11/MtTaUg2sLWRvd25sb2Fk.html" target="_blank"> c# 写大文件</a> </span> <span> <a href="https://www.csdn.net/gather_16/MtTaUg3sLWRvd25sb2Fk.html" target="_blank"> c# 浏览pdf</a> </span> </div> </div> </div> <div class="recommend-loading-box"> <img src="https://csdnimg.cn/release/phoenix/images/feedLoading.gif"> </div> <div class="recommend-end-box"> <p class="text-center">没有更多推荐了,<a href="https://blog.csdn.net/" class="c-blue c-blue-hover c-blue-focus">返回首页</a></p> </div> </div> <div class="template-box"> <span>©️2019 CSDN</span><span class="point"></span> <span>皮肤主题: 大白</span> <span> 设计师: CSDN官方博客 </span> </div> </main>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。