SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
JSF and AJAX with
  Netbeans 5.5

      Wanasanan Thongsongkrit
                     (NAS) :)
AJAX




       2
AJAX’s shortcoming
 Because AJAX is new, it has very inconsistent
  support among browsers.
 Also, to develop with AJAX, you need to have
  some knowledge of JavaScript, which is out of
  reach for many page authors.




                                                  3
Learning AJAX
   Fast (easy) if you                 Slow (hard) if you
       are a JavaScript guru              come from a mostly static
       have memorized the entire           HTML/CSS background
        DOM API                            are comfortable with
       own and study books on              traditional web application
        DHTML, JavaScript, CSS,             architectures built around
        AJAX and useful hacks for           an HTTP POST
        each technology                    primary use of JavaScript
                                            is cut-and-paste of cute
                                            animations and other cool
                                            in-page behaviors



                                                                          4
AJAX toolkits
   The complete list indicates some 160 toolkits exist
   Keith provided a pointer to a popularity survey of AJAX
    toolkits (as of September 23, 2006)
       Prototype (48%)
       Script.aculo.us (33%)
       Dojo (19%)
       DWR (12%)
       Moo.fx (11%)
       jQuery (7%)
       Rico (5%)
       Yahoo UI (5%)
       Atlas (4%)
       MochiKit (4%)
       XAjAX (4%)
       GWT (3%)                                              5
How to avoid learning javascript
and all toolkits?
   Use components that encapsulate AJAX inside
   Benefits
       Hide functionality behind simple building blocks
       Page author do not have to write all java scripts themselves but
        let the component do the complicated work
       Page authors have an easier time maintaining their pages
       Reusable components
   Technology used: Java Server Faces (JSF)
       author can just drag and drop the components onto a page using
        a tool such as Sun Java Studio Creator or the NetBeans IDE.



                                                                           6
Create Great-Looking GUIs With
NetBeans IDE 5.5




                                 7
NetBeans Enterprise Pack
(Beta version)




                           8
jMaki Framework (plug-in)
   JavaScript Wrapper framework for the Java platform
   wraps popular AJAX frameworks into a JSP or JSF tag
   Provides a common programming model to developers
   Familiar to Java EE application developers
   Leverages the widgets from popular frameworks (See)

     Dojo             Flickr        Google         Scriptaculus
    Mochikit          Spry          Yahoo          DHTML


   What you need is: jMaki Plug-in
    https://ajax.dev.java.net/files/documents/3115/41646/
    org-netbeans-modules-sun-jmaki.nbm

                                                                  9
Basic jMaki                             <a:ajax name="jmaki.delicious"/>
Application
Structure
jmaki.js  the JavaScript
bootstrapper and utilities that
manages
• the loading of jMaki widgets
on the client,
• makes XMLHttpRequests,
• loads additional resources,
• provides inter-widget
communication using publish
and subscribe
• stores widget instances to be
shared across an application.     config.json  configuration of      10
                                  3rd party libraries used by jMaki
jMaki:
   made up of JavaScript Runtime, the Server Side
    Runtime, and the XmlHttpProxy.




                                                     11
JavaScript Runtime (jmaki.js)
   responsible for
        bootstrapping all widgets and passing parameters provided by a
         server-side runtime.
        makes sure that each widget instance gets the correct parameters
         that were passed from the server-side runtime.
        uses default parameters (if not provided) that may then be
         customized for each widget.
        provides convenient APIs for performing an XMLHttpRequest
         and loading resources based on JSON with Padding (JSONP).
        provides APIs for a widget to load extra scripts, styles, and
         resources needed by a widget.
        provides a publish subscribe mechanism for widget-based
         communication.
        provides a common namespace to store and access widgets
        The key point of the API is that you can program to            12

          one API and access widgets from any given toolkit.
Server-Side Runtime
   responsible for
       applying changes and rendering HTML templates.
       renders all script and CSS references based on which
        type is centrally configured.
       responsible for serializing parameters (specified as
        attributes in a JSP or JSF tag) that are passed to the
        JavaScript runtime.
       capable of mapping widget values back into server-
        based model data, such as managed objects, web
        services, or databases.

                                                                 13
XmlHttpProxy
   provides a generic JSON-based access to a
    widget range of XML-based services using an
    HTTP client.
       services include RSS feeds, Yahoo services such as
        geocoding, Flickr image searches, and many more to
        come.
   allows widgets to access services in a uniform
    way by providing XSL-to-JSON transformations
    that can be easily customized.

                                                             14
How author configure
widgets’ parameters via jMaki?
   using JSON

                                jMaki Widget
                    JSON

                 (parameters)
                                  wrapped
                                  Widget




                                               15
Using Your Own Data With a
jMaki Widget
   to add your own data to a widget (JSON format):
       Using a static file
       Using a JavaServer Faces managed bean
       Using a JSP page or a servlet




                                                  16
Demo: Publish and Subscribe
 Mechanism with Yahoo Geocoder
<a:ajax name="yahoo.geocoder" service="/xhp"/>                      widget

<script type="text/javascript">                                 Subscribe
  function geoCoderListener(coordinates) {
  var targetDiv = document.getElementById("geocoder001_message");
  var reponseText = "";
  for (var i in coordinates) {
     reponseText += "Latitude=" + coordinates[i].latitude + " Longitude=" +
    coordinates[i].longitude + "<br>";
  }
  targetDiv.innerHTML = reponseText;
  }
  // subscribe to the topic '/yahoo/geocode' to which this widget publishes events
  jmaki.subscribe("/yahoo/geocoder", geoCoderListener);
</script>

<div id="geocoder001_message"></div>                       Display location
                                                                              17
Geocoder’s
Component.html (hidden)
<div id="${uuid}">
<form
 onsubmit="jmaki.attributes.get('${uuid}').getCoordinates();
 return false;">
  Location: <input type="text" id="${uuid}_location">
  <input type="button" value="Get Coordinates"
  onclick="jmaki.attributes.get('${uuid}').getCoordinates();">
</form>
</div>

                                                          18
Geocoder’s
Component.js (hidden)
if (typeof jmaki.GeoCoder == 'undefined'){

 jmaki.GeoCoder = function(_widget) {
  var topic = "/yahoo/geocoder";

  var uuid = _widget.uuid;
  var service = _widget.service;
  if (typeof widget.args != 'undefined' &&
     typeof widget.args.topic != 'undefined') {
        topic = widget.args.topic;             uses default
   }                                           parameters


                                                              19
Geocoder’s
Component.js (hidden)
var location;
this.getCoordinates = function() {       Wrapped function
   location =
   encodeURIComponent(document.getElementById(uuid +
   "_location").value);

  var encodedLocation = encodeURIComponent("location=" +
  location);

  var url = service + "?key=yahoogeocoder&urlparams=" +
  encodedLocation;

  jmaki.doAjax({url: url, callback: function(req) { var _req=req;
  postProcess(_req);}});

 }                                                                  20
Componet.js (hidden)
function postProcess(req) {
    if (req.readyState == 4) {
       if (req.status == 200) {
          var response = eval("(" + req.responseText + ")");
          jmaki.publish(topic, response.coordinates);
       }
    }                                               Publish
  }                                                 response
}
}

var geocoder = new jmaki.GeoCoder(widget);

// add to the instance map for later refernece
jmaki.attributes.put(widget.uuid, geocoder);
                                                               21
References
 https://ajax.dev.java.net/
 https://ajax.dev.java.net/download.html
 http://javaserver.org/jmaki/
 http://www.netbeans.org/
 http://java.sun.com/javaee/javaserverfaces
  /ajax/tutorial.jsp
 http://www.javapassion.com/handsonlabs/ajaxj
  makiintro/
 http://www.google.com/apis/maps/
                                             22

Contenu connexe

Tendances

Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010arif44
 
Project Presentation on Advance Java
Project Presentation on Advance JavaProject Presentation on Advance Java
Project Presentation on Advance JavaVikas Goyal
 
NetBeans Plugin Development Workshop
NetBeans Plugin Development WorkshopNetBeans Plugin Development Workshop
NetBeans Plugin Development Workshopelliando dias
 
Advance Java Topics (J2EE)
Advance Java Topics (J2EE)Advance Java Topics (J2EE)
Advance Java Topics (J2EE)slire
 
Node.js Development with Apache NetBeans
Node.js Development with Apache NetBeansNode.js Development with Apache NetBeans
Node.js Development with Apache NetBeansRyan Cuprak
 
Advanced java
Advanced java Advanced java
Advanced java NA
 
Free Ebooks Download edhole.com
Free Ebooks Download edhole.comFree Ebooks Download edhole.com
Free Ebooks Download edhole.comEdhole.com
 
JavaScript Interview Questions and Answers | Full Stack Web Development Train...
JavaScript Interview Questions and Answers | Full Stack Web Development Train...JavaScript Interview Questions and Answers | Full Stack Web Development Train...
JavaScript Interview Questions and Answers | Full Stack Web Development Train...Edureka!
 
Advance java Online Training in Hyderabad
Advance java Online Training in HyderabadAdvance java Online Training in Hyderabad
Advance java Online Training in HyderabadUgs8008
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with GradleRyan Cuprak
 
Node.js Course 1 of 2 - Introduction and first steps
Node.js Course 1 of 2 - Introduction and first stepsNode.js Course 1 of 2 - Introduction and first steps
Node.js Course 1 of 2 - Introduction and first stepsManuel Eusebio de Paz Carmona
 
108 advancedjava
108 advancedjava108 advancedjava
108 advancedjavaAnil Kumar
 
Java EE 01-Servlets and Containers
Java EE 01-Servlets and ContainersJava EE 01-Servlets and Containers
Java EE 01-Servlets and ContainersFernando Gil
 

Tendances (19)

Struts N E W
Struts N E WStruts N E W
Struts N E W
 
Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010
 
Java 8 Overview
Java 8 OverviewJava 8 Overview
Java 8 Overview
 
Project Presentation on Advance Java
Project Presentation on Advance JavaProject Presentation on Advance Java
Project Presentation on Advance Java
 
NetBeans Plugin Development Workshop
NetBeans Plugin Development WorkshopNetBeans Plugin Development Workshop
NetBeans Plugin Development Workshop
 
Advance Java Topics (J2EE)
Advance Java Topics (J2EE)Advance Java Topics (J2EE)
Advance Java Topics (J2EE)
 
Node.js Development with Apache NetBeans
Node.js Development with Apache NetBeansNode.js Development with Apache NetBeans
Node.js Development with Apache NetBeans
 
Advanced java
Advanced java Advanced java
Advanced java
 
Free Ebooks Download edhole.com
Free Ebooks Download edhole.comFree Ebooks Download edhole.com
Free Ebooks Download edhole.com
 
JavaScript Interview Questions and Answers | Full Stack Web Development Train...
JavaScript Interview Questions and Answers | Full Stack Web Development Train...JavaScript Interview Questions and Answers | Full Stack Web Development Train...
JavaScript Interview Questions and Answers | Full Stack Web Development Train...
 
Java J2EE Complete Syllabus Checklist
Java J2EE Complete Syllabus ChecklistJava J2EE Complete Syllabus Checklist
Java J2EE Complete Syllabus Checklist
 
Advance java Online Training in Hyderabad
Advance java Online Training in HyderabadAdvance java Online Training in Hyderabad
Advance java Online Training in Hyderabad
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
Node.js Course 1 of 2 - Introduction and first steps
Node.js Course 1 of 2 - Introduction and first stepsNode.js Course 1 of 2 - Introduction and first steps
Node.js Course 1 of 2 - Introduction and first steps
 
Node.js Course 2 of 2 - Advanced techniques
Node.js Course 2 of 2 - Advanced techniquesNode.js Course 2 of 2 - Advanced techniques
Node.js Course 2 of 2 - Advanced techniques
 
108 advancedjava
108 advancedjava108 advancedjava
108 advancedjava
 
Java 9 preview
Java 9 previewJava 9 preview
Java 9 preview
 
Java 9 Features
Java 9 FeaturesJava 9 Features
Java 9 Features
 
Java EE 01-Servlets and Containers
Java EE 01-Servlets and ContainersJava EE 01-Servlets and Containers
Java EE 01-Servlets and Containers
 

En vedette (13)

eureka09
eureka09eureka09
eureka09
 
User_Manual
User_ManualUser_Manual
User_Manual
 
Tutorial%20-%20Content%20Management%20System
Tutorial%20-%20Content%20Management%20SystemTutorial%20-%20Content%20Management%20System
Tutorial%20-%20Content%20Management%20System
 
Intro
IntroIntro
Intro
 
dr_1
dr_1dr_1
dr_1
 
toc
toctoc
toc
 
mastercam_full
mastercam_fullmastercam_full
mastercam_full
 
cgipmtut
cgipmtutcgipmtut
cgipmtut
 
php_mysql_2006
php_mysql_2006php_mysql_2006
php_mysql_2006
 
INLS890_ProjectPlan
INLS890_ProjectPlanINLS890_ProjectPlan
INLS890_ProjectPlan
 
March2004-CPerlRun
March2004-CPerlRunMarch2004-CPerlRun
March2004-CPerlRun
 
TemplateTutorial
TemplateTutorialTemplateTutorial
TemplateTutorial
 
IJTC%202009%20JRuby
IJTC%202009%20JRubyIJTC%202009%20JRuby
IJTC%202009%20JRuby
 

Similaire à netbeans

GDSC NITS Presents Kickstart into ReactJS
GDSC NITS Presents Kickstart into ReactJSGDSC NITS Presents Kickstart into ReactJS
GDSC NITS Presents Kickstart into ReactJSPratik Majumdar
 
Soa development using javascript
Soa development using javascriptSoa development using javascript
Soa development using javascriptDsixE Inc
 
Ajax tutorial
Ajax tutorialAjax tutorial
Ajax tutorialKat Roque
 
Starting with jQuery
Starting with jQueryStarting with jQuery
Starting with jQueryAnil Kumar
 
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationAndrew Rota
 
Vaadin 7 CN
Vaadin 7 CNVaadin 7 CN
Vaadin 7 CNjojule
 
Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)Hamed Hatami
 
Building Applications Using Ajax
Building Applications Using AjaxBuilding Applications Using Ajax
Building Applications Using Ajaxs_pradeep
 
Intro to React - Featuring Modern JavaScript
Intro to React - Featuring Modern JavaScriptIntro to React - Featuring Modern JavaScript
Intro to React - Featuring Modern JavaScriptjasonsich
 
Seven Versions of One Web Application
Seven Versions of One Web ApplicationSeven Versions of One Web Application
Seven Versions of One Web ApplicationYakov Fain
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitIMC Institute
 
JavaScript on the server - Node.js
JavaScript on the server - Node.jsJavaScript on the server - Node.js
JavaScript on the server - Node.jsRody Middelkoop
 

Similaire à netbeans (20)

Scripting GeoServer
Scripting GeoServerScripting GeoServer
Scripting GeoServer
 
GDSC NITS Presents Kickstart into ReactJS
GDSC NITS Presents Kickstart into ReactJSGDSC NITS Presents Kickstart into ReactJS
GDSC NITS Presents Kickstart into ReactJS
 
Jquery beltranhomewrok
Jquery beltranhomewrokJquery beltranhomewrok
Jquery beltranhomewrok
 
Jquery beltranhomewrok
Jquery beltranhomewrokJquery beltranhomewrok
Jquery beltranhomewrok
 
Soa development using javascript
Soa development using javascriptSoa development using javascript
Soa development using javascript
 
Ajax tutorial
Ajax tutorialAjax tutorial
Ajax tutorial
 
Starting with jQuery
Starting with jQueryStarting with jQuery
Starting with jQuery
 
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP Application
 
Vaadin 7 CN
Vaadin 7 CNVaadin 7 CN
Vaadin 7 CN
 
Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)
 
Building Applications Using Ajax
Building Applications Using AjaxBuilding Applications Using Ajax
Building Applications Using Ajax
 
Jquery
JqueryJquery
Jquery
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Vaadin & Web Components
Vaadin & Web ComponentsVaadin & Web Components
Vaadin & Web Components
 
Intro to React - Featuring Modern JavaScript
Intro to React - Featuring Modern JavaScriptIntro to React - Featuring Modern JavaScript
Intro to React - Featuring Modern JavaScript
 
Seven Versions of One Web Application
Seven Versions of One Web ApplicationSeven Versions of One Web Application
Seven Versions of One Web Application
 
JSF2
JSF2JSF2
JSF2
 
Introduction to ajax
Introduction to ajaxIntroduction to ajax
Introduction to ajax
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
 
JavaScript on the server - Node.js
JavaScript on the server - Node.jsJavaScript on the server - Node.js
JavaScript on the server - Node.js
 

Plus de tutorialsruby

&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />tutorialsruby
 
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>tutorialsruby
 
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>tutorialsruby
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />tutorialsruby
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />tutorialsruby
 
Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0tutorialsruby
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269tutorialsruby
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008tutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheetstutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheetstutorialsruby
 

Plus de tutorialsruby (20)

&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
 
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
 
xhtml-documentation
xhtml-documentationxhtml-documentation
xhtml-documentation
 
xhtml-documentation
xhtml-documentationxhtml-documentation
xhtml-documentation
 
CSS
CSSCSS
CSS
 
CSS
CSSCSS
CSS
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
 
HowTo_CSS
HowTo_CSSHowTo_CSS
HowTo_CSS
 
HowTo_CSS
HowTo_CSSHowTo_CSS
HowTo_CSS
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
 

Dernier

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 

Dernier (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

netbeans

  • 1. JSF and AJAX with Netbeans 5.5 Wanasanan Thongsongkrit (NAS) :)
  • 2. AJAX 2
  • 3. AJAX’s shortcoming  Because AJAX is new, it has very inconsistent support among browsers.  Also, to develop with AJAX, you need to have some knowledge of JavaScript, which is out of reach for many page authors. 3
  • 4. Learning AJAX  Fast (easy) if you  Slow (hard) if you  are a JavaScript guru  come from a mostly static  have memorized the entire HTML/CSS background DOM API  are comfortable with  own and study books on traditional web application DHTML, JavaScript, CSS, architectures built around AJAX and useful hacks for an HTTP POST each technology  primary use of JavaScript is cut-and-paste of cute animations and other cool in-page behaviors 4
  • 5. AJAX toolkits  The complete list indicates some 160 toolkits exist  Keith provided a pointer to a popularity survey of AJAX toolkits (as of September 23, 2006)  Prototype (48%)  Script.aculo.us (33%)  Dojo (19%)  DWR (12%)  Moo.fx (11%)  jQuery (7%)  Rico (5%)  Yahoo UI (5%)  Atlas (4%)  MochiKit (4%)  XAjAX (4%)  GWT (3%) 5
  • 6. How to avoid learning javascript and all toolkits?  Use components that encapsulate AJAX inside  Benefits  Hide functionality behind simple building blocks  Page author do not have to write all java scripts themselves but let the component do the complicated work  Page authors have an easier time maintaining their pages  Reusable components  Technology used: Java Server Faces (JSF)  author can just drag and drop the components onto a page using a tool such as Sun Java Studio Creator or the NetBeans IDE. 6
  • 7. Create Great-Looking GUIs With NetBeans IDE 5.5 7
  • 9. jMaki Framework (plug-in)  JavaScript Wrapper framework for the Java platform  wraps popular AJAX frameworks into a JSP or JSF tag  Provides a common programming model to developers  Familiar to Java EE application developers  Leverages the widgets from popular frameworks (See) Dojo Flickr Google Scriptaculus Mochikit Spry Yahoo DHTML  What you need is: jMaki Plug-in https://ajax.dev.java.net/files/documents/3115/41646/ org-netbeans-modules-sun-jmaki.nbm 9
  • 10. Basic jMaki <a:ajax name="jmaki.delicious"/> Application Structure jmaki.js  the JavaScript bootstrapper and utilities that manages • the loading of jMaki widgets on the client, • makes XMLHttpRequests, • loads additional resources, • provides inter-widget communication using publish and subscribe • stores widget instances to be shared across an application. config.json  configuration of 10 3rd party libraries used by jMaki
  • 11. jMaki:  made up of JavaScript Runtime, the Server Side Runtime, and the XmlHttpProxy. 11
  • 12. JavaScript Runtime (jmaki.js)  responsible for  bootstrapping all widgets and passing parameters provided by a server-side runtime.  makes sure that each widget instance gets the correct parameters that were passed from the server-side runtime.  uses default parameters (if not provided) that may then be customized for each widget.  provides convenient APIs for performing an XMLHttpRequest and loading resources based on JSON with Padding (JSONP).  provides APIs for a widget to load extra scripts, styles, and resources needed by a widget.  provides a publish subscribe mechanism for widget-based communication.  provides a common namespace to store and access widgets The key point of the API is that you can program to 12 one API and access widgets from any given toolkit.
  • 13. Server-Side Runtime  responsible for  applying changes and rendering HTML templates.  renders all script and CSS references based on which type is centrally configured.  responsible for serializing parameters (specified as attributes in a JSP or JSF tag) that are passed to the JavaScript runtime.  capable of mapping widget values back into server- based model data, such as managed objects, web services, or databases. 13
  • 14. XmlHttpProxy  provides a generic JSON-based access to a widget range of XML-based services using an HTTP client.  services include RSS feeds, Yahoo services such as geocoding, Flickr image searches, and many more to come.  allows widgets to access services in a uniform way by providing XSL-to-JSON transformations that can be easily customized. 14
  • 15. How author configure widgets’ parameters via jMaki?  using JSON jMaki Widget JSON (parameters) wrapped Widget 15
  • 16. Using Your Own Data With a jMaki Widget  to add your own data to a widget (JSON format):  Using a static file  Using a JavaServer Faces managed bean  Using a JSP page or a servlet 16
  • 17. Demo: Publish and Subscribe Mechanism with Yahoo Geocoder <a:ajax name="yahoo.geocoder" service="/xhp"/> widget <script type="text/javascript"> Subscribe function geoCoderListener(coordinates) { var targetDiv = document.getElementById("geocoder001_message"); var reponseText = ""; for (var i in coordinates) { reponseText += "Latitude=" + coordinates[i].latitude + " Longitude=" + coordinates[i].longitude + "<br>"; } targetDiv.innerHTML = reponseText; } // subscribe to the topic '/yahoo/geocode' to which this widget publishes events jmaki.subscribe("/yahoo/geocoder", geoCoderListener); </script> <div id="geocoder001_message"></div> Display location 17
  • 18. Geocoder’s Component.html (hidden) <div id="${uuid}"> <form onsubmit="jmaki.attributes.get('${uuid}').getCoordinates(); return false;"> Location: <input type="text" id="${uuid}_location"> <input type="button" value="Get Coordinates" onclick="jmaki.attributes.get('${uuid}').getCoordinates();"> </form> </div> 18
  • 19. Geocoder’s Component.js (hidden) if (typeof jmaki.GeoCoder == 'undefined'){ jmaki.GeoCoder = function(_widget) { var topic = "/yahoo/geocoder"; var uuid = _widget.uuid; var service = _widget.service; if (typeof widget.args != 'undefined' && typeof widget.args.topic != 'undefined') { topic = widget.args.topic; uses default } parameters 19
  • 20. Geocoder’s Component.js (hidden) var location; this.getCoordinates = function() { Wrapped function location = encodeURIComponent(document.getElementById(uuid + "_location").value); var encodedLocation = encodeURIComponent("location=" + location); var url = service + "?key=yahoogeocoder&urlparams=" + encodedLocation; jmaki.doAjax({url: url, callback: function(req) { var _req=req; postProcess(_req);}}); } 20
  • 21. Componet.js (hidden) function postProcess(req) { if (req.readyState == 4) { if (req.status == 200) { var response = eval("(" + req.responseText + ")"); jmaki.publish(topic, response.coordinates); } } Publish } response } } var geocoder = new jmaki.GeoCoder(widget); // add to the instance map for later refernece jmaki.attributes.put(widget.uuid, geocoder); 21
  • 22. References  https://ajax.dev.java.net/  https://ajax.dev.java.net/download.html  http://javaserver.org/jmaki/  http://www.netbeans.org/  http://java.sun.com/javaee/javaserverfaces /ajax/tutorial.jsp  http://www.javapassion.com/handsonlabs/ajaxj makiintro/  http://www.google.com/apis/maps/ 22