Brutos Çerçevesi - Brutos Framework

Brutos Çerçevesi
Geliştirici (ler)UoU Teknolojisi
İlk sürüm17 Mayıs 2009
Kararlı sürüm
2.0-rc3 / 14 Ağustos 2018; 2 yıl önce (2018-08-14)
YazılmışJava
İşletim sistemiÇapraz platform
PlatformJava Sanal Makinesi
TürUygulama çerçevesi
LisansApache Lisansı 2.0
İnternet sitesiwww.brutosframework.com.br

Brutos Uygulama Çerçevesi Java ile yazılmış MVC denetleyicisidir. Yapılandırılabilir eşleme, görüntüleme çözünürlüğü ve dosya yükleme ve indirme desteği ile web geliştirmenin karmaşıklığını azaltmak için tasarlanmıştır. XML, ek açıklamalar ve CoC kullanılarak yapılandırılabilir.

Çerçeve aşağıdaki ilkeleri takip eder:

  • esneklik;
  • gevşek kaplin ve
  • verimlilik.

Sürüm paketi indirmeleri

Brutos ekibi, ZIP biçiminde SourceForge Dosya Yayın Sisteminde barındırılan sürüm paketleri sağlar.

Her sürüm paketi JAR'lar, belgeler, kaynak kodu ve diğer bilgileri içerir.

Brutos sürümlerini aşağıdaki listeden indirebilirsiniz: Sourceforge.ağ/ projeler/ brutos/Dosyalar/ brutos/.

Maven kod deposu yapıları

Bir dizi eser üretilirler. Tümü org.brandao groupId altında.

  • Brutos çekirdekli: Ana yapı, Brutos yerel API'lerini kullanarak uygulamalar oluşturmak gerekiyor.
  • brutos-açıklama: Ek açıklamalar kullanarak uygulama oluşturmaya izin veren isteğe bağlı yapı. Bu eser, brutos-çekirdeğine bağlı.
  • brutos-web: Web uygulamaları oluşturmaya izin veren isteğe bağlı yapı. Bu eser, brutos çekirdeğine bağlı.

Resmi depo www.brutosframework.com.br/uzman/2.

Nasıl yapılandırılır?

Dinleyiciyi web.xml'de kaydedin

<listener>    <listener-class>org.brandao.brutos.web.ContextLoaderListener</listener-class></listener>

Filtreyi web.xml'de kaydedin

<filter>        <filter-name>Brutos Çerçeve Filtresi</filter-name>        <filter-class>org.brandao.brutos.web.http.BrutosRequestFilter</filter-class>    </filter>    <filter-mapping>        <filter-name>Brutos Çerçeve Filtresi</filter-name>        <url-pattern>*</url-pattern>        <dispatcher>İSTEK</dispatcher>        <dispatcher>İLERİ</dispatcher>        <dispatcher>DAHİL ETMEK</dispatcher>        <dispatcher>HATA</dispatcher>    </filter-mapping></filter>

Dikkat: Servlet 3.0 belirtimini destekleyen bir kapsayıcı kullanıyorsanız, ContextLoadListener ve DispatcherServlet veya BrutosRequestFilter kaydı gerekli değildir. Otomatik olarak kaydedilecekler.

Eserleri pom.xml olarak kaydedin

...<dependencies>  <dependency>      <groupId>org.brandao</groupId>      <artifactId>Brutos çekirdekli</artifactId>      <version>2.0-rc3</version>  </dependency>  <dependency>     <groupId>org.brandao</groupId>     <artifactId>brutos-web</artifactId>     <version>2.0-rc3</version>  </dependency>  <dependency>     <groupId>org.brandao</groupId>     <artifactId>brutos-açıklama</artifactId>     <version>2.0-rc3</version>  </dependency></dependencies>...

/ WEB-INF içinde brutos-config.xml dosyasını oluşturun.

<?xml version="1.0" encoding="UTF-8"?>  xmlns: xsi ='http://www.w3.org/2001/XMLSchema-instance'              xmlns ="http://www.brutosframework.com.br/schema/controllers"              xmlns: bağlam ='http://www.brutosframework.com.br/schema/context'              xsi: schemaLocation ='   http://www.brutosframework.com.br/schema/controllers http://www.brutosframework.com.br/schema/controllers/brutos-controllers-1.1.xsd   http://www.brutosframework.com.br/schema/context http://www.brutosframework.com.br/schema/context/brutos-context-1.1.xsd   http://www.brutosframework.com.br/schema/web http://www.brutosframework.com.br/schema/web/brutos-web-1.1.xsd '></controllers>


Örnekler

İnternet servisi

Yöntemler:

URIHTTP yöntemiYöntem
/kullanıcılarALMAKUserWebService.list ()
/kullanıcılarİLETİUserWebService.add (Kullanıcı)
/users/{user.id}KOYMAKUserWebService.update (Kullanıcı)
/ kullanıcılar / {id}SİLUserWebService.delete (Tamsayı)

Denetleyici:

@Kontroller@AcceptRequestType(Medya Türleri.UYGULAMA_JSON)@ResponseType(Medya Türleri.UYGULAMA_JSON)@Yanıt hatası(kodu=HttpStatus.BULUNAMADI, hedef=NotFoundException.sınıf)halka açık sınıf UserWebService {    @ Enjekte    özel UserService userService;    @Aksiyon("/kullanıcılar")    halka açık Liste<Kullanıcı> liste() {        dönüş bu.userService.liste();    }    @Aksiyon("/kullanıcılar")    @Kafadergisi(RequestMethodTypes.İLETİ)    @Evleneceksen(HttpStatus.OLUŞTURULDU)    halka açık geçersiz Ekle(Kullanıcı kullanıcı) {        bu.userService.kayıt etmek(kullanıcı);    }    @Aksiyon("/users/{user.id}")    @Kafadergisi(RequestMethodTypes.KOYMAK)    @Tevfik_uyar(HttpStatus.İÇERİK YOK)    halka açık geçersiz Güncelleme(Kullanıcı kullanıcı) atar NotFoundException {        Eğer (kullanıcı == boş) {            atmak yeni NotFoundException();        }        bu.userService.Güncelleme(kullanıcı);    }    @Aksiyon("/ kullanıcılar / {id}")    @Kafadergisi(RequestMethodTypes.SİL)    @Tevfik_uyar(HttpStatus.İÇERİK YOK)    halka açık geçersiz sil(Tamsayı İD) atar NotFoundException {        Kullanıcı e = bu.userService.Kaldır(İD);        Eğer (e == boş) {            atmak yeni NotFoundException();        }    }}

İstisna İşleyici

Denetleyici Düzeyi

@Yanıt hatası(değer=HttpStatus.FİKİR AYRILIĞI,                sebep="Veri bütünlüğü ihlali", hedef=DataIntegrityViolationException.sınıf)halka açık sınıf ExampleController {     @Aksiyon("/aksiyon")   halka açık geçersiz aksiyon() atar DataIntegrityViolationException{       ...   }}

Eylem Düzeyi

halka açık sınıf ExampleController{     @Aksiyon("/aksiyon")   @Yanıt hatası(değer=HttpStatus.FİKİR AYRILIĞI,             sebep="Veri bütünlüğü ihlali", hedef=DataIntegrityViolationException.sınıf)   halka açık geçersiz aksiyon() atar DataIntegrityViolationException{       ...   }}

Yöntem

halka açık sınıf ExampleController{     @Aksiyon("/aksiyon")   halka açık geçersiz aksiyon() atar MyBadDataException {       ...   }   @Yanıt hatası(MyBadDataException.sınıf)   halka açık WebActionResult myBadDataException(Atılabilir istisna, WebActionResult sonuç) {       sonuç           .setResponseStatus(HttpStatus.GEÇERSİZ İSTEK)           .setView("errorView")           .Ekle("istisna", istisna);       dönüş sonuç;   }}

Eylem Sonucu Oluştur

Kontrolör

halka açık sınıf IndexController {     halka açık WebResultAction action1Action(WebResultAction sonuç) {      sonuç.addHeader("İçerik türü", "text / html; charset = utf-8")            .setContentType(Dize.sınıf)            .setContent("  test ");      dönüş sonuç;   }    halka açık WebResultAction action2Action (WebResultAction sonuç) {        sonuç.addHeader("İçerik türü", "text / html; charset = utf-8")            .setView("benim görüşüm")            .Ekle("değer1", BigDecimal.BİR);        dönüş sonuç;    }}

Polimorfik Haritalama

Yöntemler:

URIHttp Yöntemiyöntem
/EkleİLETİExampleController.add (Meyve)

Kontrolör

halka açık sınıf ExampleController{    @Aksiyon("/Ekle")    @Kafadergisi(RequestMethodTypes.İLETİ)    halka açık geçersiz Ekle(        @Hiç(            metaBean=@Temel(fasulye="tür")            metaValues={                @MetaValue(isim="elma", hedef=elma.sınıf),                @MetaValue(isim="turuncu", hedef=turuncu.sınıf)            }        )        Meyve meyve) {            ...    }}

Fasulye

halka açık Öz sınıf Meyve {    ...}
halka açık sınıf elma genişler Meyve {   ...}
halka açık sınıf turuncu genişler Meyve {   ...}

Soyut eylem

URI eşlemesi:

Denetleyici / EylemURIGörünüm
ExampleController/ yol/WEB-INF/views/view.jsp
ExampleController/ yol //WEB-INF/views/view.jsp

Kontrolör

@Kontroller("/ yol", Varsayılan aksiyon="/")@Aksiyon(değer="/", görünüm=@Görünüm("görünüm"))halka açık sınıf ExampleController{}

URI şablonu kullanma

URI eşlemesi:

Denetleyici / EylemURIGörünüm
ExampleController/ yol / {kullanıcı}/WEB-INF/views/index/index.jsp
ExampleController.getUser (Dize)/ yol / {userId} / showUser/WEB-INF/views/index/getuser/index.jsp

Kontrolör

@Kontroller("/ yol / {kullanıcı kimliği}")halka açık sınıf ExampleController{    @Aksiyon("/ showUser")    halka açık Kullanıcı getUser(Dize Kullanıcı kimliği) {        ...    }}

Dosya yükleme ve indirme

@Kontroller("/Dosyalar")halka açık sınıf ExampleController {      @Aksiyon("/")    @Kafadergisi(RequestMethodTypes.İLETİ)    halka açık geçersiz uploadAction(Dosya dosya) {         // parametre dosyası geçici bir dosyadır         ...    }    @Aksiyon("/{dosya adı:.*}")    @Kafadergisi(RequestMethodTypes.ALMAK)    halka açık Dosya downloadAction(Dize dosya adı) {        Dosya dosya = ...;        dönüş dosya;    }}

Form ve Oturum

halka açık sınıf PersonController{    @Aksiyon("/kayıt etmek")    halka açık geçersiz saveAction(        @Temel(dürbün="oturum, toplantı, celse") Kullanıcı loggerdUser, @Temel(fasulye="kişi") Kişi kişi) {        ...    }}

Ayrıca bakınız

Dış bağlantılar

Kitap