integracja jsf + facelets + spring + jpa + tomahawk

Download Integracja JSF + Facelets + Spring + JPA + Tomahawk

Post on 25-May-2015

4.301 views

Category:

Technology

1 download

Embed Size (px)

TRANSCRIPT

  • 1. Integracja JSF + Facelets + Spring + JPA+ TomahawkWiktor Gworek 1

2. O mnie Student V roku na MIMUWie Od dwch lat zwizany z Jav Cigl si ucz nowych technologii Prowadz blog Mocna Kawa (blog.mocna- kawa.com)2 3. Agenda JavaServer Faces, Facelets, Tomahawk, Spring, JPA, czy to musi by tak uciliwe?3 4. JavaServer Faces[skip intro] 4 5. Facelets 5 6. Co dajeje nam Facelets?6 7. Facelets - odejcie od JSP7 8. Facelets - odejcie od JSP JSP zostao stworzone do generowaniadynamicznej treci, a nie do tworzeniadrzewa komponentw 7 9. Facelets - odejcie od JSP JSP zostao stworzone do generowaniadynamicznej treci, a nie do tworzeniadrzewa komponentw Dwa rne cykle ycia 7 10. Facelets - odejcie od JSP JSP zostao stworzone do generowaniadynamicznej treci, a nie do tworzeniadrzewa komponentw Dwa rne cykle ycia Content Interweaving issues7 11. Facelets - odejcie od JSP8 12. Facelets - odejcie od JSP ViewHandler stworzony wycznie dla JSF8 13. Facelets - odejcie od JSP ViewHandler stworzony wycznie dla JSF .xhtml zamiast .jsp 8 14. Facelets - odejcie od JSP ViewHandler stworzony wycznie dla JSF .xhtml zamiast .jsp Szybsze ni kombinacja JSF&JSP8 15. Facelets - lepsze wywietlania bdw 9 16. Facelets - lepsze wywietlania bdw 9 17. Facelets - lepsze wywietlania bdw 9 18. Facelets - nie powiedziaem o: 10 19. Facelets - niepowiedziaem o: bardzo proste szablony, 10 20. Facelets - niepowiedziaem o: bardzo proste szablony, widok mona rozwija na ywo, 10 21. Facelets - niepowiedziaem o: bardzo proste szablony, widok mona rozwija na ywo, wsparcie dla JSTL,10 22. Facelets - niepowiedziaem o: bardzo proste szablony, widok mona rozwija na ywo, wsparcie dla JSTL, atwiejsze dodawanie nowych komponentw,10 23. Facelets - niepowiedziaem o: bardzo proste szablony, widok mona rozwija na ywo, wsparcie dla JSTL, atwiejsze dodawanie nowych komponentw, komponenty kompozycyjne. 10 24. Facelets - konguracja 11 25. Delegacja ViewHandlerw faces-cong.xml com.sun.facelets.FaceletViewHandler 12 26. Zmiany w web.xml facelets.REFRESH_PERIOD 2 facelets.DEVELOPMENT true javax.faces.DEFAULT_SUFFIX .xhtml 13 27. Tomahawk 14 28. Tomahawk15 29. Tomahawk15 30. Tomahawk Zbir komponentw dla JSF ze stajni Apache15 31. Tomahawk Zbir komponentw dla JSF ze stajni Apache Dodatkowe walidatory15 32. Tomahawk Zbir komponentw dla JSF ze stajni Apache Dodatkowe walidatory Wszystko to, co powinno by ju dawno w JSF 15 33. 16 34. 16 35. 16 36. 16 37. 16 38. 16 39. 16 40. Tomahawk - konguracja17 41. Tomahawk - konguracja Wystarczy doda tomahawk.jar :)17 42. Spring Framework 18 43. Spring19 44. Spring IoC, DI, AOP, Hollywood Principle, JEE, MVC, JTA...19 45. Spring IoC, DI, AOP, Hollywood Principle, JEE, MVC, JTA... Nie narzuca nam okrelonego modelu programowania,19 46. Spring IoC, DI, AOP, Hollywood Principle, JEE, MVC, JTA... Nie narzuca nam okrelonego modelu programowania, lekki i dobrze udokumentowany,19 47. Spring IoC, DI, AOP, Hollywood Principle, JEE, MVC, JTA... Nie narzuca nam okrelonego modelu programowania, lekki i dobrze udokumentowany, atwotestowania, rozszerzania, 19 48. Spring IoC, DI, AOP, Hollywood Principle, JEE, MVC, JTA... Nie narzuca nam okrelonego modelu programowania, lekki i dobrze udokumentowany, atwotestowania, rozszerzania, daje do du rado.19 49. Na czym polega poczenie JSF i Spring?20 50. 21 51. #{ziarnoPrawdy} 21 52. #{ziarnoPrawdy}JSF standardowo sprawdza czy jest gdzie w swoim kontekcie.21 53. #{ziarnoPrawdy}JSF standardowo sprawdza czy jest gdzie w swoim kontekcie. jeli nic nie znalezionoJSF deleguje jego znalezienie do Springa21 54. #{ziarnoPrawdy}JSF standardowo sprawdza czy jest gdzie w swoim kontekcie.jeli nic nie znalezionoJSF deleguje jego znalezienie do Springa org.springframework.web.jsf.DelegatingVariableResolver 21 55. ...i jeszcze drobnezmiany w web.xml org.springframework.web.context.ContextLoaderListener contextCongLocation /WEB-INF/applicationContext*.xml RequestContextFilter lter-name> org.springframework.web.lter.RequestContextFilter lter-class> lter> RequestContextFilter lter-name> *.jsf lter-mapping>22 56. czas na JPA23 57. czas na konkrety 23 58. Model - Role @NamedQueries({ @NamedQuery(name = quot;Role.ndAllquot;, query = quot;SELECT role FROM Role rolequot;), @NamedQuery(name = quot;Role.ndByRoleNamequot;, query = quot;SELECT role FROM Role role WHERE role.roleName = :roleNamequot;) }) @Entity public class Role {@Id @GeneratedValue private Integer id;private String roleName; ... } 24 59. Model - User @NamedQueries({ @NamedQuery(name = quot;User.ndAllquot;, query = quot;SELECT user FROM User userquot;), @NamedQuery(name = quot;User.ndByLoginquot;, query = quot;SELECT user FROM User user WHERE user.login = :loginquot;) }) @Entity public class User {@Id @GeneratedValue private Integer id;private String login; private String password;@OneToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST}, fetch = FetchType.EAGER) private List roles; ... }25 60. DAO public interface RoleDao { public List ndAll(); public Role ndById(Integer id); public Role ndByRoleName(String roleName); public void save(Role role); public void delete(Role role); }26 61. DAO la Spring public class JpaRoleDao extends JpaDaoSupport implements RoleDao {public List ndAll() { return getJpaTemplate().ndByNamedQuery(quot;Role.ndAllquot;); }public Role ndById(Integer id) { return getJpaTemplate().nd(Role.class, id); }public void save(Role role) { getJpaTemplate().merge(role); }public void delete(Role role) { getJpaTemplate().remove(getJpaTemplate().merge(role)); } }27 62. czas na konrguracj,czas na Springa 28 63. Testowanie w Springu29 64. Testowanie w Springu Moliwe rne konguracje w zalenoci od potrzeb,29 65. Testowanie w Springu Moliwe rne konguracje w zalenoci od potrzeb, testy te podlegaj wstrzykniciu zalenoci,29 66. Testowanie w Springu Moliwe rne konguracje w zalenoci od potrzeb, testy te podlegaj wstrzykniciu zalenoci, dla JPA mamy uyteczn klas AbstractJpaTests. 29 67. CRUD30 68. CRUDlist 30 69. CRUD#{userController.createSetup}create list 30 70. CRUD #{userController.create}#{userController.createSetup}create list30 71. CRUD#{userController.create}#{userController.createSetup} create #{userController.editSetup} listupdate 30 72. CRUD#{userController.create}#{userController.createSetup} create #{userController.update} #{userController.editSetup} listupdate 30 73. CRUD#{userController.create}#{userController.createSetup} create #{userController.update} #{userController.editSetup} listupdate delete #{userController.delete} 30 74. do dziea31 75. Drobne sowo o t:selectManyCheckbox32 76. Drobne sowo o t:selectManyCheckbox Kiedy klasa nie jest standardowa to trzeba opakowywa w SelectItem,32 77. Drobne sowo o t:selectManyCheckbox Kiedy klasa nie jest standardowa to trzeba opakowywa w SelectItem, t:selectItem robi to za nas, 32 78. Drobne sowo o t:selectManyCheckbox Kiedy klasa nie jest standardowa to trzeba opakowywa w SelectItem, t:selectItem robi to za nas, ale i tak trzeba napisa konwerter. 32 79. Jak mona sobie pomc? 33 80. Jak mona sobiepomc? Wiele IDE ma wsparcie do kongurowania projektu (NetBeans, IntelliJ Idea),33 81. Jak mona sobiepomc? Wiele IDE ma wsparcie do kongurowania projektu (NetBeans, IntelliJ Idea), AppFuse,33 82. Jak mona sobiepomc? Wiele IDE ma wsparcie do kongurowania projektu (NetBeans, IntelliJ Idea), AppFuse, generatory Seam, 33 83. Jak mona sobiepomc? Wiele IDE ma wsparcie do kongurowania projektu (NetBeans, IntelliJ Idea), AppFuse, generatory Seam, pisa wasne generatory,33 84. Jak mona sobiepomc? Wiele IDE ma wsparcie do kongurowania projektu (NetBeans, IntelliJ Idea), AppFuse, generatory Seam, pisa wasne generatory, Great frameworks are extracted, not created.33 85. Pyt ani a?wiktor.gworek@gmail.comhttp://blog.mocna-kawa.com34 86. Pyt ani a?wiktor.gworek@gmail.comhttp://blog.mocna-kawa.com34