developing rich web applications with spring
DESCRIPTION
TRANSCRIPT
![Page 1: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/1.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Developing Rich Web Applications with Spring
Keith DonaldScott Andrews
![Page 2: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/2.jpg)
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
![Page 3: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/3.jpg)
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
![Page 4: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/4.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 4
Where We Work
![Page 5: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/5.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 5
Our Open Source Projects
![Page 6: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/6.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 6
Our Commercial Products
SpringSourcePerformance
Suite
SpringEnterprise
Edition
SpringSourceSupport
SpringSource Enterprise
![Page 7: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/7.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 7
SpringSource Enterprise
AMS
STS
RAC
![Page 8: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/8.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 8
SpringSource dm Server™
![Page 9: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/9.jpg)
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
![Page 10: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/10.jpg)
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
![Page 11: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/11.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 11
Layered Web Modules
Spring Web Modules
Spring Web MVCSpring Web MVC
Spring Web FlowSpring Web Flow Spring JavaScriptSpring JavaScript
Spring Faces Spring Faces
![Page 12: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/12.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 12
Obtaining Code
• See www.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-samples
![Page 13: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/13.jpg)
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
![Page 14: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/14.jpg)
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
![Page 15: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/15.jpg)
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
![Page 16: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/16.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 16
Example @Controller
@Controllerpublic class HotelsController {
@RequestMapping(“/hotels/list”, method=GET) public String list(Model model) { model.add(“hotels”, hotelService.findAll()); return “/hotels/list”; }
}
![Page 17: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/17.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 17
Example Request Lifecycle
DispatcherServlet
HotelsController.list(Model)
/hotels/list.jsp
/hotels/list
/hotels/list
invoke
render Model {hotels}
![Page 18: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/18.jpg)
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
![Page 19: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/19.jpg)
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
![Page 20: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/20.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 20
With Conventions
@Controllerpublic class HotelsController {
@RequestMapping public void list(Model model) { model.add(hotelService.findAll()); }
}
Mapping to class + method name
Model entry name generated from object type
Viewselectedfromrequestpath
GET /hotels/list
![Page 21: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/21.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 21
Simplest Signature Possible
@Controllerpublic class HotelsController {
@RequestMapping public List<Hotel> list() { return hotelService.findAll(); }
}
Added tothe Modelfor you
![Page 22: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/22.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 22
Multi-Action Convention Example
@Controllerpublic class HotelsController {
@RequestMapping public void index(…) {…}
@RequestMapping public void show(…) {…}
@RequestMapping public void update(…) {…}}
/hotels/index
/hotels/update
/hotels/show
![Page 23: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/23.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 23
Data Binding
@Controllerpublic 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
![Page 24: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/24.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 24
@Controller Deployment
• Found in classpath
• Auto-wired as Spring beans
<!-- Scan for components to deploy as beans --><context:component-scan base-package=”example.hotels”/>
![Page 25: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/25.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 25
Autowiring Hints
@Controllerpublic class HotelsController {
@Autowired public HotelsController(HotelService service) { }
}@Servicepublic class HibernateHotelService implements HotelService {
@Autowired public HibernateHotelService(DataSource ds) { }
@Transactional public List<Hotels> find(Criteria c) {}}
![Page 26: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/26.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 26
Mixing Annotations and XML
<beans>
<context:component-scan base-package=”example.hotels”/>
<jee:jndi-lookup id=”dataSource” jndi-name=”eis/jdbc/travelDataSource”/>
</beans>
Configure your application beans
Link with environment-specific infrastructure
![Page 27: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/27.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Demo
Essential Spring MVC Features
![Page 28: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/28.jpg)
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
![Page 29: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/29.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 29
Spring JavaScript
Spring Web Modules
Spring Web MVCSpring Web MVC
Spring Web FlowSpring Web Flow Spring JavaScript
Spring Faces Spring Faces
![Page 30: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/30.jpg)
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
![Page 31: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/31.jpg)
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
![Page 32: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/32.jpg)
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
![Page 33: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/33.jpg)
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>
<script type="text/javascript" src="/resources/dojo/dojo.js"></script>
<script type="text/javascript” src="/resources/spring/Spring-Dojo.js"></script>
![Page 34: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/34.jpg)
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
![Page 35: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/35.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 35
Adding Hover Effect
<form:input id="searchString" path="searchString"/><script type="text/javascript"> Spring.addDecoration(new Spring.ElementDecoration({ elementId : "searchString", widgetType : "dijit.form.ValidationTextBox", widgetAttrs : { promptMessage : "Search hotels by name or location.” } }));</script>
![Page 36: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/36.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 36
Ajax with Partial Rendering
<a id="moreResultsLink” href="search?q=${criteria.q}&page=${criteria.page+1}">
More Results</a><script type="text/javascript"> Spring.addDecoration(new Spring.AjaxEventDecoration({ elementId: "moreResultsLink", event: "onclick", params: { fragments: "searchResults” } }));</script>
Name of tile to re-render on server
No callback function necessary to link in response
![Page 37: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/37.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 37
Form Validation
<form:input path="creditCard"/><script type="text/javascript"> 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}” } }));</script>
![Page 38: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/38.jpg)
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');
![Page 39: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/39.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Demo
Progressive Enhancement with Spring JavaScript
![Page 40: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/40.jpg)
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
![Page 41: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/41.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 41
Spring Web Flow
Spring Web Modules
Spring Web MVCSpring Web MVC
Spring Web Flow Spring JavaScriptSpring JavaScript
Spring Faces Spring Faces
![Page 42: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/42.jpg)
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
![Page 43: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/43.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 43
Web Flow Sweet Spot
![Page 44: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/44.jpg)
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
![Page 45: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/45.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Demo
Essential Web Flow 2 features
![Page 46: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/46.jpg)
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
![Page 47: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/47.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 47
Spring Faces
Spring Web Modules
Spring Web MVCSpring Web MVC
Spring Web FlowSpring Web Flow Spring JavaScriptSpring JavaScript
Spring Faces
![Page 48: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/48.jpg)
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
![Page 49: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/49.jpg)
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
![Page 50: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/50.jpg)
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
![Page 51: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/51.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Demo
Spring FacesCombining the best of action-oriented and component-oriented development
![Page 52: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/52.jpg)
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
![Page 53: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/53.jpg)
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 >
![Page 54: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/54.jpg)
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.org
• Get enterprise support and tools at www.springsource.com
• Join us for a rich web training workshop at www.springsource.com/training
![Page 55: Developing Rich Web Applications with Spring](https://reader033.vdocuments.site/reader033/viewer/2022042623/54c850354a7959c1688b45c9/html5/thumbnails/55.jpg)
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 55Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
55
Questions?