Jspx-bay - Jspx-bay

jspx
Jspx.png
Тұрақты шығарылым
2.1 / 23.12.2015 ж (2015-12-23)
ЖазылғанJava
Операциялық жүйеКросс-платформа
ТүріВеб-бағдарламаның құрылымы
ЛицензияApache лицензиясы 2.0 WTFPL
WTFPL белгісі
Веб-сайтhttp://jspx-bay.sourceforge.net http://jspx.sourceforge.net

jspx-bay, әдетте деп аталады jspx, бұл ашық бастапқы коды бар таза Java веб-торабы RAD жақтау. Jspx-ті ұқсас атауды қолданатын басқа технологиялармен шатастыруға болмайды Oracle Application Framework және XML JSP.

Jspx кеңейтіледі Java EE сервлеттер қамтамасыз ету Объектіге бағытталған бағдарламалау HTML декларативті кодының моделі. Jspx-пен салыстыруға болады JSF веб-фреймворк ретінде. Көптеген басқа Java веб-құрылымдары бар Apache Wicket осындай идеяларды жүзеге асыратын.

Тарих

Jspx icon.gif

Jspx-ті әзірлеу 2008 жылы ақпанда Java-да бай интерактивті веб-қосымшаларды дамытудың жеңіл әдісін ұсыну мақсатында басталды. 2008 жылдың шілдесінде jspx Java қауымдастығына таныстырылды java.net. Бастапқыда jspx өте шектеулі мүмкіндіктерге ие болды, соның ішінде қолдау веб-форма тек негізделген даму.

2008 жылдың желтоқсанында жоба көшті SourceForge,[1] содан бері қайда орналастырылды.

Аты

JSPx-тің HTML-ге Java кодын тікелей енгізбейтіндігімен JSP-ден айтарлықтай өзгешелігіне қарамастан JSP технологиясының келесі қадамын көрсету үшін атау таңдалды. Жұрнақ X ұқсас ASP.NET кеңейтімі бар aspx парақтары. Sourceforge-дегі jspx фреймворкінің ресми атауы - jspx-bay. Жұрнақ шығанағы жақтауды jspx деп аталатын SourceForge жобасының алдыңғы белсенді емесінен ерекшелендірді.[2]

2009 жылдың 16 қарашасында SourceForge-дегі jspx жобасы тазартылды және ол jspx-bay сияқты мазмұнмен қамтамасыз етілді.[3]

Негіздемелік мақсат

Jspx қолданушыға ыңғайлы, интерфейстерді ұсынуға бағытталған. Деген идеяға сүйене отырып веб-дамыту негізінен пайдаланушының енгізуі негізінде ұсынылатын HTML-ді баптауға арналған, jspx объектіге бағытталған ұсынады көру қабаты HTML интерфейсі. Jspx азаматтығы жоқ протокол арқылы күйдің қолданушы интерфейсін енгізу құралын ұсынады (HTTP ). JSF ұқсас функционалдылықты қамтамасыз етеді, бірақ әзірлеушілерден тегтердің жаңа жиынтығын үйренуді талап етеді.

Дизайн мақсаттары

Jsxp arch.png

Jspx салыстырмалы түрде жаңа және қолда бар жақтаулардың көптеген ерекшеліктері мен артықшылықтарын біріктіреді, сонымен бірге кемшіліктер деп санауға болатын нәрсені жояды. Jspx келесі жобалау мақсаттарын көздеді:[4]

  1. Іскерлік жағдайға негізделген шеңбер
    Жою қазандық коды және міндеттер.
  2. Нөлдік конфигурация
    JSF-тен айырмашылығы, кез-келген сыртқы конфигурацияны қажет етпейді.
  3. Декларативті және Императивті код
    HTML-де жарияланған атрибуттарға объектіге бағытталған API толық қол жетімді.
  4. Қосымша және әдепкі іске асыру
    Әр мүмкіндіктің мәнін көрсетудің қажеті жоқ, өйткені оларда әдепкі мәндер бар.
  5. Басқа құрылымдармен интеграциялау
    Бар jsp файлдарын jspx HTML парақтарына импорттау.
  6. Портативті негіз
    Қосымша күш-жігер жұмсамай, кез келген қолданбалы серверде іске қосыңыз.

Басқа жақтаулармен салыстыру

ASP.NET

Jspx-те ASP.NET-пен келесі ұқсастықтар бар:

  1. Веб-форматқа негізделген құрылым.
  2. Беттің өмірлік циклі және оқиғалар.
  3. Мастер / мазмұн беттері арқылы бет үлгілері.

Jspx ASP.NET-тен келесі жолдармен ерекшеленеді:

  1. Jspx html файлы үшін белгілі бір кеңейтуді қажет етпейді (яғни aspx).
  2. Jspx стандартты HTML тегтерін қолданады.
  3. Jspx көптеген қосымша мүмкіндіктер ұсынады (мысалы, қарау-контроллерді байланыстыруға арналған Jspx бұршақтары).

JSF

Jspx келесі жолдармен JSF-ге ұқсас:

  1. HTML-ге объектілік интерфейсті ұсынудың дәл осы мақсаты.
  2. Бұршақты байланыстыру.
  3. Бет сипаттарымен байланыстыру.

Jspx JSF-тен келесі жолдармен ерекшеленеді:

  1. Стандартты HTML тегтерін қолданады.
  2. Кез-келген сыртқы конфигурацияға сенбейді.
  3. Парақтың өмірлік циклін толық бақылау.

Jspx-ті көптеген басқа құрылымдармен салыстыруға болады, мысалы Apache Wicket, бірақ jspx HTML тегтері мен атрибуттарын қосымша XML ат кеңістігінсіз қолданады.

Jspx көмегімен веб-дамыту

Jspx веб-форматқа негізделген құрылым болғандықтан, әрбір іскери жағдай үшін бір даму бөлімі бар. Jspx қосымшасындағы даму бөлімі екі бөлімнен тұрады:[5]

  1. Декларативті HTML коды (myPage.htm)
  2. Императивті Java коды (MyPageController.java)

Сонымен қатар, web.xml файл трафикті jspx негізгі сервлет контроллеріне бағыттауы керек (RequestHandler).

Мысал

A Сәлем Әлем мысалды әр түрлі тәсілдермен жүзеге асыруға болады. Келесі мысал олардың бірін көрсетеді.

web.xml
<?xml version="#0" encoding="UTF-8"?><веб-қосымша xmlns: xsi =«http: //www.w#org/2001/XMLSchema-instance» xmlns =«http://java.sun.com/xml/ns/javaee» xmlns: web =«http://java.sun.com/xml/ns/javaee/web-app_2_#xsd» xsi: schemaLocation =«http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_#xsd» id =«WebApp_ID» нұсқа ="#5">  <display-name>jspx-демо</display-name>	<servlet>	    <servlet-name>JspxHandler</servlet-name>	    <servlet-class>eg.java.net.web.jspx.engine.RequestHandler</servlet-class>        </servlet>	<servlet>	    <servlet-name>ResourceHandler</servlet-name>	    <servlet-class>eg.java.net.web.jspx.engine.ResourceHandler</servlet-class>	</servlet>	<servlet-mapping>	    <servlet-name>JspxHandler</servlet-name>	    <url-pattern>* .html</url-pattern>	</servlet-mapping>	<servlet-mapping>	    <servlet-name>ResourceHandler</servlet-name>	    <url-pattern>/ jspxEmbededResources / *</url-pattern>	</servlet-mapping></web-app>
HelloWorld.html
<бет контроллер =«Сәлем Әлем»>    <html>	 <body>    	     <жапсырма id =«хабар» />	 </body>    </html></page>
HelloWorld.java
импорт eg.java.net.web.jspx.ui.controls.html.elements.Label;қоғамдық сынып Сәлем Әлем ұзарады Бет{	Заттаңба хабар;	қорғалған жарамсыз pageLoaded()	{		егер (!isPostBack)			хабар.setValue(Сәлеметсіз бе Jspx Әлем);	}	қоғамдық жарамсыз setMessage(Заттаңба хабар)	{		бұл.хабар = хабар;	}	қоғамдық Заттаңба getMessage()	{		қайту хабар;	}}

Жоғарыдағы мысалға назар аударыңыз:

  1. Қажетті жалғыз конфигурация - jspx екі сервлетін тіркеу; бірі парақтардағы қалыпты сұраныстар үшін, екіншісі ендірілген ресурстар үшін (мысалы, JavaScript және суреттер).
  2. HTML түбірлік элементінің ішінде болуы керек және XHTML-ді жақсы құрауы керек.
  3. Java коды түбірлік Бет контроллерін jspx бетінен кеңейтуі керек.
  4. Бетте ASP.NET сияқты өмірлік цикл кезеңдері бар, ұқсас атаулар бар pageLoaded
  5. HTML парағы Java арқылы контроллер класына бағытталуы керек контроллер элементінің төлсипаты.
  6. Java контроллерінде HTML басқару элементімен өзара әрекеттесу қажет болған жағдайда, сол типтегі басқару элементі және орнатушы бар java қасиеті ретінде жариялануы керек, ал қасиеттің аты атрибут идентификаторының мәнімен бірдей болуы керек HTML басқару элементінде.

№ 6 ескертпе үшін рамка қолдануды қарастырады Тәуелділікке қарсы инъекция мұндай шектеулерді және HTML мен java кодтарының кез-келген байланысын жою.

Тәуелділікке қарсы инъекция

Jspx build 1.0.9 бет контроллерінде HTML басқару элементтерін Java басқару элементтерімен байланыстырудың жаңа әдісін ұсынды. Жоғарыда келтірілген мысал әр басқару үшін гетер мен сеттер қосу қажеттілігін көрсетті. Бұл әдістеме келесі минусты жасады:

  1. HTML басқаруды Java бақылауымен байланыстыру үшін жасаушыға көптеген кодтар енгізу керек.
  2. Бет контроллері маңызды емес кодқа толы.
  3. HTML басқару элементі мен Java бақылауы арасындағы байланыс; өйткені сілтеме Java басқару аты HTML басқару элементіндегі атрибут идентификаторының мәнімен бірдей болған жағдайда ғана жасалады.
  4. HTML-дегі кез-келген өзгеріс үшін Java контроллері парағындағы алушы мен сетерді өзгерту қажет.

Барлық осы себептерге байланысты 1.0.9 Java нысандарын HTML-мен байланыстыру үшін Java Аннотациясын қолданады. Келесі мысал жоғарыда келтірілгенге балама болып табылады.

импорт eg.java.net.web.jspx.ui.controls.html.elements.Label;қоғамдық сынып Сәлем Әлем ұзарады Бет{	@JspxWebControl(аты=«хабар»)	Заттаңба msg;	қорғалған жарамсыз pageLoaded()	{		егер (!isPostBack)			msg.setValue(Сәлеметсіз бе Jspx Әлем);	}}

Белгіленгендей, кодтың мөлшері өте кішірейтілген. Сондай-ақ, @JspxWebControl аннотациясы атрибутты қолданатыны атап өтілді аты бұл міндетті емес атрибут. Бұл атрибуттың мәні HTML басқару элементінің идентификаторымен бірдей болуы керек. Бұл әдіс HTML мен Java кодтарының байланысын жояды.[6]

Кейбіреулер бұл жаңа мүмкіндікті жақтауға елеусіз қосымша деп санайды. Олар HTML формасын Java Model Object-пен байланыстыру үшін JspxBean қолданады және HTML басқару элементтерімен байланыстырылған сервер жағындағы басқару элементтерін жарияламайды.

JspxBean 1.0.9-да жетілдірілді, әр JspxBean үшін getter және setter құрудың қажеті жоқ. Getter және setter қосуды ұмытып кету - бұл көбінесе қателік болды, бұл әзірлеушінің HTML-мен байланысын жоғалтады. Тәуелділік инъекциясы JspxBeans инъекциясы үшін гетерлер мен сеттерлерсіз қажет.

Өрнек тіліне қолдау көрсету

Jspx HTML парағында Java кодына рұқсат бермейді. Алайда, контроллерден мәліметтер енгізу қажеттілігін қанағаттандыру үшін; Jspx толық қолдайды Өрнек тілі.

EL-дегі кейбір мысалдар:

  • $ {this.customerName}. Кілт сөз бұл бет контроллерінің ағымдық сәтіне сілтеме жасайды. тұтынушы аты - бұл контроллер класындағы Java қасиетінің атауы. Сипатта келесідей алу әдісі болуы керек
    қоғамдық Жол getCustomerName()
  • $ {request.parameters.id}. Кілт сөз сұрау HTTP сервлет сұрауына сілтеме жасайды. параметрлері Сұраныс параметрлеріне сілтеме жасайды. идентификатор параметр атауына сілтеме жасайды. HTTP Servlet Request атрибуттарына келесідей қол жеткізуге болады $ {request.attributes.id}.
  • $ {session.id}.Кілт сөз сессия HTTP сервлет сеансындағы параметрлерге қол жеткізу үшін қолданылады.
  • $ {var.age}. DataTable және List Table сияқты деректер элементтерін басқару элементтерінде деректер бағанын тапсырыс бойынша көрсетуді ItemTemplate көмегімен жасауға болады. Деректер қорының ағымдағы жазбасына қол жеткізу үшін DataTable-да атымен бірге айнымалыны жариялау керек var Мысалға. Содан кейін ішіндегі мәндерді ItemTemplate ішінде var EL-де көрсетілгендей айнымалыға қол жеткізуге болады.
  • $ {size (this.username)} JEXL шақырылатын статикалық әдістерді ұсынады.
  • $ {user.age> 21? 'Сіз бәрі жақсы': 'Сіз кәмелетке толмағансыз'} пайдаланушы Бет контроллерінде анықталған jspx-бұршақ болуы керек және өрнек жас мәнін тексереді (пайдаланушы бұршағының мүшелік қасиеті).

Шектеулер мен кемшіліктер

Кез-келген құрылым әртүрлі критерийлерге сәйкес бағаланады, одан әрі jspx жақсартуды қажет етеді.

  1. IDE қолдау. Jspx кез-келген IDE көмегімен жасалуы мүмкін, бірақ jspx-ті тікелей қолдау жоқ. Әзірлеуші ​​оқиғаны өңдеуді қолмен жазуы керек.
  2. Құжаттама. Оқулықтар мен мысалдар ресми сайтта орналасқан. Веб-сайтта құжаттама үшін бөлім бар, бірақ жеткіліксіз.
  3. EL қолдау. Jspx 2.0 нұсқасына дейін EL тілін толығымен қолдамады, JEXL 2.0 нұсқасынан бастап EL-ге толық қолдау көрсету үшін қолданылады.

Ерекшеліктер

Jspx бірнеше қуатты функцияларды ұсынады:

  1. AjaxPanel арқылы Ajax-қа жергілікті қолдау[7][8][9]
  2. DataTable және ListTable сияқты деректерді басқару.
  3. -Мен интеграциялау JAAS және қосымша мүмкіндіктер қосу.[10]
  4. JspxBean арқылы деректерді байланыстыру.
  5. Мастер / мазмұн беттері арқылы HTML шаблоны.
  6. Клиент / Сервер жағын тексеру.[11]
  7. Ішіне JQuery, JQuery UI, Bootstrap стилі және басқа көптеген ашық кітапханалар ендірілген.
  8. EL өрнектерін қолдау үшін ендірілген JEXL.

Сыртқы құмыраға тәуелділік

Jspx сыртқы құмыраға тәуелділікті азайтуға тырысады, бірақ кейбір маңызды банктер бар:[12]

  1. commons-fileupload-1.2.1.jar (файлды жүктеуді пайдалану кезінде)
  2. slf4j-api-1.7.2.jar (журналға міндетті)
  3. poi-3.1-FINAL-20080629.jar (Export to Excel бағдарламасын пайдаланған кезде)
  4. servlet-api.jar (тек компиляция кезінде)
  5. commons-io-1.3.2.jar (файлды жүктеуді пайдалану кезінде)
  6. commons-jexl-2.1.1.jar
  7. jcl-over-slf4j-1.7.5.jar slf4j Commons журналына арналған көпір (оны JEXL қолданады)

JDC 2010

Jspx өзінің алғашқы көпшілікке Java Developer Conference 2010 (JDC) конференциясында қатысқан болатын. Java Developer конференциясы - бұл ең үлкен Java іс-шарасы MENA, EGJUG ұйымдастырды.[13]

Jspx демо-жобалары

Jspx1.1.0.demoapp.png

Jspx тарату бумасында екілік банка мен бастапқы кодтан басқа бірнеше файлдар бар. Таратылымға арналған алғашқы шығарылымнан бастап, екілік соғыс файлы және қыстырылған бастапқы код ретінде демо-жоба енгізілді. Бұл жоба Jspx-тің әртүрлі мүмкіндіктерін көрсететін қарапайым дискретті парақтар болды. Бұл парақтарды орайтын қарапайым бизнес-модуль болған жоқ, сонымен бірге GUI-нің дизайны нашар болды. Jspx build 1.1.0 жаңа демо-жобаны қосады, ол jspx-ті оңай қолдануды жеңілдетеді, бұл ДБ-мен өзара іс-қимылдың қарапайым ісін дамытуға мүмкіндік береді. Демо қолдануда MySQL. SQL сценарий файлы бөлек жүктеледі.

Кейбір jspx мүмкіндіктері Master / Content беттері, Ajax, DataTable, Validators және веб-формалар сияқты қолданылады.

Jspx 1.2 көмегімен екі жаңа демо-жоба қосылды. Бір дербес демо jspx-demo3 болды, яғни jspx-ті активтерді қадағалаудың қарапайым қосымшасын құру үшін пайдалану. Басқа демо онлайн jspx тірі демо болды.

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ http://jspx-bay.sourceforge.net
  2. ^ «Jspx Bay Name».
  3. ^ «SourceForge-дегі Jspx атауы».
  4. ^ «Jspx дизайн аспектілері».
  5. ^ «Jspx Hello Web».
  6. ^ «jspx тәуелділік инъекциясы».
  7. ^ «Jspx Ajax».
  8. ^ «Ajax in Jspx».
  9. ^ «Jspx AjaxPanel шектеуі».
  10. ^ «JAAS веб-бақылау деңгейінде»..
  11. ^ «jspx мүмкіндіктері».
  12. ^ «jspx құмыраға тәуелділігі».
  13. ^ «jspx in JDC 2010». Архивтелген түпнұсқа 2010-02-10.

Сыртқы сілтемелер