いくつかの手順を経て、トランザクションの問題は解決されましたが、500エラーがインターフェイスに表示されますが、これは依然としてユーザーにとって不親切です。
通常、これらの例外は企業内で統一された方法でキャプチャされ、特別な例外処理クラスによって処理されます。
1.例外キャプチャ
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
インターフェイスは次を返します。
2.404ページの処理
1)ブラウザで意図的に間違ったアドレスを入力します。
localhost:8080 / batchAddx?username = enjoy&passwd = 123の場合、バックエンドにはこのサービスがありません。関連する例外キャプチャは実行されていますが、ブラウザには引き続き表示されます。
このとき、404を実行します(他の例外コードと同じ)。
このようなエラーページを構成する場合、以前はWEB.XMLで構成されていました。ここでは、構成にWebServerFactoryCustomizerのインスタンスが必要です。
2)前に作成したGlobalExceptionHandlerクラスに新しいメソッドを作成します
@Bean
public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer(){
return (factory->{
ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/404.do");
factory.addErrorPages( error404Page);
});
}
3)新しい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)サービスを再起動し、ブラウザに入力します。
localhost:8080/batchAddx?username=enjoy&passwd=123
此时,页面返回“你要找的页面,被lison偷吃了!”
注:WebServerFactoryCustomizerの構成方法は、 SpringBoot2の後に構成されました。1.Xバージョンで使用する必要があるEmbeddedServletContainerCustomizerの
コードは次のとおりです。
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return (container -> {
ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/404.do");
container.addErrorPages( error404Page);
});
}
最後の章:次の章のspringbootの簡単なエントリ(c)
:springbootの簡単なエントリ(5-1):統合されたフロントエンドインターフェイス-Jsp