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.generateDataTableHedefine 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:
-
DataTableGeneratorarayü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:HttpServletRequestnesnesi.HttpServletResponsenesnesi.- Yukarıdaki 1. adımda
DataTableGeneratorarayü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:
-
DataTableGeneratorarayüzünü uygulayın. -
generateDataTable()yönteminiDataSourceServletuygulamanızdanDataTableGeneratoruygulamanıza taşıyın. -
Capabilities.Nonedeğerini döndürmek içinDataTableGeneratoruygulamanızdagetCapabilities()değerini geçersiz kılın. - Serlet kodunuzdan (
doGet()veyadoPost())DataSourceHelper.executeDataSourceServletFlow()yöntemini çağırın veDataTableGeneratoruygulamanı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_PAGINATIONveSELECTiş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,CSVveyaJSONbiçiminde görselleştirmeye döndürün.