Boston Computing Review - Java Server Pages

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Boston Computing Review - Java Server Pages - Presentation Transcript

    1. Boston Computing Review Pragmatic Architectural Overview Java Server Pages John Brunswick
      • Why? This is so old school.
      • History and Pains of Web Development
      • Foundation
      • Development Tools
      • Anatomy
      • Nuts and Bolts
      • Over the Horizon
    2. Why? It is not sexy.
      • Presentation Layer for J2EE
      • Nobody owns it
      • It is here and not going anywhere
      • What do non-Microsoft projects get developed with? Yup.
        • Oracle, BEA, IBM, SAP, EMC, HP… and on and on.
      • Want to code in the enterprise?
        • API heaven
      • Frameworks
        • JSF and others
    3. History Step into the time machine
    4. Common Gateway Interface (CGI)
      • CGI is not a programming language
      • Most CGI programs are written in Perl
      • Issues
        • Scalability
        • Security
        • Debugging
        • Seperation of Presentation and Logic
    5. Classic ASP (3.0)
      • Single platform (MS)
      • Mixed presentation and logic
      • Run time interpretation
    6. Hypertext Preprocessor (PHP)
      • Lacks OO Design
      • Runtime interpretation
      • Mixed presentation and logic
    7. Coldfusion Markup Language (CFM)
      • Depth
      • Scalability
      • Enterprise Interoperability
    8. ASP.NET
      • Platform (MS)
      • Lacks MVC
      • Cost
    9. Emerging Web Application Frameworks
      • ROR
      • Django
    10. Digging In
    11. Foundation Overview
      • JSP is actually servlets!
      • Application / HTTP Server
      • Acronym Overload
      • How do we develop?
      • Application Anatomy 101
      • JDBC
    12. Servlet JSP
      • HelloWorld Servlet
      • package org.apache.jsp;
      • import javax.servlet.*;
      • import javax.servlet.http.*;
      • import javax.servlet.jsp.*;
      • public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase
      • implements org.apache.jasper.runtime.JspSourceDependent {
      • private static java.util.Vector _jspx_dependants;
      • public java.util.List getDependants() {
      • return _jspx_dependants;
      • }
      • public void _jspService(HttpServletRequest request, HttpServletResponse response)
      • throws java.io.IOException, ServletException {
      • JspFactory _jspxFactory = null;
      • PageContext pageContext = null;
      • HttpSession session = null;
      • ServletContext application = null;
      • ServletConfig config = null;
      • JspWriter out = null;
      • Object page = this;
      • JspWriter _jspx_out = null;
      • PageContext _jspx_page_context = null;
      • try {
      • _jspxFactory = JspFactory.getDefaultFactory();
      • response.setContentType("text/html");
      • pageContext = _jspxFactory.getPageContext(this, request, response,
      • null, true, 8192, true);
      • _jspx_page_context = pageContext;
      • application = pageContext.getServletContext();
      • config = pageContext.getServletConfig();
      • session = pageContext.getSession();
      • out = pageContext.getOut();
      • _jspx_out = out;
      • out.write(&quot;<html> &quot;);
      • out.write(&quot; <head> &quot;);
      • out.write(&quot; <title>JSP and Beyond Hello World</title> &quot;);
      • out.write(&quot; </head> &quot;);
      • out.write(&quot; <body> &quot;);
      • out.write(&quot; Hello World &quot;);
      • out.write(&quot; </body> &quot;);
      • out.write(&quot;</html> &quot;);
      • } catch (Throwable t) {
      • if (!(t instanceof SkipPageException)){
      • out = _jspx_out;
      • if (out != null && out.getBufferSize() != 0)
      • out.clearBuffer();
      • if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
      • }
      • } finally {
      • if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
      • }
      • }
      • }
      • <html>
      • <head>
      • <title>JSP and Beyond Hello World</title>
      • </head>
      • <body>
      • Hello World
      • </body>
      • </html>
    13. Server Architecture (container)
    14. Application Servers
      • Tomcat
        • Apache who?
      • JBOSS
      • Resin
      • BEA WebLogic
      • WebSphere
      • JRUN… (not so much)
    15. Hmmm… Acronyms Abound
      • JDK
      • J2SE
      • SDK
      • JRE
      • J2EE
      • Java 5
      • JVM
    16. Start Coding
      • Netbeans
      • Eclipse
    17. Anatomy 101
      • YourWebApp/
        • Within this directory all static content should reside. This includes JSP, HTML and image files.
      • YourWebApp /WEB-INF/
        • The Web Application deployment descriptor (web.xml) lives within this directory. This deployment descriptor maintains all of your application settings that dictate how the container delivers your application. This directory is private and not externally accessible by end users.
      • YourWebApp /WEB-INF/classes
        • Java classes and servlets should reside in this directory. This directory is private and not externally accessible by end users.
      • YourWebApp /WEB-INF/lib
        • Place JAR file and tag libraries here. This directory is private and not externally accessible by end users.
      • FYI…. During application development it is most advantageous to work with your application files in what is called an exploded format. Once the application is ready for distribution it can be packaged into a WAR file for easy portability.
    18. WARs JARs and EARs?
      • WAR
        • One big zip file for an application, no fighting!
      • JAR
        • Zip file with classes
      • EAR
        • Lots of WARs, JARs
        • For Enterprise (not Kirk and Spock)
    19. JSP Dissected
    20. Page Elements
    21. Scriptlet <% … %>
      • Inline Code (yuck)
      <table> <% String months[] = {&quot;Jan&quot;, &quot;Feb&quot;, &quot;Mar&quot;, &quot;Apr&quot;, &quot;May&quot;, &quot;Jun&quot;, &quot;July&quot;, &quot;Aug&quot;, &quot;Sep&quot;, &quot;Oct&quot;, &quot;Nov&quot;, &quot;Dec&quot;}; for(int i = 0; i < months.length; i++ ) { %> <tr> <td> Month: <%= months[i] %> </td> </tr> <% } %> </table>
    22. Directives <%@ … %>
      • Directives do not send output to the screen, but set configuration values for the JSP page
      • Page
        • <%@ page import=&quot;java.util.*, java.lang.*&quot; %>
        • errorPage / isErrorPage
        • Buffering… etc…
      • Include Directive
      • Taglib Directive
      • http://java.sun.com/products/jsp/syntax/1.2/syntaxref1210.html .
    23. Expression <%= … %>
      • <%@ page import=&quot;java.util.*&quot; %>
      • <%! String sName = &quot;Bill Smith&quot;; %>
      • <table>
      • <tr>
      • <td>
      • Welcome <%= sName %> !
      • </td>
      • </tr>
      • </table>
      • Straight to screen output
    24. Decleration <%! … %>
      • Used to set variables and define methods within the JSP
      <%@ page import=&quot;java.util.*&quot; %> <%! // This is the method that will return the current time String GetCurrentTime() { Date date = new Date(); return date.toString(); } %> <table> <tr> <td> What time is it? <%= GetCurrentTime() %> </td> </tr> </table>
    25. Comment <%-- … --%>
      • With the JSP style comments we can keep comments inline with the code, but they will not be sent to the requestor’s browser.
    26. Programming Elements
    27. Implicit Objects
      • Request
        • Cookies, querystring variables and other pieces of data are readily accessible from the request object.
      • Response
        • Response is used to send information to the client. A good example might be setting a cookie. The following block of code send a cookie to the client that can be retrieved at a later time <% response.addCookie(myCookie) %>
      • Session
        • The session object is useful for storing small amounts of information that will be accessible throughout a users visit to your application or web site. A good example might be their user ID so you will not have to continually query a database to find this information
      • Etc…..
    28. Coffee Time - JavaBeans
      • Provide a simple interface for storing, retrieving information and other complex operations through a very simple XML tag
      • By using this level of integration with JSP JavaBeans can help us to separate the presentation (HTML) from the business logic that the Beans handle
      • Value VS Utility
      • Reuse
      • Reuse
    29. Get and Set (encapsulate)
      • public class OurSampleBean
      • {
      • String sOurTestValue;
      • public OurSampleBean() {
      • } public String getSometValue()
      • {
      • Return someValue;
      • }
      • public void setSomeValue (String sSomeValue)
      • {
      • this.value = sSomeValue;
      • }
      • }
    30. JDBC – Get our DB on
      • // Import the namespace for the database connection
      • import java.sql
      • // Create the database connection object
      • Connection cnDB = null;
      • // Load the driver that will be used for the database connection
      • Class.forName(&quot;com.mysql.jdbc.Driver&quot;).newInstance();
      • // Establish the connection
      • cnDB = DriverManager.getConnection(&quot;jdbc:mysql:///DatabaseName&quot;,&quot;user&quot;, &quot;password&quot;);
    31. JDBC Cont…
      • // Prepare a statement object that will be used to request the data
      • Statement stmt = cnDB.createStatement();
      • // Create an object to hold the results set
      • ResultSet results;
      • // Populate the results object with the data from the SQL statement above
      • results = stmt.executeQuery(&quot;SELECT * FROM tblCustomer ORDER BY CustomerName&quot;);
    32. One more for the road
      • // Obtain a statement object
      • Statement stmt = cnDB.createStatement();
      • // Execute the block of SQL code
      • stmt.executeUpdate(&quot;INSERT INTO tblCustomer VALUES ('Smith', 'Boston', 2006)&quot;);
      • // Close the result set
      • stmt.close();
      • // Close the connection
      • cnDB.close();
    33. JSTL – Messy but fun
      • Hmmm… CFM anyone?
      • Good for prototyping
      • <c:if test=&quot;${book.orderQuantity > book.inStock}&quot;> The book <c:out value=&quot;${book.title}&quot;/> is currently out of stock. </c:if>
    34. And then some…
    35. And then…
      • Error handling
        • <%@ page errorPage=&quot;CatchError.jsp&quot;%>
        • <%@ page isErrorPage=&quot;true&quot; %>
      • Email
        • Grab a library
      • File upload
        • Use a bean
    36. Next Level
      • MVC and Frameworks
        • JSF, Struts
    37. Thanks for your time!

    + John.BrunswickJohn.Brunswick, 2 years ago

    custom

    1235 views, 0 favs, 0 embeds more stats

    This presentation gives a high level overview of th more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1235
      • 1235 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 113
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories