Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Projektowanie warstwy serwera Spring MVC. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.

Podobne prezentacje


Prezentacja na temat: "Projektowanie warstwy serwera Spring MVC. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu."— Zapis prezentacji:

1 Projektowanie warstwy serwera Spring MVC

2 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 2 Plan wykładu Konfiguracja środowiska Kontroler Realizacja widoku z wykorzystaniem stron jsp Walidacja formularzy Upload i download plików Spring 2.5 Formularz typu Wizzard Inne przydatne zagadnienia

3 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 3 Moduł Spring Web Implementacja wzorca MVC –Model –Interfejs Controller i wiele jego implementacji –Wbudowana walidacja i formatowanie danych Integracja z różnymi technologiami widoku (JSP, JSF, Struts i inne) Zaawansowany mechanizm mapowania URL Wbudowany mechanizm file upload Spring WebFlow – rozszerzenie modułu Web o możliwość definiowania przepływów – ścieżek używania aplikacji webowej

4 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 4 DispatcherServlet Rolę zarządcy pełni zdefiniowany w pliku konfiguracyjnym web.xml serwlet będący instancją klasy DispatcherServlet Jest on odpowiedzialny za przyjmowanie żądań z zewnątrz i przekierowywanie żądań do właściwych kontrolerów Wymagane jest, aby konfiguracja aplikacji internetowej mieściła się w pliku konfiguracyjnym WEB-INF/sample- servlet.xml Do serwletu kontener będzie kierował wszystkie żądania, których adres URL pasuje do wzorca

5 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 5 InternalResourceViewResolver (I) InternalResourceViewResolver zajmuje się odwzorowaniem nazw logicznych na fizyczne adresy zasobów. InternalResourceViewResolver zamienia logiczną nazwę widoku, np. uzytkownik na fizyczne adresy: /WEB-INF/jsp/uzytkownik.jsp

6 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 6 InternalResourceViewResolver (II) /WEB-INF/jsp/.jsp

7 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 7 Kontroler (I) Kontroler to główny punk obsługi żądań na akcje. Kontroler implementuje logikę biznesową. Wynikiem działania kontrolera jest zwrócony obiekt ModelAndView, zawierający logiczną nazwę widoku. return new ModelAndView("/uzytkownik/uzytkownikRekord); return new ModelAndView(new RedirectView(uzytkownikList.html", true))

8 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 8 Kontroler (II) private final static String FORM_VIEW = "uzytkownik/uzytkownikRekord"; private final static String SUCCESS_VIEW = "uzytkownikList.html"; return FORM_VIEW; return "redirect:" + SUCCESS_VIEW;

9 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu public class UzytkownikListController {... }

10 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu value = { adresCommand", "raportCommand", uzytkownikCommand", ksiazkaCommand"}) sessionStatus.setComplete();

11 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego (method = RequestMethod.GET, value = "/uzytkownik/uzytkownikRekord.html") public String getForm( Model model, HttpServletRequest request)

12 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego (method = RequestMethod.POST, value = "/uzytkownik/uzytkownikRekord.html") public String submitForm( Model = "0) int page, HttpServletRequest request, HttpServletResponse Command command, BindingResult bindingResult, SessionStatus sessionStatus))

13 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu String = "0", required = false) int Integer[] = "-1", required = false, value = uzytkownikId") Uzytkownik uzytkownik)

14 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego = RequestMethod.GET, value = "/uzytkownik/zdjecie/{id}") public void int id, HttpServletResponse response) { if (id == 0) return;... }

15 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego = RequestMethod.GET, value = "/dane/{wydzial}/uzytkownik/{ }") public void String String )

16 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu UzytkownikCommand public UzytkownikCommand formBackingObject() { UzytkownikCommand uzytkownikCommand = new UzytkownikCommand(); return uzytkownikCommand; }

17 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 17 Model model.addAttribute(uzytkownikCommand", new uzytkownikCommand()); void referenceData(Model model) { List wojewodztwoList = new ArrayList (); Preselection preselection = new preselection(Wojewodztwo.class); preselection.setActive(true); wojewodztwoList = slownikService.findByCriteria(preselection); model.addAttribute("wojewodztwoList", wojewodztwoList); }

18 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 18 Sterowanie String akcja = ServletRequestUtils.getStringParameter(request, "obsluga, null); if (Koniec".equals(akcja)){.... } if (WebUtils.hasSubmitParameter(request, "obsluga")) {.... }

19 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 19 ApplicationContextAware public class UzytkownikRekordController implements ApplicationContextAware private ApplicationContext applicationContext; applicationContext.getBean(serviceBeanName)

20 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(Date.class, "dataUrodzenia", new DateEditor()) binder.registerCustomEditor(Uzytkownik.class, new EntityEditor(applicationContext, uzytkownikService")); }

21 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 21 DataBinder void registerCustomEditor(Class referenceData, String field, PropertyEditor propertyEditor) void setAllowedFields(String[] allowedFields) void setDisallowedFields(String[] disallowedFields) void setRequiredFields(String[] requiredFields) binder.setDisallowedFields(new String[] {"id"})

22 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 22 Editor (I) public class DateEditor extends PropertyEditorSupport { private DateFormat dateFormat; public DateEditor(Locale locale) { super(); dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, locale); }

23 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 23 Editor (II) public String getAsText() { Date value = (Date) getValue(); if (value != null) return dateFormat.format(value) ; return ; }

24 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 24 Editor (III) public void setAsText(String text) throws IllegalArgumentException { if (StringUtils.hasText(text)) { setValue(dateFormat.parse(text)); //obsługa błędu } else { setValue(null); }

25 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 25 Editor (IV) public class EntityEditor extends PropertyEditorSupport { private Object serviceBean; public EntityEditor(ApplicationContext ctx, String serviceBeanName) { this.serviceBean = ctx.getBean(serviceBeanName); }

26 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 26 Editor public String getAsText() { Object entity = getValue(); if (entity == null) return "-1"; Method getId = entity.getClass().getMethod(getId); int id = (Integer) getId.invoke(entity); return String.valueOf(id); }

27 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 27 Editor public void setAsText(String textId) throws IllegalArgumentException { int id = Integer.parseInt(textId); Method getEntity = serviceBean.getClass().getMethod(get, int.class); Object entity = getEntity.invoke(serviceBean, id); setValue(entity); } }

28 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 28 Spring 3 Type Conversion (I) public abstract class GenericConverter implements Converter { protected GenericDAO dao; public abstract void setDao(GenericDAO dao);

29 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 29 Spring 3 Type Conversion (II) public T convert(String source) { if (!StringUtils.hasText(source)) return null; int id = Integer.parseInt(source); if (id < 0) return null; return dao.get(id); }

30 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 30 Spring 3 Type Conversion (III) public class WydzialConverter extends GenericConverter implements Converter {.... // setter do dao }

31 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 31 Spring 3 Type Conversion (IV) public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Wydzial wydzial = (Wydzial) obj; if (this.getId() == wydzial.getId()) return true; return false; }

32 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 32 Spring 3 Type Conversion (V) binder.setConversionService(conversionService)

33 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 33 Widok - zastosowanie EL ${zmienna.pole} true i false liczby całkowite i zmiennoprzecinkowe łańcuchy znaków operatory arytmetyczne: + - * / % mod div operatory logiczne: and or not && || ! operatory porównania: == != => > <= < lt gt le ge eq ne empty, null, instrukacja warunkowa A ? B : C

34 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 34 c:set ...

35 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 35 c:out

36 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 36 c:if....

37 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 37 c:url Edit ">Dodaj nowy

38 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 38 c:when Adres....

39 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 39 c:forEach

40 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 40 Biblioteka funkcji (I) ${fn:length(uzytkownikCommand.dzieckoList)} ${fn:length(uzytkownikCommand.imie)} ${fn:substringAfter(obiekt.nazwa,"Opis: ")}

41 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 41 Biblioteka funkcji (II) booleancontains(String, String) booleancontainsIgnoreCase(String, String) booleanendsWith(String, String) intindexOf(String,String) Stringjoin(String[], String) intlength(Object) Stringreplace(String, String, String) String[]split(String, String) booleanstartsWith(String, String) Stringsubstring(String, int, int)

42 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 42 Biblioteka funkcji (III) StringsubstringAfter(String, String) StringsubstringBefore(String, String) StringtoLowerCase(String) StringtoUpperCase(String) Stringtrim(String)

43 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 43 spring:nestedPath Ulica Ulica

44 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 44 spring:message...

45 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 45 form:form

46 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 46 form:input (I) imię: nazwisko:

47 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 47 form:input (II) path disabled size, maxlength id, title onblur, onchange, onclick, ondblclick, onfocus, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseout, onmouseover, onmouseup, onselect cssClass, cssErrorClass, cssStyle

48 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 48 form:password

49 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 49 form:checkbox Sport: Gry: Inne: TV:

50 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 50 form:checkboxs Wyślij wiadomość do:

51 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 51 form:radiobutton Płeć: Mężczyzna: Kobieta:

52 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 52 form:radiobuttons

53 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 53 form:textarea Opis:

54 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 54 form:select, form:option, form:options (I) Wykształcenie

55 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 55 form:select, form:option, form:options (II) Wydział

56 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 56 spring:bind

57 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 57 Typ wyliczeniowy (I) public enum TypPlik { DOC("doc"), PDF("pdf"), JPG("jpg"), XLS("xls"); private final String label; private TypPlik(String label) public String getLabel()

58 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 58 Typ wyliczeniowy (II) private static Map actionMap; static { actionMap = new HashMap (); for (TypPlik a : TypPlik.values()) actionMap.put(a.label, a); } public static TypPlik get(String label) { return actionMap.get(label); }

59 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 59 Typ wyliczeniowy (III) public String getOpisResponse() { if (this == TypPlik.DOC) return "application/msword"; if (this == TypPlik.JPG) return "image/jpg"; if (this == TypPlik.PDF) return "application/pdf"; if (this == TypPlik.XLS) return "application/excel"; return ""; }

60 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 60 Typ wyliczeniowy (IV)

61 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 61 Internacjonalizacja MessageSource (I)

62 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 62 Internacjonalizacja MessageSource (II) WEB-INF/text/errorMessages WEB-INF/text/mailMassages

63 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 63 Internacjonalizacja - przykład (I) typeMismatch.java.lang.Integer = Niepoprawny format dla liczby typeMismatch.java.math.Float = Niepoprawny format dla liczby typeMismatch.java.util.Date = Format daty niepoprawny typeMismatch= Niepoprawny format danej error.invalidArguments = Nieprawidłowe wartości parametrów error.security.brakUprawnien= Brak uprawnień

64 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 64 Internacjonalizacja - przykład (II) form.page.title = Dodawanie aktualności form.title = Tytuł form.abstract = Nagłówek aktualności: form.position= Kolejność na liśie: form.active= Aktywny form.date = Data(RRRR-MM-DD): form.submit= Zapisz opis.uzytkownik.imie = imię

65 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 65 Walidator - przykład (I) public class UzytkownikValidator implements Validator { public boolean supports(Class c) { return Uzytkownik.class.equals(c); } public void validate(Object object, Errors error) { Uzytkownik uzytkownik = (Uzytkownik) object; ValidationUtils.rejectIfEmpty(error, imie", pole.required"); if (uzytkownik.getWiek() < 0) error.rejectValue(wiek", pole.ujemne"); if (uzytkownik.getWiek() > 110) error.rejectValue(wiek", "too.stary"); }}

66 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 66 Walidator - przykład (II) if (errors.getErrorCount() == 0) { if (uzytkownik.getLogin().length()>100) errors.rejectValue("uzytkownik.login", "error.field.tooLong",new Object[]{"100},""); } error.field.tooLong = Pole może zawierać nie więcej niż {0} znaków.

67 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 67 Walidator - przykład (III) if (nip.length() != 10).... ; int[] waga = {6,5,7,2,3,4,5,6,7}; int sumaKontrolna = new Integer(nip.substring(nip.length() - 1)).intValue(); int sumaLiczona = 0; for (int i = 0; i < nip.length() - 1; ++i) sumaLiczona += Integer(String.valueOf(nip.charAt(i))).intValue()*waga[i]; sumaLiczona = sumaLiczona % 11; if (sumaLiczona != sumaKontrolna) ; int[] wagaPESEL= {1,3,7,9,1,3,7,9,1,3}; sumaLiczona = 10 - sumaLiczona % 10; // 10 >> 0

68 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 68 Walidator - przykład (IV) String napis = numerRachunku.substring(2) + "2521" + numerRachunku().substring(0, 2); String napisCzesc = napis.substring(0, 6); Integer liczba = Integer.valueOf(napisCzesc); napisCzesc = Integer.toString(liczba % 97) + napis.substring(6, 12); liczba = Integer.valueOf(napisCzesc); napisCzesc = Integer.toString(liczba % 97) + napis.substring(12, 18); liczba = Integer.valueOf(napisCzesc); napisCzesc = Integer.toString(liczba % 97) + napis.substring(18, 24); liczba = Integer.valueOf(napisCzesc); napisCzesc = Integer.toString(liczba % 97) + napis.substring(24, 30); liczba = Integer.valueOf(napisCzesc) % 97; if (liczba.intValue() != 1)...

69 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 69 BindingResult (errors) (I) errors.getErrorCount(); errors.getAllErrors(); errors.getFieldErrors(); errors.getGlobalErrors(); errors.setNestedPath("uzytkownik"); errors.pushNestedPath(uzytkownik"); errors.popNestedPath();

70 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 70 BindingResult (errors) (II) errors.pushNestedPath(adresZamieszkania"); adresValidator.validate(uzytkownik.getAdresZamieszkania, errors); if (errors.getErrorCount() == 0) {..... } errors.popNestedPath();

71 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 71 form:errors ValidationUtils.rejectIfEmptyOrWhitespace(errors, imie", "required", Pole jest wymagane"); Imię:

72 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 72 Walidator - błąd globalny errors.reject("error.sumaKontrola");

73 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 73 Walidator - walidatory standardowe if ( Validator.getInstance().isValid(uzytkownik.get ()) == false) { errors.rejectValue(uzytkownik. ","error. .invalid"); } DateValidator UrlValidator

74 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 74 Upload plików (I) binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor());

75 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 75 Upload plików (II) Zapisz plik wzoru:

76 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 76 Upload plików private byte[] plikWBazie; MultipartFile plik; plik = ((MultipartRequest)request).getFile("plik"); plik.getOriginalFilename() plik.getBytes();

77 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 77 Download plików (I) " target="_blank">Pobierz plik

78 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 78 Download plików = "plik.html") public void pobierzPlik(HttpServletResponse response) { int id = ServletRequestUtils.getIntParameter(request, id", -1); Ksiazka ksiazka = ksiazkaService.pobierzPlik(id); response.setContentType(ksiazka.getMimeType()); response.setHeader("Content-Disposition", "inline; filename="+ ksiazka.getNazwa() + "." + ksiazka.getRozszerzenie());

79 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 79 Download plików (III) OutputStream os = response.getOutputStream(); os.write(ksiazka.getPlik()); os.flush(); os.close(); }

80 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 80 Spring Mapowanie adresów url insertUzytkownik

81 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 81 Spring kontrolery

82 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 82 Spring przykładowy kontroler public class PrzykładowyController extends AbstractController { public ModelAndView handleRequestInternal( HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mav = new ModelAndView("hello"); mav.addObject("message", "Hello World!"); return mav; } bean id="sampleController" class="samples.SampleController">

83 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 83 Spring kontroler (konstruktor) public editUzytkownik() { super(); setCommandClass(UzytkownikCommand.class); setCommandName(uzytkownikCommand"); setBindOnNewForm(true); setSessionForm(true); }

84 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 84 Spring kontroler (parametry widoku) String getSuccessView(); String getFormView(); setSuccessView(String successView); setFormView(String formView);

85 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 85 Spring kontroler (start formularza) 1. formBackingObject 2. initBinder 3. onBindOnNewForm (setBindOnNewForm(true)) 4. showForm 4a. referenceData

86 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 86 Spring kontroler (submit formularza) 1. formBackingObject (jeżeli setSessionForm(false)) 2. handleInvalidSubmit 3. onBind 4. Walidacja 5. onBindAndValidate 6. processFormSubmission 7. onSubmit (albo showForm)

87 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 87 Spring kontroler (onSubmit) protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, org.springframework.validation.BindException errors) throws Exception { RedirectView rv; Uzytkownik uzytkownik = (Uzytkownik) command; uzytkownikService.persist(uzytkownik); rv = new RedirectView("editUzytkownik.htm?id="+uzytkownik.getId()"); rv.setContextRelative(true); return new ModelAndView(rv); }

88 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 88 Spring AbstractWizardFormController (I) lista widoków wchodzących w skład wizarda status: finish, cancel, page_change przechodzenie pomiędzy widokami w wizardzie (nawet gdy walidacja sie nie powiodła – "dirty back", "dirty forward") zmiana kolejności stron / omijanie wybranych stron bieżący widok zapisany w sesji

89 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 89 Spring AbstractWizardFormController (II) postProcessPage processFinish processCancel suppressValidation validatePage getInitialPage

90 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 90 Wizard - jsp (I) Rejestracja uzytkownika. Edycja uzytkownika: ${uzytkownikCommand.uzytkownik.label} Strona ${page} z 5: ${pageTitleList[page]}

91 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 91 Wizard - jsp (II)....

92 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 92 Wizard - jsp (III)... ${pageTitle} ${pageTitle}

93 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 93 Wizard - jsp (IV) // blok globalError // nagłówek widoczny nad każdą stroną

94 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 94 Wizard - jsp (V) Poprzednia strona Nastęna strona

95 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 95 Tabela - obiekt Command (I) public class UzytkownikCommand { Uzytkownik uzytkownik; Dziecko dziecko = new Dziecko(); private int dzieckoIndex = -1;......

96 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 96 Tabela - obiekt Command (II) public boolean isNewDziecko() { return pozycjaIndex < 0; } public void zmienDziecko() { if (isNewDziecko()) uzytkownik.getDzieci().add(dziecko); else uzytkownik.getDzieci().get(dzieckoIndex).clone(dziecko); dziecko = new Dziecko(); //inicjalizacja dzieckoIndex = -1; }

97 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 97 Tabela - obiekt Command (III) public void edytujDziecko(int index) { dzieckoIndex = index; dziecko = new Dziecko(); dziecko.clone(uzytkownik.getDzieci().get(index)); } public void usunDziecko(int index) { dziecko.getDzieci().remove(index); dzieckoIndex = -1; }

98 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 98 Tabela - kontroler int row = ServletRequestUtils.getIntParameter(request, "row", -1); if ("zapisz".equals(akcja)) uzytkownikCommand.zmienDziecko(); if ("edycja".equals(akcja)) { if (row == -1) return; uzytkownikCommand.edytujDziecko(row); } if ("usun".equals(akcja)) uzytkownikCommand.usunDziecko(row);

99 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 99 Tabela - jsp (I) Edycja Usuń

100 Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 100 Tabela - jsp (II) imię: ${uzytkownikCommand.newDziecko ? 'Dodaj' : 'Zapisz'}


Pobierz ppt "Projektowanie warstwy serwera Spring MVC. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu."

Podobne prezentacje


Reklamy Google