Em alguns passos, embora o problema da transação tenha sido resolvido, o erro 500 aparece na interface, que ainda não é amigável para os usuários.
Geralmente, essas exceções são capturadas uniformemente na empresa e tratadas por uma classe especial de tratamento de exceções.
1. Captura de exceção
GlobalExceptionHandler 类
package cn.enjoy.utils;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
/**
* 异常处理类
*/
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = RuntimeException.class)
@ResponseBody
public Object defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
e.printStackTrace();
return "我是个异常处理类";
}
}
重启服务后,在浏览器上输入会出现异常的服务
localhost:8080/batchAdd?username=enjoy&passwd=123
A interface retorna:
2. processamento de página 404
1) Digitando deliberadamente o endereço errado no navegador:
localhost: 8080 / batchAddx? username = enjoy & passwd = 123, o back-end não tem este serviço. Embora a captura de exceção relevante tenha sido feita, o navegador ainda a exibe.
Neste momento, faça 404 (o mesmo com outros códigos de exceção):
Ao configurar tal página de erro, ela costumava ser configurada em WEB.XML, e aqui, uma instância de WebServerFactoryCustomizer é necessária para configuração.
2) Crie um novo método na classe GlobalExceptionHandler criada anteriormente
@Bean
public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer(){
return (factory->{
ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/404.do");
factory.addErrorPages( error404Page);
});
}
3) Crie uma nova classe BaseController
package cn.enjoy.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class BaseController {
@RequestMapping("/404.do")
public Object error_404() {
return "你要找的页面,被lison偷吃了!";
}
}
4) Reinicie o serviço e entre no navegador:
localhost:8080/batchAddx?username=enjoy&passwd=123
此时,页面返回“你要找的页面,被lison偷吃了!”
Nota : O método de configuração de WebServerFactoryCustomizer foi configurado após SpringBoot2. O códigode EmbeddedServletContainerCustomizer que precisa ser usadonaversão 1.X é
o seguinte:
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return (container -> {
ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/404.do");
container.addErrorPages( error404Page);
});
}
O último capítulo: entrada simples springboot (c) do
próximo capítulo: entrada simples springboot (5-1): interface front-end integrada -Jsp