280 likes | 424 Vues
This guide provides an overview of web development using Java, focusing on Java Server Pages (JSP), Servlets, and JDBC for database connectivity. It outlines the language details, comparing Java's syntax to C++ and its usage in both server-side and client-side applications. The document explains the structure of a simple Java servlet and presents how JSP can embed Java code within static HTML. Additionally, error handling with try/catch blocks and the utility of Java’s built-in data types are discussed, along with typical sample implementations. ###
E N D
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>"); } }
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 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>
Using Dynamic Tags <%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.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
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.
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