Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Web Development in Java Andrew Simpson Overview • • • • • • Background Language Details Java Server Pages (JSP) Servlets Database Connectivity (JDBC) Samples and Application Background • Java is a compiled language • Can be server side or client side, servlets or applets • Java has many applications outside of web development • Java is syntactically very similar to C++ and other compiled languages Typical Java Code import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } } Primitive Data Types Keyword Description Size/Format Byte Byte-length integer 8-bit 2’s complement Short Short integer 16-bit 2’s complement Int Integer 32-bit 2’s complement Long Long integer 64-bit 2’s complement Float Single precision float 32-bit IEEE 754 Double Double precision float 64-bit IEEE 754 Char A single character 16 bit Unicode char Boolean A boolean value True or false Java’s Tools • Similar to the stdlib in C++, Java has many common data types and other procedures already implemented • AbstractCollection, AbstractList, ArrayList, Array, BitSet, Calendar, Collections, Currency, Date, Dictionary, HashMap, HashSet, LinkedHashMap, Properties, Stack, StringTokenizer, Timer, TreeMap, TreeSet, Vector Comparisons • The usual operators work on the primitive data types • Class defined comparisons are required for all other data types • Comparator lets the programmer define their own criteria • Comparator can be defined for Java to sort different structures automatically Error Handling • Try/Catch Blocks • Functions can throw exceptions Public int foo(int x, char y) thows ServletException { if (x < 0 ) throw new ServletException(“X is negative”); if (y >= ‘a’ && y <= ‘z’) throw new ServletException(“Y is not a lower case letter”); return 1; } Java Server Pages (JSP) • Similar to Perl in that it is not compiled at first, but rather compiled on the server • Can contain static HTML/XML components • Uses “special” JSP tags • Optionally can have snippets of Java in the language called scriptlets JSP Translation JSP Syntax There are multiple styles that a JSP translator recognizes to writing a JSP • Embedding JAVA into static content • Creating new dynamic tags to do embedding • Embedding static content into JAVA Embedding Java <table border="1"> <thead> <td><b> Exp</b></td> <td><b>Result</b></td> </thead> <tr> <td>\${1}</td> <td>${1}</td> </tr> <tr> <td>\${1 + 2}</td> <td>${1 + 2}</td> </tr> <tr> <td>\${1.2 + 2.3}</td> <td>${1.2 + 2.3}</td> </tr> Exp Result ${1} 1 ${1+2} 3 ${1.2+2.3} 3.5 Using Dynamic Tags <%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-exampletaglib.tld" %> <html> <head> <title>JSP 2.0 Examples - Hello World SimpleTag Handler</title> </head> <body> <h1>JSP 2.0 Examples - Hello World SimpleTag Handler</h1> <hr> <p>This tag handler simply echos "Hello, World!" It's an example of a very basic SimpleTag handler with no body.</p> <br> <b><u>Result:</u></b> <mytag:helloWorld/> </body> </html> Result: Hello, world! Tag Library (Pseudo class) package jsp2.examples.simpletag; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; import java.io.IOException; /** * SimpleTag handler that prints "Hello, world!" */ public class HelloWorldSimpleTag extends SimpleTagSupport { public void doTag() throws JspException, IOException { getJspContext().getOut().write( "Hello, world!" ); } } Embedding HTML • This is the more common form that is actually used • This form is dominated mostly by scripting • HTML is a quick and easy output method far less verbose than trying to use a servlet to write out the entire output stream Refer to embedhtml.jsp file for example Model for Server Handling Request Handling General Application Flow Using A Java Servlet • Compiled to form a class before being put on the server • Does not allow embedded code • Functions very much like a class in C++ • Has several built in functions specific to web development that are very useful JSP vs. Servlets • JSP is really just an extension of the Servlet API • Servlets should be used as an extension of web server technology, specialized controller components, database validation. • JSP handles text while Servlets can interface other programs Servlets and HTML Forms • Post vs. Get Methods • Built in handling doPost and doGet • Good for taking in information in servlet request, processing it, generating a servlet response and returning it back to the browser • Notion that server always passes a separate class object for Requests and Responses between pages which carry a persisting Session object in many cases. Session Object for Requests General Servlet Info • • • • Similar to C++ class Member variables/functions Private and Public options Usually extension of some other class, new class inherits functions of extended class JDBC • Java.sql.* package serves as that java ODBC equivalent • Basic Methods: Driver, DriverManager, Connection, Statement, PreparedStatement, Callable Statement, ResultSet • Statements allow JDBC to execute SQL commands Starting a Database • Connect by passing a driver to the DriverManager • Obtain a Connection with URL, username and password • Pass SQL commands with a Statement • Examine ResultSet if applicable • Close the database View dbsamp.jsp for startup sequence and simple query Data Navigation and Extraction • • • • Result.next(); Result.getInt(1); Result.getString(“Customer”); Result.getDate(4); (java.sql.Date not java.util.Date) Prepared Statements pstmtU = con.prepareStatement( "UPDATE myTable SET myStringColumn = ? " + "WHERE myIntColumn = ?" ); pstmtU.setString( 1, "myString" ); pstmtU.setInt( 2, 1024 ); pstmtU.executeUpdate(); Conclusion • This is a really general fast overview to outline the overarching concepts • Refer to http://java.sun.com for lots of good documentation, API descriptions • Excellent collection of basic tutorials at, http://www.jguru.com/learn/index.jsp • I will now go over a real example of a Java web based application