давайце вернемся – Класы Struts Action

Struts Action Classes

Класы Struts Action

Увядзенне

Apache Struts з'яўляецца адкрытым зыходным кодам выкарыстоўваецца для распрацоўкі JSP або сэрвлета аснове вэб-прыкладанні. Распоркі пашырыць сэрвлета Java API, і на аснове кантролера прадстаўлення мадэлі або MVC шаблон дызайну. Дзеянне класа ў рамках Struts вызначае бізнес-логіку. Клас дзеянняў апрацоўвае запыт кліента і падрыхтоўвае адказ. Ён таксама вырашае, дзе адказ павінен быць накіраваны. У асноўным клас дзеянняў атрымлівае дадзеныя ад узроўню прадстаўлення дадзеных і перадае дадзеныя ў адпаведны бізнес-пласт. Ён таксама апрацоўвае дадзеныя, якая зыходзіць ад бізнес-пласта і накіроўвае іх назад у пласт прадстаўлення. In short, клас дзеянне апісваецца як –

  • Клас Дзеянне павінна распаўсюджвацца [код] apache.struts.action.Action [/код] клас.
  • калі перавызначыць [код] выконваць [/код] спосаб згодна [код] дзеянне [/код] клас.
  • Дзеянне Servlet выбірае клас дзеянняў для запыту якое ўваходзіць HTTP, пэўнай пры адлюстраванні дзеянні тэга ў [код] распоркі config.xml [/код] файл.
  • Гэтыя класы выкарыстоўваюцца для выкліку класаў на ўзроўні бізнес-узроўні або доступу да дадзеных, каб атрымаць дадзеныя з фасолі і захоўваць апрацаваныя дадзеныя і вяртае вынік ці памылку ў залежнасці ад сітуацыі.
  • Гэтыя класы Шматструменнае. Такім чынам, распрацоўшчык павінен быць асцярожным пры звароце з зменнай дзеянні, паколькі яны не з'яўляюцца струменева.

Тыпы класаў дзеянняў

Мы маем наступныя тыпы класаў дзеянняў у стойках –

  • дзеянне – Базавы клас дзеянняў, у якіх мы рэалізуем нашу бізнес-логіку.
  • уключыце Action – Аналагічна, як уключыць дырэктыву старонкі ў JSP.
  • форвард Дзеянне – Выкарыстоўваецца ў выпадку, калі трэба накіраваць запыт ад аднаго да іншага JSP. Калі мы непасрэдна накіраваць запыт ад аднаго JSP ён парушае архітэктуру MVC. Такім чынам, клас дзеянне выкарыстоўваецца, каб зрабіць гэтую працу.
  • адпраўка Дзеянне – Апрацоўка некалькіх аперацый у некалькіх метадаў. Лепш мець адзін метад на адну аперацыю замест аб'яднання ўсёй бізнес-логікі ў адным выканання метаду класа дзеянняў.
  • Паглядзіце дыспетчарскі Дзеянне – Тое ж, што адпраўка дзеянні, але рэкамендуецца не выкарыстоўваць.
  • перамыкач Дзеянне – выкарыстоўваецца для пераключэння паміж рознымі модулямі ва ўжыванні распорак.

Найбольш часта выкарыстоўваюцца класы дзеянняў з'яўляюцца –

  • дзеянне
  • адпраўка Дзеянне

групавы пазоў

Гэта клас дзеянні базы ў стойках. Пры гэтым распрацоўшчык павінен перавызначыць метад выканання ў адпаведнасці з -

[код]

package com.home.upload.action ;

імпартаваць java.io.IOException ;

імпартаваць java.util.HashMap ;

імпартаваць java.util.Map ;

імпартаваць javax.servlet.ServletException ;

імпартаваць javax.servlet.http.HttpServletRequest ;

імпартаваць javax.servlet.http.HttpServletResponse ;

імпартаваць org.apache.log4j.Logger ;

імпартаваць org.apache.struts.action.Action ;

імпартаваць org.apache.struts.action.ActionForm ;

імпартаваць org.apache.struts.action.ActionForward ;

імпартаваць org.apache.struts.action.ActionMapping ;

імпартаваць org.apache.struts.upload.FormFile ;

імпартаваць com.home.upload.action.forms.UploadForm ;

імпартаваць com.home.upload.service.FileUploadService ;

імпартаваць com.home.upload.service.impl.FileUploadServiceImpl ;

імпартаваць com.home.upload.util.UploadConstants ;

/**

* @author TechAlpine

*/

грамадскасць клас FileUploadAction пашыраецца дзеянне {

прыватны статычны лесаруб лесаруб = Logger.getLogger(FileUploadAction.клас);

грамадскасць ActionForward выканаць(ActionMapping адлюстраванне, ActionForm форма, HttpServletRequest запыт,

HttpServletResponse адказ) кідкі IOException, ServletException {

калі (форма != нулявы) {

Загрузіць Форма загрузкі формы = (UploadForm) форма;

FormFile file1 = uploadForm.getFilePath1 ();

FormFile file2 = uploadForm.getFilePath2 ();

FormFile file3 = uploadForm.getFilePath3 ();

карта< Радок, byte[] > fileMap = новае HashMap< Радок, byte[] > ();

fileMap.put(file1.getFileName(), file1.getFileData());

fileMap.put(file2.getFileName(), file2.getFileData());

fileMap.put(file3.getFileName(), file3.getFileData());

FileUploadService uploadService = новае FileUploadServiceImpl ();

калі (uploadService.doUpload (

getServlet().getServletContext().getRealPath(“/”).CONCAT( UploadConstants.UPLOAD_FOLDER), fileMap )

.памер() > 0) {

лесаруб.адладжваць( “загрузіць паспяховая” );

uploadForm.setUploadFlag(UploadConstants.UPLOAD_SUCCESS);

} яшчэ {

лесаруб.адладжваць( ” Не атрымалася загрузіць ” );

uploadForm.setUploadFlag(UploadConstants.UPLOAD_FAILURE);

}

}

return (mapping.findForward(UploadConstants.UPLOAD_SUCCESS));

}

}

[/код]

The [код] распоркі config.xml [/код] файл для гэтага класа дзеянне павінна быць у рамках -

[код]

<?XML версія = “1.0” кадаваньне = “ISO-8859-1” ?>

<!DOCTYPE распоркі-канфігурацыі PUBLIC ” -//Apache Software Foundation // DTD Struts Configuration 1.1 // EN” “HTTP://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd”>

<распоркі-канфігурацыі>

<формаў-бабы>

<імя формы боб = “LoginForm” тып = “com.home.upload.action.forms.LoginForm” />

<імя формы боб = “форма меню” тып = “com.home.upload.action.forms.MenuForm” />

<імя формы боб = “UploadForm” тып = “com.home.upload.action.forms.UploadForm” />

</формаў-бабы>

<Global-наперад />

<вострасюжэтныя адлюстравання>

<Шлях дзеянні = “/увайсці” тып = “com.home.upload.action.LoginAction” name = “LoginForm” ўваход = “/login.jsp” >

<наперад імя = “success” шлях = “/menu.jsp” />

<наперад імя = “недастатковасць” шлях = “/loginFailure.jsp” />

</action>

<Шлях дзеянні = “/menuAction” тып = “com.home.upload.action.MenuAction” name = “форма меню” ўваход = “/menu.jsp” параметр = “метад” >

<наперад імя = “загружаць” шлях = “/fileUpload.jsp” />

<наперад імя = “listfiles” шлях =“/listUploadedFiles.jsp” />

</action>

<Шлях дзеянні = “/uploadAction” тып = “com.home.upload.action.FileUploadAction” name =“UploadForm” ўваход =“/fileUpload.jsp” >

<наперад імя =“uploadSuccess” шлях =“/uploadSuccess.jsp” />

</action>

</вострасюжэтныя адлюстравання>

<Параметр Message-рэсурсы = “ApplicationResources” />

<убудова Classname = “org.apache.struts.validator.ValidatorPlugIn” >

<ўсталяваць ўласцівасць-ўласцівасць = “імёны шляхоў”

значэнне = “/WEB-INF / валідатар-rules.xml,/WEB-INF / validation.xml” />

</ўстаўны>

</распоркі-канфігурацыі>

[/код]

Як мы бачым, у прыведзеным вышэй прыкладзе, што калі клас пашырае базавы клас дзеянняў ён павінен перавызначыць [код] выконваць [/код] метад. Акрамя таго, канфігурацыйны файл распоркі мае толькі адзін прамы шлях, які адпавядае да [код] uploadAction [/код].

адпраўка Дзеянне

Клас дыспетчарская дзеянне таксама пашырае базавы клас дзеянні. Гэты клас мае перавагу перад класам дзеянні, што ён не мае яўна перавызначыць метад выканання, а распрацоўшчыкі могуць свабодна пісаць свае ўласныя метады. Гэта дазваляе распрацоўнікам выкарыстоўваць адны і тыя ж класы дзеянняў для некалькіх патокаў. Класічны прыклад выкарыстання класа дыспетчарская дзеянняў у выпадку апрацоўкі аперацый меню як пры -

[код]

package com.home.upload.action ;

імпартаваць java.io.File ;

імпартаваць java.io.IOException ;

імпартаваць java.util.List ;

імпартаваць javax.servlet.ServletException ;

імпартаваць javax.servlet.http.HttpServletRequest ;

імпартаваць javax.servlet.http.HttpServletResponse ;

імпартаваць org.apache.log4j.Logger ;

імпартаваць org.apache.struts.action.ActionForm ;

імпартаваць org.apache.struts.action.ActionForward ;

імпартаваць org.apache.struts.action.ActionMapping ;

імпартаваць org.apache.struts.actions.DispatchAction ;

імпартаваць com.home.upload.action.forms.MenuForm ;

імпартаваць com.home.upload.service.FileUploadService ;

імпартаваць com.home.upload.service.impl.FileUploadServiceImpl ;

імпартаваць com.home.upload.util.UploadConstants ;

/**

* @author TechAlpine

*/

грамадскасць клас MenuAction пашыраецца DispatchAction {

прыватны статычны лесаруб лесаруб = Logger.getLogger( MenuAction.клас );

грамадскасць ActionForward загрузкі( ActionMapping адлюстраванне, ActionForm форма, HttpServletRequest запыт,

HttpServletResponse адказ ) кідкі IOException, ServletException {

return ( mapping.findForward ( UploadConstants.ЗАГРУЗІЦЬ ) );

}

грамадскасць ActionForward listFiles( ActionMapping адлюстраванне, ActionForm форма, HttpServletRequest запыт,

HttpServletResponse адказ ) кідкі IOException, ServletException {

FileUploadService uploadService = новае FileUploadServiceImpl ();

Радок stagingLocation = getServlet().getServletContext().getRealPath( “/” ). CONCAT( UploadConstants.UPLOAD_FOLDER );

Меню Форма меню Форма = (форма меню) форма;

калі ((новае File( stagingLocation ) ).існуе() ) {

спіс<Радок> FileNames = uploadService.getFileNames( stagingLocation );

калі (fileNames.size() > 0 ) {

menuForm.setFiles( FileNames );

menuForm.setListFlag ( UploadConstants.ПРАЎДА );

} яшчэ {

menuForm.setListFlag ( UploadConstants.ХЛУСНЯ );

}

} яшчэ {

menuForm.setListFlag( UploadConstants.ХЛУСНЯ );

}

лесаруб.інфармацыя( ” вяртанне LIST “);

return (mapping.findForward(UploadConstants.LIST_UPLOADED_FILES));

}

}

[/код]

Як мы бачым, тут ёсць два спосабу, якія апрацаваць запыт ад карыстальніка. Гэтыя два метаду вызначаны ў [код] распоркі config.xml [/код] як па -

[код]

<Шлях дзеянні = “/menuAction” тып = “com.home.upload.action.MenuAction” name = “форма меню” ўваход = “/menu.jsp” параметр = “метад” >

<наперад імя = “загружаць” шлях = “/fileUpload.jsp” />

<наперад імя = “listfiles” шлях = “/listUploadedFiles.jsp” />

</action>

[/код]

два метаду – загружаць і listfiles маюць дзве асобныя запісы супраць класа дзеянняў – MenuAction. Кожны з гэтых метадаў мае свае асобныя шляху наперад, да якога яны перанакіроўваюць адказ.

Заключэнне

  • Struts з'яўляецца адкрытым зыходным кодам выкарыстоўваецца ў Java на аснове вэб-прыкладанняў.
  • Struts заснавана на кантролеры прадстаўлення мадэлі – MVC шаблон дызайну.
  • Struts мае пяць розных класаў дзеянняў, з якіх найбольш часта выкарыстоўваюцца –
    • дзеянне
    • DispatchAction
  • Клас дзеянняў з'яўляецца базавым класам, да якога ўсе класы дзеянняў павінны распаўсюджвацца на.
  • Класы, якія пашыраюць клас дзеянняў варта перавызначыць метад Выканаць.
  • Класы, якія пашыраюць клас дыспетчарская дзеянні маюць свае ўласныя дзеянні наперад метады.
  • Класы, якія пашыраюць клас дыспетчарская дзеянняў можа мець некалькі дзеянняў наперад метадаў такім чынам, становіцца карысным у выпадку некалькіх дадатковых патокаў.

 

Tagged on:
============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share