Date post: | 28-Jan-2015 |
Category: |
Documents |
Upload: | sampetruda |
View: | 108 times |
Download: | 2 times |
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Developing Rich Web Applications with Spring
Keith DonaldScott Andrews
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
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
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 4
Where We Work
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 5
Our Open Source Projects
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 6
Our Commercial Products
SpringSourcePerformance
Suite
SpringEnterprise
Edition
SpringSourceSupport
SpringSource Enterprise
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 7
SpringSource Enterprise
AMS
STS
RAC
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 8
SpringSource dm Server™
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
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
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
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
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
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
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
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”; }
}
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}
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
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
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
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
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
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
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”/>
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) {}}
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
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Demo
Essential Spring MVC Features
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
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
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
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
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
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>
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
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>
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
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>
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');
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Demo
Progressive Enhancement with Spring JavaScript
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
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
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
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 43
Web Flow Sweet Spot
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
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Demo
Essential Web Flow 2 features
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
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
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
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
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
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
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
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 >
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
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?