Bu bölümde, kitaplığın daha karmaşık uygulamalarını yazmanıza yardımcı olacak bazı ipuçları verilmiştir:
- Kendi Hizmet Cihazınızı Kullanma
- Yetenekleri Tanımlama
- Etkinlik Akışını Özelleştirme
- Parametreleri
DataTableGenerator.generateDataTable
öğesine iletme - servissiz veri kaynağını uygulama
Kendi Yayınınızı Kullanma
En basit veri kaynağı uygulamaları, kitaplığın DataSourceServlet
sınıfından devralınır.
DataSourceServlet
dışında bir sınıftan devralmak için bir veri kaynağını aşağıdaki gibi uygulayın:
-
DataTableGenerator
arayüzünü uygulayın vegetCapabilities()
ilegenerateDataTable()
ayarlarını geçersiz kılın. - Veri kaynağı akışını çalıştırmak için servlet'inizin kodundan
DataSourceHelper.executeDataSourceServletFlow()
yöntemini çağırın.Bu yöntem aşağıdaki parametreleri alır:HttpServletRequest
nesnesi.HttpServletResponse
nesnesi.- Yukarıdaki 1. adımda uyguladığınız
DataTableGenerator
arayüzü. - Kısıtlı veya sınırsız erişim modunu belirten bir boole.
Örneğin, servlet'inizi dahili kimlik doğrulama sağlayan AuthServlet
adlı başka bir servlet sınıfından devralmak isterseniz aşağıdaki gibi DataSourceServlet
yerine AuthServlet
devralmak için SimpleServletExample
öğesini yeniden yazabilirsiniz:
-
DataTableGenerator
arayüzünü uygulayın. -
generateDataTable()
uygulamasınıDataSourceServlet
uygulamanızdanDataTableGenerator
uygulamanıza taşıyın. -
Capabilities.None
özelliğini döndürmek içinDataTableGenerator
uygulamanızdagetCapabilities()
değerini geçersiz kılın. - Sera kodunuzdan (
doGet()
veyadoPost()
)DataSourceHelper.executeDataSourceServletFlow()
numaralı telefonu arayın veDataTableGenerator
uygulamanızı iletin. Bu yöntem, veri kaynağı sonuçlarının servlet yanıtına oluşturulması da dahil olmak üzere veri kaynağının tüm akışını çalıştırır.
Aynı tekniği, normalde çerçeve tarafından sağlanan bir soyut sınıfı kullandığınız servlet çerçevesi kullanıyorsanız da kullanabilirsiniz.
Örneğin, WebWork kullanıyorsanız ActionSupport
sınıfını devralmayı tercih edebilirsiniz.
Yetenekleri Tanımlama
Veri deponuz büyük miktarda veri içeriyorsa ve veri kaynağınızın verimliliğini artırmak istiyorsanız veri mağazanızın sorgu özelliklerini kullanabilirsiniz. Örneğin, veri deponuzun bir veritabanı olduğunu ve
veritabanında çok sayıda sütun olduğunu varsayalım. Görselleştirme bu sütunların yalnızca birkaçını isterse veritabanının içinde bir SELECT
işlemi çalıştırmak, tüm sütunları almaktan ve SELECT
işlevini gerçekleştirmek için kitaplığın sorgu özelliklerini kullanmaktan daha verimlidir.
SELECT
özelliklerini uygulamak için veritabanında bir SELECT
işlemi çalıştırmak ve veri tablosu döndürmek üzere kod yazarsınız.
Kodunuzun sağladığı sorgu özelliklerini tanımlamak için Capabilities
enum'u kullanın. Şu seçenekler kullanılabilir:
NONE
: Varsayılan, kodunuz sorgu işlemi sağlamaz.SQL
: Kodunuz SQL sorgu işlemleri sağlar.SORT_AND_PAGINATION
: Kodunuz hem sıralama hem de sayfalara ayırma sorgu işlemleri sağlar.SELECT
: Kodunuz seçme işlemi sağlar.ALL
: KodunuzSQL
,SORT_AND_PAGINATION
veSELECT
işlemlerini sağlar.
Not: Her durumda kitaplık, kodunuz tarafından sağlanmayan tüm sorgu işlemlerini işler.
NONE
dışında bir özellik uygulamak için Capabilities.getCapabilities()
yöntemini geçersiz kılın ve veri depolama işlemini sorgulamak ve veri tablosu döndürmek için DataTable.generateDataTable()
uygulayın.
Örneklerden üçü, özelliklerin nasıl uygulanacağını göstermektedir: AdvancedExampleServlet
, AdvancedExampleServlet2
ve SqlDataSourceServlet
.
Hepsi example
paketinde. AdvancedExampleServlet2
, Yetenekleri Tanımlama ve Etkinlik Akışı konusunda ele alınmıştır.
Etkinlik Akışını Özelleştirme
Varsayılan etkinlik akışı DataSourceHelper.executeDataSourceServletFlow
içinde tanımlanır.
Varsayılan akış aşağıdaki gibidir:
- Sorgu parametrelerini ayıklama ve ayrıştırma.
- Yalnızca kısıtlı erişim modu için, isteğin servlet ile aynı alandan kaynaklandığını doğrulayın.
- Veri kaynağı sorgusu ve tamamlama sorgusu olmak üzere iki sorgu nesnesi oluşturma isteği ayrıştırılır. Veri kaynağı sorgusunu
generateDataTable()
uygulamanıza geçirin. generateDataTable()
uygulamanız bir veri tablosu oluşturur.- 5. adımda oluşturulan veri tablosunda tamamlama sorgusunu çalıştırın.
- Veri tablosunu görselleştirmede belirtilen biçimde oluşturun ve servlet yanıtını ayarlayın.
Kendi etkinlik akışınızı belirtmek için datasource.DataSourceHelper
içinde yardımcı işlevleri çağırın. Örnek bir uygulama için Yetenekleri Tanımlama ve Etkinlik Akışı bölümüne bakın.
Parametreleri DataTableGenerator.generateDataTable
öğesine iletme
Bir sorgunun veya HttpServletRequest
nesnesinin parçası olmayan verileri DataTableGenerator.generateDataTable
öğesine aktarmak için HttpServletRequest.setAttribute
öğesini kullanabilirsiniz. Örnek kod aşağıda verilmiştir.
Serginizin koduna, aktarmak istediğiniz nesneyi HttpServletRequest
bölümüne aşağıdaki gibi yerleştirin:
request.setAttribute("my_object_name", myObject); DataSourceHelper.executeDataSourceServletFlow(request, response, dataTableGenerator);
dataTableGenerator
arayüz uygulamanızda, nesneyi HttpServletRequest
nesnesinden aşağıdaki gibi alın:
public DataTable generateDataTable(Query query, HttpServletRequest request){ Object myObject = request.getAttribute("my_object_name"); // Add your code to manipulate myObject here }
servissiz veri kaynağını uygulama
Kütüphaneyi bir servlet olmadan uyguluyorsanız yalnızca servlet ortamı gerektirmeyen sınıfları ve yardımcı işlevleri kullanabilirsiniz. Bunlar, Query
ve DataTable
sınıflarının yanı sıra parseQuery
, applyQuery
, validateQuery
ve splitQuery
gibi DataSourceHelper
işlevlerinden bazılarını içerir.
Aşağıdakileri yapmak için bu sınıfları ve işlevleri kullanabilirsiniz:
- Görselleştirme sorgusunu ayrıştırın.
- Sorguyu bir veri kaynağı sorgusuna ve tamamlama sorgusuna bölün.
- Veri tablosu oluşturmak için tamamlama sorgusunu çalıştırın.
- Veri tablosunu görselleştirme için
HTML
,CSV
veyaJSON
biçiminde kullanın.