Beyaz etiket hata sayfaları donuk görünür ve kullanıcı deneyimini olumsuz etkileyebilir. Thymeleaf'i kullanarak özel hata sayfalarının nasıl oluşturulacağını öğrenin.
Yazılımda hatalar yaşanıyor. En iyi uygulamalar bile bazı noktalarda hatalarla karşılaşacaktır. Bu nedenle her uygulamada bazı hata işleme mekanizmaları bulunmalıdır.
Spring Boot, hata işlemeye yönelik otomatik yapılandırmanın bir bileşeni olarak varsayılan bir Beyaz Etiket hata sayfası sağlar. Bununla birlikte beklenti, geliştiricilerin Beyaz Etiket hata sayfasının yerini alan özel bir hata sayfası oluşturmasıdır. Bu makalede Spring Boot uygulamalarınız için hata sayfasını nasıl özelleştireceğinizi öğreneceksiniz.
Spring Boot'un Beyaz Etiket Hata Sayfası
Spring Boot uygulaması bir hatayla karşılaştığında, /error URL'si. Bu konumda görünüm yoksa Beyaz Etiket hata sayfası görüntülenir:
Beyaz Etiket hata sayfası, ilgili saat dilimiyle birlikte hatanın tarihini ve saatini belirtir. Ayrıca hata türünü ve ilgili kodunu da gösterir. Whitelabel sayfası şunu belirtir:
bu bir 404 hatasıdır (sayfa bulunamadı). Bunun nedeni, örnek uygulamanın "/products" URL'si için eşlemesinin olmamasıdır.Beyaz Etiket hata sayfasında sunulan bilgilerin çoğu belirli hata özniteliklerinden alınmıştır. Spring Boot'un hata görünümünün aşağıdaki hata özelliklerine erişimi vardır:
- hata: hatanın nedeni.
- zaman damgası: hatanın oluştuğu tarih ve saat.
- durum: hata durum kodu.
- istisna: kök istisnanın sınıf adı (hata bir istisnanın sonucuysa).
- İleti: istisna mesajı (hata bir istisnanın sonucuysa).
- hatalar: BindingResult istisnasından kaynaklanan herhangi bir sonuç (eğer hata bir istisnanın sonucuysa).
- iz: istisna yığın izlemesi (eğer hata bir istisnanın sonucuysa).
- yol: Hatanın oluştuğu URL yolu.
Thymeleaf ile Hata Sayfası Oluşturma
Spring Boot uygulamanızın bir "hata" şablonu içinde saklanan tek bir hata sayfası olmalıdır. Bu şablonun uzantısı, kullanmaya karar verdiğiniz şablon teknolojisine bağlı olarak değişecektir. Örneğin, Java Sunucu Sayfaları (JSP) şablonunu tercih ederseniz dosya adı şu şekilde olmalıdır: error.jsp.
Ancak bu örnek Spring Boot uygulaması şunu kullanıyor: Thymeleaf şablon motoru. Yani şablon adı error.html. Hata şablonunuzu sürekli olarak şablon klasörün altında kaynaklar diğer tüm şablon dosyalarınızın bulunduğu dizin.
error.html Dosyası
html>
<htmlxmlns: th="http://www.thymeleaf.org">
<head>
<title> Errortitle>
<linkrel="stylesheet"th: href="@{/css/style.css}"/>
head>
<bodyth: style="'background: url(/images/background1.jpg)
no-repeat center center fixed;'">
<divclass="container" >
<h1>An error has occurred...h1>
<imgth: src="@{/images/error-icon.png}"
width="100px" height="100px" />
<p>There seems to be a problem with the page you requested
(<spanth: text="${path}">span>).p>
<pth: text="${'The status code is ' + status
+ ', which means that the page was ' + error + '.'}">p>
<pth: text="${'Further details: ' + message + '.'}">p>
<aclass="btn"href="/home">Back to homea>
div>
body>
html>
Özelleştirilmiş hata sayfası birçok önemli görevi yerine getirir. Bir hatanın meydana geldiğini bildirir. Daha sonra sergileniyor HTTP isteği bu hatayı tetikledi. Ayrıca kullanıcıya hatayla ilişkili durum kodunu da sağlar. Ancak kullanıcı durum kodlarına aşina değilse sayfa, hata özelliği aracılığıyla kodun anlamını da açıklar.
Metnin son satırı, istisna durumunda kullanıcıya bir mesaj sunar. Daha sonra sondaki bağlantı kullanıcının ana sayfaya geri dönmesine olanak tanır. error.html dosyası aşağıdaki görünümü oluşturmak için bir CSS stil sayfası ve iki resim kullanır:
Hata Sayfanızı Kullanıcı Dostu Tutun
Hata sayfasının temel amacı, kullanıcıyı belirli bir hatanın oluştuğu konusunda bilgilendirmektir. Ancak bu hata sayfası hala uygulamanın bir yönüdür. Bu nedenle hata sayfasının aynı zamanda kullanıcı dostu olmasını sağlamak da çok önemlidir.
Bu, hatayı daha basit bir şekilde ileten hata özniteliklerini kullanmayı tercih etmek anlamına gelecektir. Bu nedenle, çok daha karmaşık olan ve kullanıcının bilmesine gerek olmayan ayrıntıları içeren trace özelliği yerine path özelliğini kullanmayı tercih edebilirsiniz.
Ayrıca rastgele bir kullanıcıya uygulamanızın iç işleyişi hakkında aşırı bilgi vermek istemezsiniz çünkü bu, uygulamanın güvenliğini tehlikeye atabilir.