Margus Hanni, Nortal AS Spring MVC 01.04.2013. Viited varasematele materjalidele… 2012 – TÜ - Spring MVC – Roman Tekhov.

Slides:



Advertisements
Similar presentations
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 10 Servlets and Java Server Pages.
Advertisements

Web Development with Karsten Schulz Terp-Nielsen Master Principal Sales Consultant Oracle Denmark.
Apache Struts Technology
INTRODUCTION TO ASP.NET MVC AND EXAMPLE WALKTHROUGH RAJAT ARYA EFECS - OIM DAWG – 4/21/2009 ASP.NET MVC.
 Copyright Wipro Technologies JSP Ver 1.0 Page 1 Talent Transformation Java Server Pages.
Spring MVC Margus Hanni, Nortal AS
28/1/2001 Seminar in Databases in the Internet Environment Introduction to J ava S erver P ages technology by Naomi Chen.
18-Jun-15 JSP Java Server Pages Reference: Tutorial/Servlet-Tutorial-JSP.html.
DT228/3 Web Development JSP: Directives and Scripting elements.
Java Server Pages Russell Beale. What are Java Server Pages? Separates content from presentation Good to use when lots of HTML to be presented to user,
Application Architectures Vijayan Sugumaran Department of DIS Oakland University.
Apache Struts Technology A MVC Framework for Java Web Applications.
JSP Architecture  JSP is a simple text file consisting of HTML or XML content along with JSP elements  JSP packages define the interface for the compiled.
Introduction to Java web programming Dr Jim Briggs JWP intro1.
Java Enterprise Edition Java Web Development Structure of a web project Introduction to Web Applications The first project Introduction to Java Web Development.
Struts 2.0 an Overview ( )
Struts. Agenda Preface Struts and its components An example The architecture required for Struts Applications.
UNIT-V The MVC architecture and Struts Framework.
Lecture 2 - Struts ENTERPRISE JAVA. 2 Contents  Servlet Deployment  Servlet Filters  Model View Controllers  Struts  Dependency Injection.
Netbeans – jsp.zip Introduction to JSP Netbeans – jsp.zip.
M. Taimoor Khan * Java Server Pages (JSP) is a server-side programming technology that enables the creation of dynamic,
Spring Overview, Application demo -Midhila Paineni 09/23/2011 Spring Overview, Application demo9/8/20151.
Separation of Concerns Technion – Institute of Technology Author: Gal Lalouche - Technion 2015 © 1.
Design Patterns Phil Smith 28 th November Design Patterns There are many ways to produce content via Servlets and JSPs Understanding the good, the.
Li Tak Sing COMPS311F. Static attributes in Servlets Since Servlets are also Java classes, you can also use static attributes to store values that can.
Chapter 7 Java Server Pages. Objectives Explain how the separation of concerns principle applies to JSP Describe the operation and life-cycle of a JSP.
JSP Architecture Outline  Model 1 Architecture  Model 2 Architecture.
Chapter 8 Script-free pages. Problem with scripting in JSP When you use scripting (declaration, scriplet, expressions) in your JSP, you actually put Java.
Anti Orgla, Nortal AS Spring Framework
Web Server Programming 1. Nuts and Bolts. Premises of Course Provides general introduction, no in-depth training Assumes some HTML knowledge Assumes some.
® IBM Software Group © 2007 IBM Corporation JSP Expression Language
JAVA SERVER PAGES. 2 SERVLETS The purpose of a servlet is to create a Web page in response to a client request Servlets are written in Java, with a little.
Lecturer: Prof. Piero Fraternali, Teaching Assistant: Alessandro Bozzon, Advanced Web Technologies: Struts–
JAVA SERVER PAGES CREATING DYNAMIC WEB PAGES USING JAVA James Faeldon CS 119 Enterprise Systems Programming.
Fall CIS 764 Database Systems Design L8. Web ….
16-Oct-15 JSP Implicit Objects. 2 JSP Implicit Objects are the Java objects that the JSP Container makes available to developers in each page and developer.
Java Web Development with NetBeans IDE -- Kai Qian Chapter 5 JavaServer Faces (JSF) Technology.
SE-2840 Dr. Mark L. Hornick 1 Java Server Pages. HTML/JSPs are intended to be used as the views in an MVC- based web application Model – represents an.
CSC 2720 Building Web Applications JavaServer Pages (JSP) The Basics.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Forms with Spring MVC Handling Form.
JSF Framework Java Server Faces Presented by Songkran Totiya (6/10/2014)
Introduction to Spring Web Flow Andrew Petro Software Developer Unicon, Inc. Jasig 2011 Westminster, CO 23 May 2011 © Copyright Unicon, Inc., Some.
CSC 2720 Building Web Applications Frameworks for Building Web Applications.
CS-4220 Dr. Mark L. Hornick 1 Java Server Pages. HTML/JSPs are intended to be used as the views in an MVC- based web application Model – represents an.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Spring MVC Views Rendering custom views.
Chapter 11 Invoking Java Code with JSP Scripting Elements.
INTEGRATION OF BACKBONE.JS WITH SPRING 3.1. Agenda New Features and Enhancements in Spring 3.1 What is Backbone.js and why I should use it Spring 3.1.
JSP Pages. What and Why of JSP? JSP = Java code imbedded in HTML or XML –Static portion of the page is HTML –Dynamic portion is Java Easy way to develop.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Spring MVC Essentials Getting started.
JSP BASICS AND ARCHITECTURE. Goals of JSP Simplify Creation of dynamic pages. Separate Dynamic and Static content.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Basic JSP Celsina Bignoli Problems with Servlets Servlets contain –request processing, –business logic –response generation all lumped.
MVC WITH CODEIGNITER Presented By Bhanu Priya.
Chapter 3 JSP Overview. The Problem with Servlets processing the request and generating the response are both handled by a single servlet class Java programming.
Implementation Struts Framework for well-architectured web applications Model-View-Controller design pattern.
1 Java Server Pages A Java Server Page is a file consisting of HTML or XML markup into which special tags and code blocks are inserted When the page is.
Java Server Pages. 2 Servlets The purpose of a servlet is to create a Web page in response to a client request Servlets are written in Java, with a little.
Bayu Priyambadha, S.Kom. Static content  Web Server delivers contents of a file (html) 1. Browser sends request to Web Server 3. Web Server sends HTML.
APACHE STRUTS ASHISH SINGH TOMAR ast2124. OUTLINE Introduction The Model-View-Controller Design Pattern Struts’ implementation of the MVC Pattern Additional.
SDJ INFOSOFT PVT. LTD. 2 BROWSERBROWSER JSP JavaBean DB Req Res Application Layer Enterprise server/Data Sources.
Apache Struts Technology A MVC Framework for Java Web Applications.
CS520 Web Programming Spring – Web MVC Chengyu Sun California State University, Los Angeles.
CS520 Web Programming Spring – Web MVC Chengyu Sun California State University, Los Angeles.
J2EE Platform Overview (Application Architecture)
Structure of a web application
J2EE Lecture 7: Spring – Spring MVC
Design and Maintenance of Web Applications in J2EE
CS5220 Advanced Topics in Web Programming Spring – Web MVC
The Model Layer What is Model?
CS5220 Advanced Topics in Web Programming Spring – Web MVC
Presentation transcript:

Margus Hanni, Nortal AS Spring MVC

Viited varasematele materjalidele… 2012 – TÜ - Spring MVC – Roman Tekhov

What is a Web Framework? A web framework is a software framework designed to simplify your web development life. Frameworks exist to save you from having to re-invent the wheel and help alleviate some of the overhead when you’re building a new site.

What is a Web Framework? Typically frameworks provide libraries for accessing a database, managing sessions and cookies, creating templates to display your HTML and in general, promote the reuse of code.

Spring Framework Open source application framework. Inversion of Control container (IoC). Lots of utility API-s.

Should I bother? Spring framework is still extremely popular in Java (web) applications. If you’re going to build web applications in Java then chances are that you will meet Spring.

Should I bother?

IoC in public class UserService private UserDao userDao; public User getByUserName(String name) { User user = userDao.getByUserName(name); // additional actions return user; }

IoC in public class UserService private UserDao userDao; public User getByUserName(String name) { User user = userDao.getByUserName(name); // additional actions return user; } Declare bean, Spring will create it

IoC in public class UserService private UserDao userDao; public User getByUserName(String name) { User user = userDao.getByUserName(name); // additional actions return user; } Declare dependencies, Spring will inject them

IoC in Spring Spring handles the infrastructure (bean creation, dependency lookup and injection) Developer focus on application specific logic.

Dependency injection public interface UserDao { User getByUserName(String name); public class JdbcUserDao implements UserDao { public User getByUserName(String name) { // load user from DB private UserDao userDao;

Dependency injection public interface UserDao { User getByUserName(String name); public class JdbcUserDao implements UserDao { public User getByUserName(String name) { // load user from DB private UserDao userDao; Universal abstraction

Dependency injection public interface UserDao { User getByUserName(String name); public class JdbcUserDao implements UserDao { public User getByUserName(String name) { // load user from DB private UserDao userDao; One possible implementation. Spring will create and register it

Dependency injection public interface UserDao { User getByUserName(String name); public class JdbcUserDao implements UserDao { public User getByUserName(String name) { // load user from DB private UserDao userDao; Spring can inject as an abstraction type

XML based configuration Bean can also be defined and injected in XML.

Dependency injection Your code depends on abstractions, Spring handles actual implementations. You can switch implementations easily.

What is MVC? The Model View Controller (MVC) pattern is a way of organising an application (not necessarily a web application) so that different aspects of it are kept separate. This is a good thing because:

What is MVC? It is good software engineering practice to maintain separation of concerns. An application might have more than one user interface Different developers may be responsible for different aspects of the application.

Spring MVC Spring based web framework. Implements the Model-View-Controller design pattern. Very flexible (we’ll see how exactly).

Spring MVC IoC again – framework handles the infrastructure, you focus on application specific things.

Should I bother?

Architecture - DispatcherServlet

Recall: Model-View-Controller Model - The model represents enterprise data and the business rules that govern access to and updates of this data. View - The view renders the contents of a model. Controller - The controller translates interactions with the view into actions to be performed by the model.

Recall: Model-View-Controller

public class HelloController private UserService public String hello(Model model) { User user = userService.getByUserName("Cartman"); model.addAttribute("user", user); return "hello"; }

public class HelloController private UserService public String hello(Model model) { User user = userService.getByUserName("Cartman"); model.addAttribute("user", user); return "hello"; } Declare controller

public class HelloController private UserService public String hello(Model model) { User user = userService.getByUserName("Cartman"); model.addAttribute("user", user); return "hello"; } Inject Spring resources

Method for handling requests public class HelloController private UserService public String hello(Model model) { User user = userService.getByUserName("Cartman"); model.addAttribute("user", user); return "hello"; }

public class HelloController private UserService public String hello(Model model) { User user = userService.getByUserName("Cartman"); model.addAttribute("user", user); return "hello"; } What requests to serve?

public class HelloController private UserService public String hello(Model model) { User user = userService.getByUserName("Cartman"); model.addAttribute("user", user); return "hello"; } Prepare model data

public class HelloController private UserService public String hello(Model model) { User user = userService.getByUserName("Cartman"); model.addAttribute("user", user); return "hello"; } Logical view name

Model Set of attributes that Controller collects and passes to the View.

Model Spring’s Model public String hello(Model model) { User user = userService.getByUserName(“cartman"); model.addAttribute("user", user);...

Model Spring’s Model public String hello(Model model) { User user = userService.getByUserName(“cartman"); model.addAttribute("user", user);...

Model Or plain public String hello(Map model) { User user = userService.getByUserName("cartman"); model.put("user", user);...

Model Or plain public String hello(Map model) { User user = userService.getByUserName("cartman"); model.put("user", user);...

View Any representation of output, invoked after the Controller, uses data from the Model to render itself.

View technologies Usually Java Server Pages that generate HTML. Out-of-the-box there are also PDF, XML, JSON, Excel and other views. You can create your own.

View Controller is totally decoupled from actual view public String hello() {... return "hello"; } Just a logical view name to be invoked

JSP view "hello” /WEB-INF/jsp/hello.jsp

JSP view (hello.jsp) Model attributes are accessible as EL (Expression Language) variables in JSP. JSP: Hello, ${user.fullName}! HTML: Hello, Eric Cartman!

JSON view JSON view transforms the whole model to JSON format.

JSON view Outputs the Model as JSON document. {"user":{"fullName":"Eric Cartman"}}

params= {"param1", consumes="application/json", produces="application/json")

Path public String String username, Model model) {...

Path public String String username, Model model) {...

Request public String String username, Model model) {...

Type conversion HttpServletRequest parameters, headers, paths etc are all Strings. Spring MVC allows you to convert to and from Strings automatically.

Built-in conversion There are some standard built-in public String int long longParam) {...

Type conversion You can also define your own PropertyEditors PropertyEditorSupport implements PropertyEditor

Custom types public class DateRange { private Date start; private Date end; public DateRange(Date start, Date end) { this.start = start; this.end = end; } public int getDayDifference() { // calculate }

Custom type editor public class DateRangeEditor extends PropertyEditorSupport { private DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy"); public void setAsText(String text) throws IllegalArgumentException { String[] parts = text.split("-"); Date start = dateFormat.parse(parts[0]); Date end = dateFormat.parse(parts[1]); setValue(new DateRange(start, end)); } public String getAsText() { DateRange dateRange = (DateRange) getValue(); return dateFormat.format(dateRange.getStart()) + "-" + dateFormat.format(dateRange.getEnd()); } String to custom type Custom type to String

Register and public class MyController public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(DateRange.class, new DateRangeEditor()); public String DateRange range) {... }

Method parameters It all about IoC and Convention Over Configuration. Your code simply declares what it needs from the environment, Spring makes it happen. The order is not important, the type is.

Method parameters Model/Map – model annotated HttpServletRequest, HttpServletResponse, HttpSession – it is all based on Servlet API!

Method parameters java.io.Writer / java.io.OutputStream – if you want to generate response directly in controller …

Method parameters For public String hello(Model model, Writer writer, HttpServletRequest request, HttpSession session) {...

Return values Same principle – you return what Spring awaits from you.

Return value examples String – logical view name. void If you write the response in controller If you use default/content negotiating views (like JSON earlier) …

Non-intrusive Very important feature of a framework is non-intrusiveness. Spring MVC normally lets you do stuff according to MVC pattern. But it doesn’t prevent you from violating MVC if you really want to.

No public String noView() { return "Too simple for a view"; public void noView(Writer writer) { writer.write("Too simple for a view"); }

Form First you need to give Spring a new command public String add(Model model) { model.addAttribute("user", new User()); return "add"; }

Command object public class User { private String fullName; private int age; // getters/setters...

Form JSP......

Form Spring will bind the data to our command method=RequestMethod.POST) public String save(User user) { // save user return "home"; }

Validation JSR-303 defines constraint annotations: public class private String private int age;...

method=RequestMethod.POST) public String User user, BindingResult result, Model model) { if (result.hasErrors()) { model.addAttribute("user", user); return "add"; } // save user return "home"; }

method=RequestMethod.POST) public String User user, BindingResult result, Model model) { if (result.hasErrors()) { model.addAttribute("user", user); return "add"; } // save user return "home"; } Check for validation errors. Render the same view in case of errors

Validation Show validation errors

Validation It is of course possible to define your own constraints and validators.

Sources of wisdom Spring has great documentation: Java BluePrints - Model-View-Controller html html Model-View-Controller Inversion of control