spring异常处理实例(登录例子)

给出一个spring异常处理的简单例子:
spring配置文件Config.xml
<? xmlversion="1.0"encoding="UTF-8" ?>
<! DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd" >

< beans >
< bean id ="viewResolver"
class
="org.springframework.web.servlet.view.InternalResourceViewResolver" >
< property name ="viewClass" >
< value >
org.springframework.web.servlet.view.JstlView
</ value >
</ property >

< property name ="prefix" >
< value > /WEB-INF/view/ </ value >
</ property >

< property name ="suffix" >
< value > .jsp </ value >
</ property >

</ bean >

< bean id ="messageSource"
class
="org.springframework.context.support.ResourceBundleMessageSource" >
< property name ="basename" >< value > messages </ value ></ property >
</ bean >


< bean id ="exceptionResolver"
class
="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" >
< property name ="defaultErrorView" >
< value > failure </ value >
</ property >

< property name ="exceptionMappings" >
< props >
< prop key ="java.sql.SQLException" > showDBError </ prop >
< prop key ="java.lang.RuntimeException" > showError </ prop >
</ props >
</ property >
</ bean >

< bean id ="RegisterValidator"
class
="net.xiaxin.validator.RegisterValidator" />

< bean id ="RegisterAction"
class
="net.xiaxin.action.RegisterAction" >
< property name ="commandClass" >
< value > net.xiaxin.reqbean.RegisterInfo </ value >
</ property >

< property name ="validator" >
< ref local ="RegisterValidator" />
</ property >

< property name ="formView" >
< value > register </ value >
</ property >

< property name ="successView" >
< value > RegisterSuccess </ value >
</ property >
</ bean >

< bean id ="freemarkerConfig"
class
="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer" >
< property name ="templateLoaderPath" >
< value > WEB-INF/view/ </ value >
</ property >
</ bean >

< bean id ="urlMapping"
class
="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" >
< property name ="mappings" >
< props >
< prop key ="/login.do" > LoginAction </ prop >
< prop key ="/register.do" > RegisterAction </ prop >
</ props >
</ property >
</ bean >

< bean id ="LoginAction"
class
="net.xiaxin.action.LoginAction" >
< property name ="commandClass" >
< value > net.xiaxin.action.LoginInfo </ value >
</ property >

< property name ="fail_view" >
< value > loginfail </ value >
</ property >

< property name ="success_view" >
< value > main </ value >
</ property >
</ bean >
</ beans >
登录测试代码:
<! DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >

< title > Inserttitlehere </ title >
</ head >
< body >
< form method ="post" action ="login.do" >
< p align ="center" > 登录 </ p >
< br >
用户名:
< input type ="text" name ="username" >
< br >
&nbsp;&nbsp; 码:
< input type ="password" name ="password" >
< br >
< p >
< input type ="submit" value ="提交" name ="B1" >
< input type ="reset" value ="重置" name ="B2" >
</ p >
</ form >
</ body >
</ html >
loginInfo代码
public class LoginInfo ... {
privateStringusername;
privateStringpassword;
publicStringgetUsername()...{
returnusername;
}

publicvoidsetUsername(Stringusername)...{
this.username=username;
}

publicStringgetPassword()...{
returnpassword;
}

publicvoidsetPassword(Stringpassword)...{
this.password=password;
}

}


显示错误页面:showDBError.jsp
<% ... @pagelanguage="java"contentType="text/html;charset=gb2312"
pageEncoding
="gb2312"
%>
<% ... @pageimport="java.lang.Exception" %>
<% ... @pageimport="java.io.PrintWriter" %>
<! DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >
< meta http-equiv ="Content-Type" content ="text/html;charset=gb2312" >
< title > Inserttitlehere </ title >
</ head >
< body >
<% ... Exceptionex=(Exception)request.getAttribute("exception"); %>
< H2 > Exception: <% = ex %> </ H2 >
<% ... ex.printStackTrace(newjava.io.PrintWriter(out)); %>
</ body >
</ html >

LoginAction代码
public class LoginAction extends SimpleFormController ... {
privateStringfail_view;
privateStringsuccess_view;

protectedModelAndViewonSubmit(Objectcmd,BindExceptionex)throwsException...{
LoginInfologinInfo
=(LoginInfo)cmd;
if(login(loginInfo)==0)...{
HashMapresult_map
=newHashMap();
result_map.put(
"logininfo",loginInfo);

ListmsgList
=newLinkedList();
msgList.add(
"msg1");
msgList.add(
"msg2");
msgList.add(
"msg3");
result_map.put(
"messages",msgList);

returnnewModelAndView(this.getSuccess_view(),result_map);
}
else...{
SQLExceptione
=newSQLException("thisisaexception");

throwe;
//returnnewModelAndView(this.getFail_view());
}


}


privateintlogin(LoginInfologinInfo)...{
if("oscar".equalsIgnoreCase(loginInfo.getUsername())&&"123456".equals(loginInfo.getPassword()))...{
return0;
}

return1;

}

publicStringgetFail_view()...{
returnfail_view;
}

publicvoidsetFail_view(Stringfail_view)...{
this.fail_view=fail_view;
}

publicStringgetSuccess_view()...{
returnsuccess_view;
}

publicvoidsetSuccess_view(Stringsuccess_view)...{
this.success_view=success_view;
}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值