Presentation is loading. Please wait.

Presentation is loading. Please wait.

Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Developing Rich Web Applications with.

Similar presentations


Presentation on theme: "Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Developing Rich Web Applications with."— Presentation transcript:

1 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Developing Rich Web Applications with Spring Keith Donald Scott Andrews

2 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 2 Agenda A little bit about your speakers Developing rich web applications –Programming model –Convention-over-configuration –Ajax –Flow –Security –JavaServerFaces –Better modularity with OSGi

3 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 3 Speaker Background Keith Donald –SpringSource Co-Founder –Spring Project Lead –Author Several Spring books Spring Training Curriculum –Conference Director, The Spring Experience Scott Andrews –Application Developer –Member of the Spring Web Team –Creator, SpringSource Enteprise Bundle Repository

4 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 4 Where We Work

5 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 5 Our Open Source Projects

6 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 6 Our Commercial Products SpringSource Performance Suite Spring Enterprise Edition SpringSource Support SpringSource Enterprise

7 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 7 SpringSource Enterprise AMS STS RAC

8 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 8 SpringSource dm Server™

9 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9 Agenda A little bit about your speakers Developing rich web applications –Programming model –Convention-over-configuration –Ajax –Flow –Security –JavaServerFaces

10 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 10 Modules Covered Spring Web MVC –foundation for all other web modules Spring JavaScript –Ajax support Spring Web Flow –framework for stateful interactions Spring Faces –JavaServer Faces support

11 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 11 Layered Web Modules Spring Web Modules Spring Web MVC Spring Web Flow Spring JavaScript Spring Faces

12 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 12 Obtaining Code See www.springframework.org/downloadwww.springframework.org/download Web MVC –Download Spring Framework 2.5.x JavaScript, Web Flow, and Faces –Download Spring Web Flow 2.0.x Sample Application –See www.springframework.org/webflow-sampleswww.springframework.org/webflow-samples

13 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 13 Spring Web MVC Popular web framework Foundation for all other web modules Significantly enhanced in Spring 2.5 –Annotated controller model –Convention-over-configuration

14 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 14 Annotated Controller Model Annotate a plain Java™ class as a Controller Map HTTP requests to methods –Bind request parameters to method arguments –Populate Model to export data to the view –Return a String to select a view

15 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 15 Example @Controller to manage hotels GET /hotels/list –List hotels available for booking

16 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 16 Example @Controller @Controller public class HotelsController { @RequestMapping(“/hotels/list”, method=GET) public String list(Model model) { model.add(“hotels”, hotelService.findAll()); return “/hotels/list”; } }

17 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 17 Example Request Lifecycle Dispatcher Servlet HotelsController.list(Model) /hotels/list.jsp /hotels/list invoke render Model {hotels}

18 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 18 Before Spring Web MVC 2.5 public class HotelsController extends MultiActionController { public ModelAndView list( HttpServletRequest request, HttpServletResponse response) { ModelAndView mv = new ModelAndView(); mv.add(“hotels”, hotelService.findAll()); mv.setViewName(“/hotels/list”); return mv; } } + External XML URL Mapping Configuration

19 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 19 Convention over configuration Write less code, get consistency Conventions available for –Request mapping –View name selection –Model population Can always override when needed

20 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 20 With Conventions @Controller public class HotelsController { @RequestMapping public void list(Model model) { model.add(hotelService.findAll()); } Mapping to class + method name Model entry name generated from object type View selected from request path GET /hotels/list

21 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 21 Simplest Signature Possible @Controller public class HotelsController { @RequestMapping public List list() { return hotelService.findAll(); } Added to the Model for you

22 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 22 Multi-Action Convention Example @Controller public class HotelsController { @RequestMapping public void index(…) {…} @RequestMapping public void show(…) {…} @RequestMapping public void update(…) {…} } /hotels/index /hotels/update /hotels/show

23 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 23 Data Binding @Controller public class HotelsController { @RequestMapping public void list(Criteria c, Model m) { model.add(hotelService.find(c)); } @RequestMapping public void show(@RequestParam Long id, Model m) { model.add(hotelService.get(id)); } /hotels/list?searchString=Westin&pageSize=5 /hotels/show?id=1

24 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 24 @Controller Deployment Found in classpath Auto-wired as Spring beans <context:component-scan base-package=”example.hotels”/>

25 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 25 Autowiring Hints @Controller public class HotelsController { @Autowired public HotelsController(HotelService service) { } } @Service public class HibernateHotelService implements HotelService { @Autowired public HibernateHotelService(DataSource ds) { } @Transactional public List find(Criteria c) {} }

26 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 26 Mixing Annotations and XML <context:component-scan base-package=”example.hotels”/> <jee:jndi-lookup id=”dataSource” jndi-name=”eis/jdbc/travelDataSource”/> Configure your application beans Link with environment-specific infrastructure

27 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Demo Essential Spring MVC Features

28 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 28 Web MVC Summary Favor @Controller model over old styles Favor convention-over-configuration Favor strongly typed handler methods Consider grouping control logic by Resource –e.g. “HotelsController” for acting on Hotel resources

29 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 29 Spring JavaScript Spring Web Modules Spring Web MVC Spring Web Flow Spring JavaScript Spring Faces

30 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 30 Spring JavaScript JavaScript abstraction framework –Use to enhance HTML elements with behavior Integrates the Dojo Toolkit In Web Flow 2 distribution

31 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 31 Goals of Spring JavaScript Simplify use of Dojo for common enterprise use cases –Ajax –Client-side validation Promote progressive enhancement –Graceful degradation –Accessibility

32 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 32 Other Spring JavaScript Value Adds ResourceServlet –Efficient serving of static resources –Meets Yahoo performance guidelines CSS Framework –Structure for common page layouts

33 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 33 Using Spring JavaScript Include public API, Dojo, and API implementation in your pages <script type="text/javascript" src="/resources/spring/Spring.js"> <script type="text/javascript" src="/resources/dojo/dojo.js"> <script type="text/javascript ” src="/resources/spring/Spring-Dojo.js">

34 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 34 Working with the API Use API to apply decorations to HTML elements Different types of decorations –WidgetDecoration –AjaxEventDecoration –ValidateAllDecoration

35 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 35 Adding Hover Effect Spring.addDecoration(new Spring.ElementDecoration({ elementId : "searchString", widgetType : "dijit.form.ValidationTextBox", widgetAttrs : { promptMessage : "Search hotels by name or location. ” } }));

36 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 36 Ajax with Partial Rendering More Results Spring.addDecoration(new Spring.AjaxEventDecoration({ elementId: "moreResultsLink", event: "onclick", params: { fragments: "searchResults ” } })); Name of tile to re-render on server No callback function necessary to link in response

37 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 37 Form Validation Spring.addDecoration(new Spring.ElementDecoration({ elementId : "creditCard", widgetType : "dijit.form.ValidationTextBox", widgetAttrs : { required : true, invalidMessage : "A 16-digit number is required.", regExp : "[0-9]{16} ” } }));

38 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 38 Combining with Dojo Query dojo.query('.spring-titlePane-open > h2'). forEach(function(titleElement) { Spring.addDecoration(new Spring.ElementDecoration({ elementId : titleElement.parentNode.id, widgetType : 'dijit.TitlePane', widgetAttrs : { title : titleElement.innerHTML, open : true }} )); }).style('display','none');

39 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Demo Progressive Enhancement with Spring JavaScript

40 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 40 Summary Simple yet powerful API Write consistent JavaScript Promote progressive enhancement Manage partial update complexities Full-power of underlying toolkit available

41 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 41 Spring Web Flow Spring Web Modules Spring Web MVC Spring Web Flow Spring JavaScript Spring Faces

42 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 42 Spring Web Flow Overview For implementing stateful flows –Reusable multi-step user dialogs Plugs into Spring MVC Spring Web Flow 2 available now –Incorporates lessons learned from 1.0 –Offers many new features

43 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 43 Web Flow Sweet Spot

44 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 44 New Web Flow 2 Features Ajax support –Partial page re-rendering in flow DSL Spring security integration Flow-managed persistence Convention-over-configuration –View rendering –Data binding and validation

45 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Demo Essential Web Flow 2 features

46 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 46 Summary Use Web Flow for stateful use cases –Wizards are a good example Run flows alongside stateless Controllers Web Flow 2 is a big step forward –Most sophisticated flow engine available

47 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 47 Spring Faces Spring Web Modules Spring Web MVC Spring Web Flow Spring JavaScript Spring Faces

48 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 48 Spring Faces Makes JSF a view technology in Spring –Render JSF views from Spring MVC Controllers and Web Flows Drives JSF lifecycle from within Spring environment

49 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 49 Spring Faces All native Spring MVC features available All phases of the JSF lifecycle implemented –Stateless MVC views execute render lifecycle –Stateful web flows execute render and postback lifecycles

50 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 50 Key Benefits Action-oriented (Spring MVC) –Flexible URL mapping –REST-ful controller programming model –Model binding and validation –Request interception –Exception handling –Web Flow Component-oriented (JSF) –Composite views (Facelets) –Ecosystem of available component libraries –Ability to create new components to enable reuse

51 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Demo Spring Faces Combining the best of action-oriented and component-oriented development

52 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 52 Summary Spring Faces enables the best of action-oriented and component-oriented development –Work with Spring MVC and JSF in the same application Stateless Spring MVC Controllers can render transient JSF views Stateful Spring Web Flows can render JSF views and process view post backs Major JSF component libraries supported

53 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Spring 3.0 Roadmap REST support –URI templates –Content negotiation –JSON, Flex remoting Declarative Validation @Flow, as an alternative to XML Improved packaging Optimized for Java 5 and >

54 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 54 Presentation Summary Spring offers a lot for rich web application development Get involved at www.springframework.orgwww.springframework.org Get enterprise support and tools at www.springsource.com www.springsource.com Join us for a rich web training workshop at www.springsource.com/training www.springsource.com/training

55 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 55 Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 55 Questions?


Download ppt "Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Developing Rich Web Applications with."

Similar presentations


Ads by Google