查了相关资料,发现了几种异常处理方法
一种是和Struts2处理异常相类似,一种是使用配置统一处理,最后一种就是比较灵活的,也是个人比较喜欢的,顺便说贴个配置统一处理的代码,不做讲解
<bean id="exceptionResolver"
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="ex" />
<!--
//这是配置什么异常跳转什么页面
<property name="exceptionMappings">
<props>
<prop key="java.lang.Throwable">errors/error</prop>
</props>
</property>
-->
</bean>
这里贴代码说最后一种方法:
package Controller;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
@Controller
public class ExceptionController {
@ExceptionHandler
public String exp(HttpServletRequest request, Exception ex) {
request.setAttribute("ex", ex);
return "ex";
}
}
package Controller;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class LoginController extends ExceptionController{
@RequestMapping("login")
public String login(HttpServletRequest request,User user){
if(user.getUsername().equals("admin")&&user.getPassword().equals("admin"))
return "success";
else{
throw new RuntimeException("the text is no true");
}
}
}
package Controller;
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
login
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
exception
${requestScope.ex.message==null?"yes":requestScope.ex.message }
这里主要就是利用@ExceptionHandler 注解方法后,只要该Controller类发生异常都会由这个方法来处理。
所以使用起来很灵活,也少去了很多配置,只要把异常分类好,然后专门写一个controller类去注解,然后让所有的Controller类去继承,那么都可以共享该方法,实现
异常统一在一个工具类来处理,只需多做判断即可