Uvođenje
Apache Struts je open source okvir koristi za razvoj JSP ili Servlet temelji web aplikaciju. Potpornji produžiti Java Servlet API i temelji se na kontroleru pogled modela ili MVC design pattern. Akcija Klasa u Struts okviru definira poslovnu logiku. Akcije razred obrađuje zahtjev klijenta, te priprema odgovor. On također odlučuje gdje je odgovor trebao biti proslijeđen. Uglavnom akcija klase prima podatke od prezentacijskog sloja i prosljeđuje podatke u odgovarajućem poslovnom sloju. Također se obrađuje podatke koji dolazi iz poslovnog sloja i prosljeđuje onima koji su ostali na prikazni sloj. In short, akcija klasa je opisana kao –
- Akcija klasa treba proširiti [kod] apache.struts.action.Action [/kod] razred.
- Pregaze [kod] izvršiti [/kod] Postupak je od [kod] Akcijski [/kod] razred.
- Akcijski servlet odabire Akcijski klasu za dolazni HTTP zahtjev definiran u okviru akcije mapiranje oznake u [kod] potpornji config.xml [/kod] file.
- Ove klase koriste se pozvati na nastavu u poslovnom sloju ili pristup podacima sloj kako bi dobili podatke iz grah i pohraniti obrađenih podataka i vratiti rezultat ili pogreška, ovisno o situaciji.
- Ti razredi su multi-navojem. Dakle programer treba biti oprezan pri rukovanju akcijski varijablu jer nisu nit sigurna.
Vrste akcija klase
Imamo sljedeće vrste aktivnosti nastave u potpornji –
- Akcijski – Osnovna akcija klase u kojoj smo provoditi našu poslovnu logiku.
- Uključi Akcija – Slično kao što su stranice direktivu u JSP.
- naprijed Akcija – Koristi se u slučaju da je potrebno proslijediti zahtjev s jednog na drugi JSP. Ako se izravno proslijediti zahtjev s jedne JSP krši MVC arhitekture. Dakle akcija klasa se koristi za raditi ovaj posao.
- Otprema Akcija – Obrađuje više operacija u više metoda. To je bolje imati jednu metodu po operaciji, umjesto spajanja cijelu poslovnu logiku u jednom izvršiti metodom akcijskog klase.
- Potražite dispečerski Akcija – Isto kao i otpreme akcije, ali preporuča se ne koristiti.
- Prebaci Akcija – koristiti za prebacivanje između različitih modula na potpornjima prijavi.
Najčešće korišteni akcija klase –
- Akcijski
- Otprema Akcija
Akcija Klasa
To je baza akcija klase u potpornji. Ovdje programer treba nadjačati metoda izvršenja kao pod -
[kod]
package com.home.upload.action ;
uvoz java.io.IOException ;
uvoz java.util.HashMap ;
uvoz java.util.Map ;
uvoz javax.servlet.ServletException ;
uvoz javax.servlet.http.HttpServletRequest ;
uvoz javax.servlet.http.HttpServletResponse ;
uvoz org.apache.log4j.Logger ;
uvoz org.apache.struts.action.Action ;
uvoz org.apache.struts.action.ActionForm ;
uvoz org.apache.struts.action.ActionForward ;
uvoz org.apache.struts.action.ActionMapping ;
uvoz org.apache.struts.upload.FormFile ;
uvoz com.home.upload.action.forms.UploadForm ;
uvoz com.home.upload.service.FileUploadService ;
uvoz com.home.upload.service.impl.FileUploadServiceImpl ;
uvoz com.home.upload.util.UploadConstants ;
/**
* @Autor TechAlpine
*/
javni razred FileUploadAction proteže Akcijski {
privatan statički Drvosječa drvosječa = drvosječa.getLogger(FileUploadAction.razred);
javni ActionForward izvršiti(ActionMapping mapiranje, ActionForm obrazac, HttpServletRequest zahtjev,
HttpServletResponse odgovor) baca IOException, ServletException {
ako (oblik != nula) {
Postavi Obrazac upload formu = (UploadForm) oblik;
FormFile file1 = uploadForm.getFilePath1 ();
FormFile file2 = uploadForm.getFilePath2 ();
FormFile file3 = uploadForm.getFilePath3 ();
Map< Gudački, byte[] > fileMap = novi HashMap< Gudački, byte[] > ();
fileMap.put(file1.getFileName(), file1.getFileData());
fileMap.put(file2.getFileName(), file2.getFileData());
fileMap.put(file3.getFileName(), file3.getFileData());
FileUploadService uploadService = novi FileUploadServiceImpl ();
ako (uploadService.doUpload (
getServlet().getServletContext().getRealPath(“/”).CONCAT( UploadConstants.UPLOAD_FOLDER), fileMap )
.veličina() > 0) {
drvosječa.otkloniti neispravnost( “Postavi je uspješna” );
uploadForm.setUploadFlag(UploadConstants.UPLOAD_SUCCESS);
} drugo {
drvosječa.otkloniti neispravnost( ” Prijenos nije uspio ” );
uploadForm.setUploadFlag(UploadConstants.UPLOAD_FAILURE);
}
}
return (mapping.findForward(UploadConstants.UPLOAD_SUCCESS));
}
}
[/kod]
The [kod] potpornji config.xml [/kod] datoteka za ovoj akciji razred bi trebao biti kao pod -
[kod]
<?xml version = “1.0” kodiranja = “ISO-8859-1” ?>
<!DOCTYPE potpornji-config JAVNI ” -//Apache Software Foundation // DTD Struts Konfiguracija 1.1 // EN” “http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd”>
<potpornji-config>
<Obrazac-graha>
<Naziv oblik-grah = “LoginForm” type = “com.home.upload.action.forms.LoginForm” />
<Naziv oblik-grah = “Obrazac izbornik” type = “com.home.upload.action.forms.MenuForm” />
<Naziv oblik-grah = “UploadForm” type = “com.home.upload.action.forms.UploadForm” />
</Obrazac-graha>
<globalno-naprijed />
<Akcija-preslikavanja>
<akcija path = “/prijaviti se” type = “com.home.upload.action.LoginAction” name = “LoginForm” ulaz = “/login.jsp” >
<naprijed name = “success” put = “/menu.jsp” />
<naprijed name = “neuspjeh” put = “/loginFailure.jsp” />
</action>
<akcija path = “/menuAction” type = “com.home.upload.action.MenuAction” name = “Obrazac izbornik” ulaz = “/menu.jsp” parametar = “način” >
<naprijed name = “upload” put = “/fileUpload.jsp” />
<naprijed name = “listfiles” put =“/listUploadedFiles.jsp” />
</action>
<akcija path = “/uploadAction” type = “com.home.upload.action.FileUploadAction” name =“UploadForm” ulaz =“/fileUpload.jsp” >
<naprijed name =“uploadSuccess” put =“/uploadSuccess.jsp” />
</action>
</Akcija-preslikavanja>
<poruka-resursi parametar = “ApplicationResources” />
<plug-in className = “org.apache.struts.validator.ValidatorPlugIn” >
<Objekt set-objekt = “pathnames”
vrijednost = “/WEB-INF / validator-rules.xml,/WEB-INF / validation.xml” />
</uključiti>
</potpornji-config>
[/kod]
Kao što smo vidjeli u gornjem primjeru da ako klasni proteže osnovnu Akcijski razred je pregaze [kod] izvršiti [/kod] način. Također, potpornji config file ima samo jedan naprijed put koji odgovara [kod] uploadAction [/kod].
Otprema Akcija
Otpreme akcija razred također proširuje osnovne akcijski razred. Ova klasa ima prednost u odnosu na akciji klase koja ne mora izričito nadjačati izvrši metodu, a programeri su slobodni da napišu svoje vlastite metode. Ona omogućuje programerima da koriste iste akcijske nastavu za više tokova. Klasičan primjer za korištenje otpreme akcija klase u slučaju rukovanje funkcije izbornika kao pod -
[kod]
package com.home.upload.action ;
uvoz java.io.File ;
uvoz java.io.IOException ;
uvoz java.util.List ;
uvoz javax.servlet.ServletException ;
uvoz javax.servlet.http.HttpServletRequest ;
uvoz javax.servlet.http.HttpServletResponse ;
uvoz org.apache.log4j.Logger ;
uvoz org.apache.struts.action.ActionForm ;
uvoz org.apache.struts.action.ActionForward ;
uvoz org.apache.struts.action.ActionMapping ;
uvoz org.apache.struts.actions.DispatchAction ;
uvoz com.home.upload.action.forms.MenuForm ;
uvoz com.home.upload.service.FileUploadService ;
uvoz com.home.upload.service.impl.FileUploadServiceImpl ;
uvoz com.home.upload.util.UploadConstants ;
/**
* @Autor TechAlpine
*/
javni razred MenuAction proteže DispatchAction {
privatan statički Drvosječa drvosječa = drvosječa.getLogger( MenuAction.razred );
javni ActionForward upload( ActionMapping mapiranje, ActionForm obrazac, HttpServletRequest zahtjev,
HttpServletResponse odgovor ) baca IOException, ServletException {
return ( mapping.findForward ( UploadConstants.PRIJENOS ) );
}
javni ActionForward listFiles( ActionMapping mapiranje, ActionForm obrazac, HttpServletRequest zahtjev,
HttpServletResponse odgovor ) baca IOException, ServletException {
FileUploadService uploadService = novi FileUploadServiceImpl ();
String stagingLocation = getServlet().getServletContext().getRealPath( “/” ). CONCAT( UploadConstants.UPLOAD_FOLDER );
Meni obrazac Obrazac izbornik = (Obrazac izbornik) oblik;
ako ((novi Datoteka( stagingLocation ) ).postoji() ) {
Popis<Gudački> Nazivi datoteka = uploadService.getFileNames( stagingLocation );
ako (fileNames.size() > 0 ) {
menuForm.setFiles( Nazivi datoteka );
menuForm.setListFlag ( UploadConstants.PRAVI );
} drugo {
menuForm.setListFlag ( UploadConstants.FALSE );
}
} drugo {
menuForm.setListFlag( UploadConstants.FALSE );
}
drvosječa.info( ” povratak POPIS “);
return (mapping.findForward(UploadConstants.LIST_UPLOADED_FILES));
}
}
[/kod]
Kao što vidimo ovdje postoje dvije metode koje obrađuju zahtjev od korisnika. Ove dvije metode definirane u [kod] potpornji config.xml [/kod] kao pod -
[kod]
<akcija path = “/menuAction” type = “com.home.upload.action.MenuAction” name = “Obrazac izbornik” ulaz = “/menu.jsp” parametar = “način” >
<naprijed name = “upload” put = “/fileUpload.jsp” />
<naprijed name = “listfiles” put = “/listUploadedFiles.jsp” />
</action>
[/kod]
Dvije metode – upload i listfiles imaju dvije odvojene unose protiv akcija klase – MenuAction. Svaki od ovih načina ima odvojene naprijed putove kojima bi se preusmjeriti odgovor na.
Zaključak
- Potpornji je open source okvir korišten u Java based web aplikacija.
- Podupirači se temelji na upravljaču pogled modela – MVC design pattern.
- Potpornji ima pet različitih akcija klase od kojih je najčešće koriste –
- Akcijski
- DispatchAction
- Akcijski klasa je osnovna klasa u koju su svi akcijski klase treba proširiti na.
- Nastava produljenje klasa akcija treba nadjačati metoda izvršenja.
- Nastava produljenje otpreme akcija klase imaju svoje vlastite akcijske naprijed metode.
- Nastava produljenje otpreme akcijski razred može imati više akcije naprijed metoda čime je postao koristan u slučaju više izbornih tokova.