Bu bölümde, kitaplığın daha karmaşık uygulamalarını yazmanıza yardımcı olacak bazı ipuçları verilmektedir:
- Kendi Hizmetinizi Kullanma
- Özellikleri Tanımlama
- Etkinlik Akışını Özelleştirme
- Parametreleri
DataTableGenerator.generateDataTable
Hedefine Aktarma - servlet olmayan veri kaynağını uygulama
Kendi Hizmetinizi Kullanma
En basit veri kaynağı uygulamaları, kitaplığın DataSourceServlet
sınıfından devralır.
DataSourceServlet
dışındaki bir sınıftan devralmak için veri kaynağını aşağıdaki şekilde uygulayın:
-
DataTableGenerator
arayüzünü uygulayın vegetCapabilities()
ilegenerateDataTable()
değerlerini geçersiz kılın. - Veri kaynağı akışını çalıştırmak için servlet kodunuzdan
DataSourceHelper.executeDataSourceServletFlow()
komutunu çağırın.Bu yöntemde aşağıdaki parametreler alınır:HttpServletRequest
nesnesi.HttpServletResponse
nesnesi.- Yukarıdaki 1. adımda
DataTableGenerator
arayüzünü uygulamanız. - Kısıtlı veya sınırsız erişim modunu belirtmek için kullanılan boole değeri.
Örneğin, servlet'inizi yerleşik kimlik doğrulama sağlayan AuthServlet
adlı başka bir servlet sınıfından devralmak istiyorsanız SimpleServletExample
öğesini, DataSourceServlet
yerine AuthServlet
devralacak şekilde yeniden yazabilirsiniz:
-
DataTableGenerator
arayüzünü uygulayın. -
generateDataTable()
yönteminiDataSourceServlet
uygulamanızdanDataTableGenerator
uygulamanıza taşıyın. -
Capabilities.None
değerini döndürmek içinDataTableGenerator
uygulamanızdagetCapabilities()
değerini geçersiz kılın. - Serlet kodunuzdan (
doGet()
veyadoPost()
)DataSourceHelper.executeDataSourceServletFlow()
yöntemini çağırın veDataTableGenerator
uygulamanızı tamamlayın. Bu yöntem, veri kaynağı sonuçlarının servlet yanıtında oluşturulması da dahil olmak üzere veri kaynağı akışının tüm akışını çalıştırır.
Normalde çerçeve tarafından sağlanan soyut bir sınıfı devraldığınız bir servlet çerçevesi kullanıyorsanız aynı tekniği kullanabilirsiniz.
Örneğin, WebWork kullanıyorsanız ActionSupport
sınıfını devralmak isteyebilirsiniz.
Özellikleri Tanımlama
Veri deponuz büyük miktarda veri içeriyorsa ve veri kaynağınızın verimliliğini artırmak istiyorsanız veri deponuzun sorgulama özelliklerini kullanabilirsiniz. Örneğin, veri deponuzun bir veritabanı olduğunu ve veritabanında çok sayıda sütun bulunduğunu varsayalım. Bir görselleştirme bu sütunlardan yalnızca birkaçını istiyorsa veritabanında bir SELECT
işlemi çalıştırmak, tüm sütunları almaktan ve SELECT
işlemini gerçekleştirmek için kitaplığın sorgulama özelliklerini kullanmaktan daha verimlidir.
SELECT
özelliklerini uygulamak için veritabanında SELECT
işlemi çalıştıracak ve bir veri tablosu döndürecek kod yazarsınız.
Kodunuzun sağladığı sorgulama özelliklerini tanımlamak için Capabilities
numaralandırmasını kullanın. Kullanılabilir seçenekler şunlardır:
NONE
: Varsayılan değer, kodunuz herhangi bir 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 sorgu işlemlerini işler.
NONE
dışında bir özellik uygulamak için Capabilities.getCapabilities()
politikasını geçersiz kılın ve veri deposunu sorgulamak ve bir veri tablosu döndürmek için DataTable.generateDataTable()
yöntemini uygulayın.
Örneklerden üçü, özelliklerin nasıl uygulanacağını gösterir: AdvancedExampleServlet
, AdvancedExampleServlet2
ve SqlDataSourceServlet
.
Bunların tümü example
paketindedir. AdvancedExampleServlet2
, Özellikleri ve Etkinlik Akışını Tanımlama bölümünde açıklanmıştır.
Etkinlik Akışını Özelleştirme
Varsayılan etkinlik akışı DataSourceHelper.executeDataSourceServletFlow
içinde tanımlanmıştır.
Varsayılan akış aşağıdaki gibidir:
- Sorgu parametrelerini çıkarın ve ayrıştırın.
- Yalnızca kısıtlı erişim modu için isteğin servlet ile aynı alandan geldiğini doğrulayın.
- İki sorgu nesnesi oluşturmak için isteği ayrıştırın: Veri kaynağı sorgusu ve tamamlama sorgusu. Veri kaynağı sorgusunu
generateDataTable()
uygulamanıza iletin. 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ştirme tarafından belirtilen biçimde oluşturun ve servlet yanıtını ayarlayın.
Kendi etkinlik akışınızı belirtmek için datasource.DataSourceHelper
içindeki yardımcı işlevleri çağırın. Örnek uygulama için Özellikleri ve Etkinlik Akışını Tanımlama bölümünü inceleyin.
Parametreleri DataTableGenerator.generateDataTable
Hedefine Aktarma
Bir sorgunun veya HttpServletRequest
nesnesinin parçası olmayan verileri DataTableGenerator.generateDataTable
hizmetine iletmek için HttpServletRequest.setAttribute
öğesini kullanabilirsiniz. Örnek kod aşağıda verilmiştir.
Serlet'inizin koduna, HttpServletRequest
içine iletmek istediğiniz nesneyi aşağıdaki gibi yerleştirin:
request.setAttribute("my_object_name", myObject); DataSourceHelper.executeDataSourceServletFlow(request, response, dataTableGenerator);
dataTableGenerator
arayüzü uygulamanızda HttpServletRequest
nesnesindeki nesneyi 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 }
Sservlet olmayan bir Veri Kaynağını Uygulama
Kitaplığı servlet kullanmadan uygularsanı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 bazı DataSourceHelper
işlevleridir.
Bu sınıfları ve işlevleri kullanarak şunları yapabilirsiniz:
- Görselleştirme sorgusunu ayrıştırın.
- Sorguyu bir veri kaynağı sorgusu ve tamamlama sorgusuna bölün.
- Bir veri tablosu oluşturmak için tamamlama sorgusunu çalıştırın.
- Veri tablosunu
HTML
,CSV
veyaJSON
biçiminde görselleştirmeye döndürün.