Spring:异常处理


Spring异常处理配置

相当于以前的JSP、servlet如果出错,要跳转到自定义的错误页面。


1.spring-mvc.xml配置

<bean id="handlerExceptionResolver" class="net.dfrz.exception.MyExceptionResolver"/>

2.编写class MyExceptionResolver implements HandlerExceptionResolver

在这里插入图片描述

package net.dfrz.exception;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

public class MyExceptionResolver implements HandlerExceptionResolver{

	@Override
	public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
			Exception ex) {
		ModelAndView mv=new ModelAndView();
		mv.addObject("ex",ex);
		mv.setViewName("/exception/home");
		return mv;
	}
}

3.设定JSP界面

在这里插入图片描述

4.设定一个会出错的class

在这里插入图片描述

package net.dfrz.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller		//声明它是一个控制器
@RequestMapping("hw")	//请求映射,类似web.XML的mapping,设定到类请求路径(可省略,开发会写)
public class HelloWorldController {
	
	@RequestMapping("/hello")	//设定到方法的请求路径(访问时需与类的mapping合并)
	public String hello() throws Exception {
		int i =10/0;//出错!
		System.out.println("I DO WORK!");
		return "hello";
	}

}

code运行效果如下↓

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Security提供了许多方式来处理身份验证和授权的异常。下面是一些常见的异常处理方式: 1. 使用Spring的全局异常处理器:可以通过在应用程序中定义一个`@ControllerAdvice`类,并使用`@ExceptionHandler`注解来处理Spring Security的异常。在异常处理方法中,可以根据不同的异常类型进行相应的处理,例如返回自定义的错误页面或者JSON响应。 ```java @ControllerAdvice public class SecurityExceptionHandler { @ExceptionHandler(AuthenticationException.class) public ResponseEntity<String> handleAuthenticationException(AuthenticationException ex) { // 处理身份验证异常 return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(ex.getMessage()); } @ExceptionHandler(AccessDeniedException.class) public ResponseEntity<String> handleAccessDeniedException(AccessDeniedException ex) { // 处理访问拒绝异常 return ResponseEntity.status(HttpStatus.FORBIDDEN).body(ex.getMessage()); } // 其他异常处理方法... } ``` 2. 自定义AccessDeniedHandler:可以实现`AccessDeniedHandler`接口来处理访问拒绝异常。可以在`handle()`方法中自定义处理逻辑,例如返回自定义的错误页面或者JSON响应。 ```java public class CustomAccessDeniedHandler implements AccessDeniedHandler { @Override public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException ex) throws IOException, ServletException { // 处理访问拒绝异常 response.sendError(HttpServletResponse.SC_FORBIDDEN, ex.getMessage()); } } ``` 然后,在Spring Security配置中指定自定义的`AccessDeniedHandler`: ```java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { // ... @Override protected void configure(HttpSecurity http) throws Exception { http // ... .exceptionHandling() .accessDeniedHandler(new CustomAccessDeniedHandler()) // ... } // ... } ``` 这些只是处理Spring Security异常的两种常见方式,你可以根据实际需求选择适合的方式进行异常处理

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值