Brutos Framework - Brutos Framework

Brutos Framework
Tuzuvchi (lar)UoU texnologiyasi
Dastlabki chiqarilish2009 yil 17-may
Barqaror chiqish
2.0-rc3 / 14-avgust, 2018-yil; 2 yil oldin (2018-08-14)
YozilganJava
Operatsion tizimO'zaro faoliyat platforma
PlatformaJava virtual mashinasi
TuriDastur doirasi
LitsenziyaApache litsenziyasi 2.0
Veb-saytwww.brutosframework.com.br

The Brutos dastur doirasi Java-da yozilgan MVC tekshiruvi. Konfiguratsiya qilinadigan xaritalash, ko'rish o'lchamlari, shuningdek fayllarni yuklash va yuklab olish uchun qo'llab-quvvatlash bilan veb-ishlab chiqishning murakkabligini kamaytirish uchun mo'ljallangan. XML, izohlar va CoC yordamida sozlanishi mumkin.

Ushbu ramka quyidagi printsiplarga amal qiladi:

  • moslashuvchanlik;
  • bo'sh mufta va
  • hosildorlik.

Paket yuklamalarini chiqaring

Brutos jamoasi SourceForge File Release System-da joylashgan pochta paketlarini taqdim etadi.

Har bir nashr to'plamida JAR, hujjatlar, manba kodlari va boshqa ma'lumotlar mavjud.

Brutos nashrlarini quyidagi ro'yxatidan yuklab olishingiz mumkin sourceforge.net/ loyihalar/ brutolar/fayllar/ brutolar/.

Maven omborxonasi

Ularda bir qator asarlar ishlab chiqarilgan. Hammasi org.brandao groupId ostida.

  • brutos-yadro: Asosiy artefakt, Brutos native API-laridan foydalangan holda dasturlarni yaratish uchun kerak.
  • brutos-izoh: Izohlar yordamida dasturlarni yaratishga imkon beruvchi ixtiyoriy artefakt. Ushbu artefakt brutos-yadroga bog'liq.
  • brutos-veb: Veb-ilovalarni yaratishga imkon beruvchi ixtiyoriy artefakt. Ushbu artefakt brutos-yadroga bog'liq.

Rasmiy ombor www.brutosframework.com.br/ maven/2.

Qanday qilib sozlash kerak?

Tinglovchini web.xml-da ro'yxatdan o'tkazing

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

Filtrni web.xml-da ro'yxatdan o'tkazing

<filter>        <filter-name>Brutos Framework Filtri</filter-name>        <filter-class>org.brandao.brutos.web.http.BrutosRequestFilter</filter-class>    </filter>    <filter-mapping>        <filter-name>Brutos Framework Filtri</filter-name>        <url-pattern>*</url-pattern>        <dispatcher>TALAB</dispatcher>        <dispatcher>Oldinga</dispatcher>        <dispatcher>KIRISH</dispatcher>        <dispatcher>XATO</dispatcher>    </filter-mapping></filter>

Diqqat: Agar siz Servlet 3.0 spetsifikatsiyasini qo'llab-quvvatlaydigan konteynerdan foydalanayotgan bo'lsangiz, ContextLoadListener va DispatcherServlet yoki BrutosRequestFilter-ni ro'yxatdan o'tkazish shart emas. Ular avtomatik ravishda ro'yxatdan o'tkaziladi.

Artefaktlarni pom.xml-da ro'yxatdan o'tkazing

...<dependencies>  <dependency>      <groupId>org.brandao</groupId>      <artifactId>brutos-yadro</artifactId>      <version>2.0-rc3</version>  </dependency>  <dependency>     <groupId>org.brandao</groupId>     <artifactId>brutos-veb</artifactId>     <version>2.0-rc3</version>  </dependency>  <dependency>     <groupId>org.brandao</groupId>     <artifactId>brutos-izoh</artifactId>     <version>2.0-rc3</version>  </dependency></dependencies>...

/ WEB-INF da brutos-config.xml faylini yarating.

<?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: kontekst ='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>


Misollar

Veb-xizmat

Usullari:

URIHTTP usuliUsul
/ foydalanuvchilarOLINGUserWebService.list ()
/ foydalanuvchilarPOSTUserWebService.add (foydalanuvchi)
/users/{user.id}QO'YINGUserWebService.update (foydalanuvchi)
/ foydalanuvchilar / {id}O'chirishUserWebService.delete (Integer)

Nazoratchi:

@Kontroller@AcceptRequestType(MediaTiplar.APPLICATION_JSON)@ResponseType(MediaTiplar.APPLICATION_JSON)@ResponseError(kod=HttpStatus.TOPILMADI, nishon=NotFoundException.sinf)jamoat sinf UserWebService {    @Inject    xususiy UserService userService;    @Harakat("/ foydalanuvchilar")    jamoat Ro'yxat<Foydalanuvchi> ro'yxat() {        qaytish bu.userService.ro'yxat();    }    @Harakat("/ foydalanuvchilar")    @RequestMethod(RequestMethodTypes.POST)    @ResponseStatus(HttpStatus.YARATILGAN)    jamoat bekor qo'shish(Foydalanuvchi foydalanuvchi) {        bu.userService.saqlash(foydalanuvchi);    }    @Harakat("/users/{user.id}")    @RequestMethod(RequestMethodTypes.QO'YING)    @ResponseStatus(HttpStatus.NO_CONTENT)    jamoat bekor yangilash(Foydalanuvchi foydalanuvchi) uloqtiradi NotFoundException {        agar (foydalanuvchi == bekor) {            otish yangi NotFoundException();        }        bu.userService.yangilash(foydalanuvchi);    }    @Harakat("/ users / {id}")    @RequestMethod(RequestMethodTypes.O'chirish)    @ResponseStatus(HttpStatus.NO_CONTENT)    jamoat bekor o'chirish(Butun son id) uloqtiradi NotFoundException {        Foydalanuvchi e = bu.userService.olib tashlash(id);        agar (e == bekor) {            otish yangi NotFoundException();        }    }}

Istisno ishlovchisi

Nazoratchi darajasi

@ResponseError(qiymat=HttpStatus.Mojaro,                sabab="Ma'lumotlarning yaxlitligini buzish", nishon=DataIntegrityViolationException.sinf)jamoat sinf ExampleController {     @Harakat("/ action")   jamoat bekor harakat() uloqtiradi DataIntegrityViolationException{       ...   }}

Harakat darajasi

jamoat sinf ExampleController{     @Harakat("/ action")   @ResponseError(qiymat=HttpStatus.Mojaro,             sabab="Ma'lumotlarning yaxlitligini buzish", nishon=DataIntegrityViolationException.sinf)   jamoat bekor harakat() uloqtiradi DataIntegrityViolationException{       ...   }}

Usul

jamoat sinf ExampleController{     @Harakat("/ action")   jamoat bekor harakat() uloqtiradi MyBadDataException {       ...   }   @ResponseError(MyBadDataException.sinf)   jamoat WebActionResult myBadDataException(Tashlanadigan istisno, WebActionResult natija) {       natija           .setResponseStatus(HttpStatus.NOTO'G'RI SO'ROV)           .setView("errorView")           .qo'shish("istisno", istisno);       qaytish natija;   }}

Natija yaratish

Nazoratchi

jamoat sinf IndexController {     jamoat WebResultAction action1Action(WebResultAction natija) {      natija.addHeader("Tarkib turi", "text / html; charset = utf-8")            .setContentType(Ip.sinf)            .setContent("  test ");      qaytish natija;   }    jamoat WebResultAction action2Action (WebResultAction natija) {        natija.addHeader("Tarkib turi", "text / html; charset = utf-8")            .setView("myView")            .qo'shish("qiymat1", BigDecimal.BIR);        qaytish natija;    }}

Polimorfik xaritalash

Usullari:

URIHTTP usuliusul
/ qo'shishPOSTExampleController.add (meva)

Nazoratchi

jamoat sinf ExampleController{    @Harakat("/ qo'shish")    @RequestMethod(RequestMethodTypes.POST)    jamoat bekor qo'shish(        @Hamma(            metaBean=@Asosiy(loviya="turi")            metaQadriyatlar={                @MetaValue(ism="olma", nishon=olma.sinf),                @MetaValue(ism="apelsin", nishon=apelsin.sinf)            }        )        Meva meva) {            ...    }}

Dukkaklilar

jamoat mavhum sinf Meva {    ...}
jamoat sinf olma uzaytiradi Meva {   ...}
jamoat sinf apelsin uzaytiradi Meva {   ...}

Mavhum harakat

URI xaritasi:

Nazoratchi / harakatURIKo'rinish
ExampleController/ yo'l/WEB-INF/views/view.jsp
ExampleController/ path //WEB-INF/views/view.jsp

Nazoratchi

@Kontroller("/ path", defaultAction="/")@Harakat(qiymat="/", ko'rinish=@Ko'rinish("ko'rinish"))jamoat sinf ExampleController{}

URI shablonidan foydalanish

URI xaritasi:

Nazoratchi / harakatURIKo'rinish
ExampleController/ path / {user}/WEB-INF/views/index/index.jsp
ExampleController.getUser (String)/ path / {userId} / showUser/WEB-INF/views/index/getuser/index.jsp

Nazoratchi

@Kontroller("/ path / {userId}")jamoat sinf ExampleController{    @Harakat("/ showUser")    jamoat Foydalanuvchi getUser(Ip Foydalanuvchi IDsi) {        ...    }}

Faylni yuklash va yuklab olish

@Kontroller("/fayllar")jamoat sinf ExampleController {      @Harakat("/")    @RequestMethod(RequestMethodTypes.POST)    jamoat bekor uploadAction(Fayl fayl) {         // parametr fayli vaqtinchalik fayl         ...    }    @Harakat("/{Fayl nomi:.*}")    @RequestMethod(RequestMethodTypes.OLING)    jamoat Fayl downloadAction(Ip Fayl nomi) {        Fayl fayl = ...;        qaytish fayl;    }}

Shakl va sessiya

jamoat sinf PersonController{    @Harakat("/ saqlash")    jamoat bekor saveAction(        @Asosiy(qamrov doirasi="sessiya") Foydalanuvchi loggerdUser, @Asosiy(loviya="odam") Shaxs shaxs) {        ...    }}

Shuningdek qarang

Tashqi havolalar

Kitob