Struts 2.0.

Slides:



Advertisements
Similar presentations
Web Development with Karsten Schulz Terp-Nielsen Master Principal Sales Consultant Oracle Denmark.
Advertisements

Apache Struts Technology
 Copyright Wipro Technologies JSP Ver 1.0 Page 1 Talent Transformation Java Server Pages.
Web Applications Development Using Coldbox Platform Eddie Johnston.
DT211/3 Internet Application Development JSP: Processing User input.
Internet Technologies 1 Master of Information System Management Java Server Faces Model/View/Controller Design Pattern for Web Development Slides.
28/1/2001 Seminar in Databases in the Internet Environment Introduction to J ava S erver P ages technology by Naomi Chen.
Struts Basics SSE USTC Qing Ding. Agenda What is and Why Struts? Struts architecture – Controller: Focus of this presentation – Model – View Struts tag.
Application Architectures Vijayan Sugumaran Department of DIS Oakland University.
Apache Struts Technology A MVC Framework for Java Web Applications.
Session-01. Layers Struts 2 Framework The struts 2 framework is used to develop MVC-based web application. Struts 1.0 was released in June The.
Session-02. Index. Jsp in Struts 2 Web.xml File in Struts 2.
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 ( )
Introduction to Struts 2.0 Jenny Ni Joey Feng Winddays Wang Hewmmi Zhu Heather Lv Software School,Fudan University 1.
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.
Java Server Pages (JSP) Presented by: Ananth Prasad & Alex Ivanov May 10, 2001.
WebWork in Action An introduction to WebWork Patrick A. Lightbody.
JavaServer Faces: The Fundamentals Compiled from Sun TechDays workshops (JSF Basics, Web-Tier Codecamp: JavaServer Faces, Java Studio Creator; IBM RAD)
11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous.
M. Taimoor Khan * Java Server Pages (JSP) is a server-side programming technology that enables the creation of dynamic,
Java Server Faces Çağatay Çivici Apache MyFaces Team Member
CSCI 6962: Server-side Design and Programming Course Introduction and Overview.
Pittsburgh Java User Group– Dec Java PureFaces: A JSF Framework Extension.
Java Beans.
Using JavaBeans and Custom Tags in JSP Lesson 3B / Slide 1 of 37 J2EE Web Components Pre-assessment Questions 1.The _____________ attribute of a JSP page.
JDeveloper 10g and JavaServer Faces: High-Performance UIs on the Web Avrom Roy-Faderman Senior Programmer May, 2006.
Design Patterns Phil Smith 28 th November Design Patterns There are many ways to produce content via Servlets and JSPs Understanding the good, the.
Basic Struts Architecture Client Server Database Request Response Control View Model Server Struts Framework.
Introduction to JavaServer Pages (JSP) Slides from Dr. Mark Llewellyn.
Java Server Pages Lecture July Java Server Pages Java Server Pages (JSPs) provide a way to separate the generation of dynamic content (java)
Java Server Pages A JSP page is a text-based document that contains two types of text: static template data, which can be expressed in any text-based format,
© 2006 IBM Corporation IBM WebSphere Portlet Factory 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.
JSF Introduction Copyright © Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission.
Lecturer: Prof. Piero Fraternali, Teaching Assistant: Alessandro Bozzon, Advanced Web Technologies: Struts–
Fall CIS 764 Database Systems Design L8. Web ….
Java Web Development with NetBeans IDE -- Kai Qian Chapter 5 JavaServer Faces (JSF) Technology.
Architectural Patterns Support Lecture. Software Architecture l Architecture is OVERLOADED System architecture Application architecture l Architecture.
JSF Framework Java Server Faces Presented by Songkran Totiya (6/10/2014)
Copyright © 2002 ProsoftTraining. All rights reserved. JavaServer Pages.
Struts Framework Anna Paščenko. What is Struts?  An open source framework for building Java web applications.
REVOLUTION TO NEXT GENERATION Struts2.0 20/02/ Avishek Arang ::
Chính phủ điện tử TS. Phạm Văn Tính Khoa CNTT, ĐH Nông Lâm TP.HCM
Web Technologies Lecture 3 Web forms. HTML5 forms A component of a webpage that has form controls – Text fields – Buttons – Checkboxes – Range controls.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Spring MVC Essentials Getting started.
CS562 Advanced Java and Internet Application Introduction to the Computer Warehouse Web Application. Java Server Pages (JSP) Technology. By Team Alpha.
JAVA BEANS JSP - Standard Tag Library (JSTL) JAVA Enterprise Edition.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Preface IIntroduction Objectives I-2 Course Overview I-3 1Oracle Application Development Framework Objectives 1-2 J2EE Platform 1-3 Benefits of the J2EE.
Struts Framework Day-2 Ashok Chakravarti. DataSource Usage Sample Struts-config.xml …
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 Programming: Advanced Topics 1 Building Web Applications Chapter 13.
Text INTRODUCTION TO ASP.NET. InterComm Campaign Guidelines CONFIDENTIAL Simply Server side language Simplified page development model Modular, well-factored,
10 Copyright © 2004, Oracle. All rights reserved. Building ADF View Components.
APACHE STRUTS ASHISH SINGH TOMAR ast2124. OUTLINE Introduction The Model-View-Controller Design Pattern Struts’ implementation of the MVC Pattern Additional.
Chapter 2 Java Struct 2. Content Basic MVC Architecture Struts 2 Overview Struts 2 - Architecture.
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.
Model View Controller. MVC is the separation of model, view and controller. It's simply a paradigm; an ideal that you should have in the back of your.
Struts 2 Development. Topics  Roles in Struts Development  Control Flow  Actions  Struts 2 Views and Target  Struts 2 Custom Tags  Validation 
J2EE Platform Overview (Application Architecture)
Java Servlets.
Unit 6-Chapter 2 Struts.
The Model Layer What is Model?
JavaServer Faces: The Fundamentals
Presentation transcript:

Struts 2.0

What is Struts? Open Source java framework for creating web applications. Action Based Framework Create web application using MVC 2 architecture Apache Struts offer two major version Struts 1.x Struts 2.0 Struts 2 = WebWork + Struts Software School ,Fudan University

What is a Web framework? Web framework is a basic readymade underlying structure, where you have to just add components related to your business. For example, if you take struts, it comes with all jars you might need to develop basic request response cycle, and with basic configuration. It provides the controller servlet or filter which will read your request and convert it to integer or float etc according to your business requirements. If there is any exception while converting, you don’t have to deal with that. Framework deals with the problem and displays you exact message. After all conversion, the framework automatically populate all your data needed from form to the java object. You don’t have to write much code to validate all your form data. Frame work provides some basic automatic validations. After you write business logic, you don’t have to write code to dispatch request to another page. Etc It forces the team to implement their code in a standard way. (helps debugging, fewer bugs etc). For Example, in struts immediate backend logic should be in action classes’s method. Action class functions intern can call other components to finish business logic. Framework might also help you develop complex User Interface easily like iterating tables, the menu etc (provide some tag libraries ) Using frameworks like struts 2.0, one need not have to have deep knowledge of Http protocol and its request and responses interfaces to write business logic.

Stucture of JSP+Servlets+JavaBeans :Model 2 architecture JSP File Java function

Why struts? What’s wrong with jsp/servlet coding? Using only Servlets – difficult to output a html and needs lot of out.printlns – hard to read and clumsy Using only JSP – added scriptlets and implicit objects into jsp - awkward to see java inside html– hard to read and maintain – useful if very small application Using JSP+ Java beans – Code inside bean and jsp to display . Good choice for small applications. But what if there is need of multiple type of views? Eg: if there is need of different language display depending on client location? - making request to a general servlet, which outputs data according to the client locale, for same url request, will be good choice – Model 2 architecture evolved. Using JSP+Servlets+JavaBeans  Model 2 architecture Request made to servlet, servlet does business calculation using simple java POJO gets the result. Also decides the view and give back the response using the view to the client. Here servlet called – Controller, Business calculation POJO called – Model and JSP called - View Uses : the business logic is separated from JSPs and JSP gets displayed depending upon the result of model (the business function).  similar behavior like all applications above, but the code is more structured now. Changing business logic will not affect view and vice versa. Struts 2.0 also uses Model 2 MVC pattern Still the question remains: Why struts?

Why struts? Free to develop & deploy –open source Stable & Mature Many supported third-party tools Feature-rich Flexible & Extendable Large User Community, Expert Developers and Committers Rich tag library (html, bean tags etc) Easy to test and debug

Struts 2.0 Complete new framework based on webwork framework. Struts 2.0 implements MVC 2 design pattern.

How does struts make code simpler? A Sample Jsp / sevrlet code: your application might have to do following in you beans or in jsp to get a value of user input in double: Jsp file: <input name=“txtAmount”> </input> In Bean or Jsp file: String strAmount = request.getParameter(“txtAmount”); double amount = 0.0; try{ double amount = Double.parseDouble(strAmount ); }catch(Exception e){ // got error so return back. // Big code for dispatching – also used in several places // return back to same page - hard coded } bean.setAmout(amount); boolean flgResult = ejbObject.processAmount(amount);; if(flgResult){ // success // dispatch request to same or different page - hard coded }else{

Using web framework like struts 2.0 it will look simpler Jsp file: <s:textfield label=“Amount" name=“amount" value="%{amount}" /> In action file you must have simple getter and setter: double amount; public double getAmount(){ return amount;} public void setAmount(double amount){this.amount = amount;} That’s it. You can directly use the amount in action method without get extra code: public String execute() throws Exception{ // use amount directly return “success”; } Also there is no need of extra code for forwarding request.Action method is just returning a string “success”

Struts Framework Features Action based framework Model 2 -MVC Implementation Internationalization(I18N) Support Rich JSP Tag Libraries Annotation and XML configuration options POJO-based actions that are easy to test Based on JSP, Servlet, XML, and Java Less xml configuration Easy to test and debug with new features Supports Java’s Write Once, Run Anywhere Philosophy Supports different model implementations (JavaBeans, EJB, etc.) Supports different presentation implementations( JSP, XML/XSLT, etc)

What are the pieces of struts? The filter dispatcher, by which all the requests to the applications gets filtered. - Controller The interceptors which called after filters, before action methods, apply common functionalities like validation, conversion etc Action classes with execute methods, usually storing and/or retrieving information from a database the view,i.e the jsp files Result will be figured out and the jsp file will be rendered.

Model Components System State Beans A set of one or more JavaBeans classes, whose properties define the current state of the system Example: shopping cart In a J2EE application a model is usually encapsulated as a layer of Session Façades

Struts 2.0 MVC Components Controller:- Filter Dispatcher:- First component that start processing that is why this type of MVC is called front controller MVC Looks at the request and apply the appropriate action. Struts framework handles all of the controller work. Its configured in web.xml Interceptors:- Can execute code before and after an Action is executed. They can be configured per action basis. Can be used for data validation, file upload, double submit guards. Software School ,Fudan University

Struts 2.0 MVC Components contd. Model:- Implemented by action class For model you can use any data access technologies like JDBC,EJB,Hibernate View Its your result part. It can be JSP,JSTL,JSF etc. Presentation part of the MVC Software School ,Fudan University

Request Lifecycle in Struts 2.0 User Sends Request Filter Dispatcher determines the appropriate action Interceptors are applied Execution of action Output Rendering Return of Request Display of result to user. Software School ,Fudan University

Struts 2.0 Architecture

Struts 2.0 Architecture Software School ,Fudan University

Why we should use Struts 2.0? Simplified Design Simplified Action Simplified Testability Better tag features Annotation introduced Easy plug-in AJAX Support

AJAX Support AJAX client side validation Remote form submission support (works with the submit tag as well) An advanced div template that provides dynamic reloading of partial HTML An advanced template that provides the ability to load and evaluate JavaScript remotely An AJAX-only tabbed Panel implementation A rich pub-sub event model Interactive auto complete tag

Struts 1.x vs Struts 2.0 How Struts 1.x and Struts 2.0 differ from each other? Configuration Action Class Dependency injection. Servlet Dependency Validation Threading model Testability Expression Language Software School ,Fudan University

Struts 1 Struts 2 Action  Action ActionForm  Action or POJO’s ActionForward  struts-config.xml  ActionServlet  RequestProcessor  Struts 2 Action Action or POJO’s Result struts.xml FilterDispatcher Interceptors

Action Is a basic unit of work POJO class which has execute method and properties Action Mapping maps an identifier to Action class Mapping also specifies Set of Result Types Set of Exception Handlers An Interceptor Stack

Example: Action Mapping <action name="Logon" class="tutorial.Logon"> <result type="redirect- action">Menu</result> <result name="input">/tutorial/Logon.jsp </result> </action>

Struts 2 <s:form action="Meeting" validate="true"> <s:token /> <s:textfield label=”Name” name=“name” /> <s:textfield label=”Date" name="date"/> <s:select label=”Invitees” name="invitees" list="employees"/> <s:textarea label=”Description” name="description" rows="4" cols="50" /> <s:submit value=”Save" method="save"/> </s:form>

Why Interceptors Many Actions share common concerns. Example: Some Actions need input validated. Other Actions may need a file upload to be preprocessed. Another Action might need protection from a double submit. Many Actions need dropdown lists and other controls pre- populated before the page displays. The framework makes it easy to share solutions to these concerns using an "Interceptor" strategy.

Interceptor in Action Life-cycle

Interceptors Interceptors can execute code before and after an Action is invoked. Most of the framework's core functionality is implemented as Interceptors. Features like double-submit guards, type conversion, object population, validation, file upload, page preparation, and more, are all implemented with the help of Interceptors. Each and every Interceptor is pluggable

Configuring Interceptors <package name="default" extends="struts-default"> <interceptors> <interceptor name="timer" class=".."/> <interceptor name="logger" class=".."/> </interceptors> <action name="login" class="tutorial.Login"> <interceptor-ref name="timer"/> <interceptor-ref name="logger"/> <result name="input">login.jsp</result> <result name="success" type="redirect-action">/secure/home</result> </action> </package>

Stacking Interceptors <package name="default" extends="struts-default"> <interceptors> <interceptor name="timer" class=".."/> <interceptor name="logger" class=".."/> <interceptor-stack name="myStack"> <interceptor-ref name="timer"/> <interceptor-ref name="logger"/> </interceptor-stack> </interceptors> <action name="login" class="tutuorial.Login"> <interceptor-ref name="myStack"/> <result name="input">login.jsp</result> <result name="success" type="redirect-action">/secure/home</result> </action> </package>

Framework Interceptor Struts 2 framework provides an extensive set of ready-to-use interceptors Parameter interceptor: Sets the request parameters onto the Action. Scope interceptor: Simple mechanism for storing Action state in the session or application scope. Validation interceptor: Performs validation using the validators defined in action- validation.xml Many more Configured in struts-default.xml

Available Interceptors exception modelDriven params prepare validation workflow fileUpload checkbox profiling roles servletConfig token

Result When an Action class method completes, it returns a String. The value of the String is used to select a result element. An action mapping will often have a set of results representing different possible outcomes. There are predefined result names (tokens) Applications can define other result names (tokens) to match specific cases.

Pre-defined result names (tokens) String SUCCESS = "success"; String NONE = "none"; String ERROR = "error"; String INPUT = "input"; String LOGIN = "login";

Result Element Provides a logical name (with name attribute) An Action can pass back a token like "success" or "error" without knowing any other implementation details. If the name attribute is not specified, the framework will give it the name "success". Provides a Result Type (with type attribute) Most results simply forward to a server page or template, but other Result Types can be used to do more interesting things. If a type attribute is not specified, the framework will use the dispatcher

Example: Multiple Results <action name="Hello"> <result>/hello/Result.jsp</result> <!-- name=”success” --> <result name="error">/hello/Error.jsp</result> <result name="input">/hello/Input.jsp</result> </action>

Predefined Result Types dispatcher freemarker velocity xslt plainText chain httpheader redirect redirectAction stream

Example: Global Result <global-results> <result name="error">/Error.jsp</result> <result name="invalid.token">/Error.jsp</result> <result name="login" type="redirect- action">Logon</result> </global-results>

Built in validators <validators> <validator name="required" class=".."/> <validator name="requiredstring" class=".."/> <validator name="int" class=".."/> <validator name="double" class=".."/> <validator name="date" class=".."/> <validator name="expression" class=".."/> <validator name="fieldexpression" class=".."/> <validator name="email" class=".."/> <validator name="url" class=".."/> <validator name="visitor" class=".."/> <validator name="conversion" class="../> <validator name="stringlength" class=".."/> <validator name="regex" class=".."/> </validators>

Defining Validation Rules Per Action class: in a file named <ActionName>-validation.xml Per Action alias: in a file named <ActionName-alias>- validation.xml Inheritance hierarchy and interfaces implemented by Action class Searches up the inheritance tree of the action to find default validations for parent classes of the Action and interfaces implemented

Bundled Plugins JSF plug-in REST plug-in Spring plug-in Tiles plug-in SiteGraph plug-in Sitemesh plug-in JasperReports plug-in JFreeChart plug-in Config Browser plug-in Struts 1 plug-in

Struts Plugins

Struts 2 Tags Generic Tags UI Tags Control Tags Data Tags Form Tags Non-Form Tags

Control Tags If Elseif Else append Generator Iterator Merge Sort subset

Data Tags A Action bean Date Debug I18n Include Param Push Set Text url property

Form Tags Autocomplete Checkbox Checkboxlist Combobox Datetimepicker Doubleselect Head File Form hidden Label Optiontransferselect Optiongroup Password Radio Select Submit Textarea Textfield Token updownselector

Form Helper Tags Actionerror actionMessage Compact Div fieldError Table tabbedPanel Tree treenode

Example: Struts 2 Form <s:actionerror/> <s:form action="Profile_update" validate="true"> <s:textfield label="Username" name="username"/> <s:password label="Password" name="password"/> <s:password label="(Repeat) Password" name="password2"/> <s:textfield label="Full Name" name="fullName"/> <s:textfield label="From Address" name="fromAddress"/> <s:textfield label="Reply To Address" name="replyToAddress"/> <s:submit value="Save" name="Save"/> <s:submit action="Register_cancel" value="Cancel" name="Cancel" onclick="form.onsubmit=null"/> </s:form>

View Reusable user interface tags that allow for easy component-oriented development using themes and templates. Bundled tags ranges from simple text fields to advanced tags like date pickers and tree views. JSTL-compatible expression language (OGNL) that exposes properties on multiple objects as if they were a single JavaBean. Pluggable Result Types that support multiple view technologies, including JSP, XSLT, FreeMarker,Velocity, PDF, and JasperReports.

Demo Application