Java Web Programming with Eclipse

java web programming with eclipse tomcat and java web programming with eclipse database connection pooling pdf free download
RyanCanon Profile Pic
RyanCanon,United Arab Emirates,Teacher
Published Date:21-07-2017
Your Website URL(Optional)
Comment
Java Web Programming with Eclipse David Turner, Ph.D. Department of Computer Science and Engineering California State University San Bernardino Jinsok Chae, Ph.D. Department of Computer Science and Engineering University of Incheon c Copyright 2009 by David Turner and Jinseok Chae Version December 1, 2009Preface The purpose of the book is to introduce students to web application devel- opment in Java with the use of Eclipse. The book assumes a familiarity with HTML and the Java programming language. The book is in cookbook format in that it provides instructions on how to construct solutions to various problems. The intent is to show students how to accomplish typical Web development tasks in the Java language. In later chapters of the book, detailed instructions are omitted if they duplicate instructions in an earlier chapter. This assumes the student can recall or refer back to the previous instructions. Unguided exercises are also provided so that students can apply what they have covered in the main text. The book omits many details and explanations. For these, the reader will need to consult online documentation or search the Web for other tutorials and articles. Each chapter contains a list of references that the reader may nd useful for lling in these missing details. This is an active book in the sense that the reader is expected to carry out the procedures described. The code examples provided in each chapter are not self-contained; they need to be developed by progressing sequentially through the chapters. 12 December 1, 2009Acknowledgements The following people have helped to create this book.  Eyob Zellke  Patrick O'Conner  The students of Winter quarter 2008 of Server Programming at CSUSB 34 December 1, 2009Contents 1 Introduction to Java Web Application Development 11 1.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3 Computer Languages Used for Web Application Development 12 1.4 The Servlet API . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.5 Java 2 Enterprise Edition (J2EE) . . . . . . . . . . . . . . . . 13 1.6 Java Server Pages (JSP) . . . . . . . . . . . . . . . . . . . . . 14 1.7 Rich Site Summary (RSS) . . . . . . . . . . . . . . . . . . . . 14 1.8 Representational State Transfer (REST) . . . . . . . . . . . . 15 1.9 Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.10 Integrated Development Environments . . . . . . . . . . . . . 15 1.11 Ant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.12 Web Application Architecture . . . . . . . . . . . . . . . . . . 16 1.13 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.14 Web Application Servers . . . . . . . . . . . . . . . . . . . . . 18 1.15 Database Servers . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.16 Development versus Deployment Environments . . . . . . . . 18 2 Java Setup 21 2.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.4 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3 Eclipse Setup 23 3.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.2 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.4 Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 56 3.5 Con gure File Types . . . . . . . . . . . . . . . . . . . . . . . 24 3.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4 The Apache Tomcat Web Container 27 4.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.2 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.3 Install Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.4 Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.5 Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.6 Con gure Firewall . . . . . . . . . . . . . . . . . . . . . . . . 30 4.7 Manager Application . . . . . . . . . . . . . . . . . . . . . . . 31 4.8 Tomcat Documentation . . . . . . . . . . . . . . . . . . . . . 31 4.9 Log Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.10 Understanding Tomcat Class Loading . . . . . . . . . . . . . 35 4.11 Deep Restart of Tomcat . . . . . . . . . . . . . . . . . . . . . 36 4.12 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5 Java Servlets 39 5.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.2 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.3 Project Creation . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.4 Attaching Source Code to Jar Files . . . . . . . . . . . . . . . 41 5.5 Deployment Descriptor . . . . . . . . . . . . . . . . . . . . . . 45 5.6 Create Home Servlet . . . . . . . . . . . . . . . . . . . . . . . 47 5.7 Web Application Deployment . . . . . . . . . . . . . . . . . . 54 5.8 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 6 Web Application Logging 57 6.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 6.2 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 6.3 Add the Log4j Library to the Project . . . . . . . . . . . . . 58 6.4 The Log4j Con guration File . . . . . . . . . . . . . . . . . . 59 6.5 The Eclipse Build Process . . . . . . . . . . . . . . . . . . . . 60 6.6 Modify HomeServlet . . . . . . . . . . . . . . . . . . . . . . . 60 6.7 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 7 Java Server Pages 67 7.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 7.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 7.3 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 December 1, 20097 7.4 Create a JSP . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7.5 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 8 A Simple News Feed Application 79 8.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 8.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 8.3 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 8.4 Flow of information for RSS . . . . . . . . . . . . . . . . . . . 80 8.5 Install Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . 81 8.6 Modify the JSP . . . . . . . . . . . . . . . . . . . . . . . . . . 84 8.7 Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 8.8 Create Publisher Project . . . . . . . . . . . . . . . . . . . . . 86 8.9 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 9 The MySQL Database Server 89 9.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 9.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 9.3 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 9.4 Install MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . 90 9.5 Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 9.6 MySQL-Speci c Commands . . . . . . . . . . . . . . . . . . . 92 9.7 Basic SQL Commands . . . . . . . . . . . . . . . . . . . . . . 94 9.8 Create a Database of News Items . . . . . . . . . . . . . . . . 97 9.9 Create Ant Build File . . . . . . . . . . . . . . . . . . . . . . 100 9.10 Run Targets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 9.11 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 10 Database-Driven Web Applications 105 10.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 10.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 10.3 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 10.4 JDBC Driver Installation . . . . . . . . . . . . . . . . . . . . 106 10.5 Setup Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . 107 10.6 Create a Dynamic News Feed . . . . . . . . . . . . . . . . . . 108 10.7 Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 10.8 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 11 Database Connection Pooling 115 11.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 11.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 December 1, 20098 11.3 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 11.4 Con gure the DataSource . . . . . . . . . . . . . . . . . . . . 116 11.5 Modify the News Feed Servlet . . . . . . . . . . . . . . . . . . 117 11.6 Create a ServletContextListener to do Initialization . . . . . . 118 11.7 Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 11.8 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 12 Data Access Objects 121 12.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 12.2 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 12.3 Create NewsItem Class . . . . . . . . . . . . . . . . . . . . . . 123 12.4 Create DataAccessObject . . . . . . . . . . . . . . . . . . . . 124 12.5 Modify the News Feed Servlet . . . . . . . . . . . . . . . . . . 130 12.6 Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 12.7 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 13 Item Management 133 13.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 13.2 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 13.3 Interface Design . . . . . . . . . . . . . . . . . . . . . . . . . . 136 13.4 Page Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 13.5 System Architecture . . . . . . . . . . . . . . . . . . . . . . . 145 13.6 Home Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 13.7 List Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 13.8 View Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 13.9 Edit Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 13.10Create Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 13.11Delete Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 13.12Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 14 Web Application Security 183 14.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 14.2 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 14.3 Con guration of HTTPS . . . . . . . . . . . . . . . . . . . . . 185 14.4 The Persistent User Class . . . . . . . . . . . . . . . . . . . . 190 14.5 Login Functionality . . . . . . . . . . . . . . . . . . . . . . . . 196 14.6 Security Filter . . . . . . . . . . . . . . . . . . . . . . . . . . 204 14.7 Password Digests . . . . . . . . . . . . . . . . . . . . . . . . . 208 14.8 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 December 1, 20099 15 Wiki Application Development 215 15.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 15.2 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 15.3 Project Creation . . . . . . . . . . . . . . . . . . . . . . . . . 218 15.4 Persistence Classes . . . . . . . . . . . . . . . . . . . . . . . . 221 15.5 View Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 15.6 Edit Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 15.7 Publish Page . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 15.8 Unpublish Page . . . . . . . . . . . . . . . . . . . . . . . . . . 248 15.9 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 16 Web Services 255 16.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 16.2 A Web Service to Publish News Items . . . . . . . . . . . . . 259 16.3 Invocation of the Publish Service from the Wiki Application . 265 16.4 The Unpublish Service . . . . . . . . . . . . . . . . . . . . . . 272 16.5 Security Mechanisms . . . . . . . . . . . . . . . . . . . . . . . 278 16.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 17 Conclusion 291 17.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 December 1, 200910 December 1, 2009Chapter 1 Introduction to Java Web Application Development 1.1 Objectives  To understand the big picture of web development using Java.  To learn about web services and how they will be used in this book. 1.2 Overview The term web application refers to a software system that provides a user in- terface through a web browser. Examples of web applications include blogs, wikis, online shopping, search engines, etc. Web application development became an important discipline following the adoption of the Internet by ordinary users. Many businesses now rely heavily on the web for both in- ternal applications and to provide services to customers, and so there are many employment opportunities open to individuals with web development skills. Web sites can be roughly classi ed as static or dynamic. Static web sites are those sites that use a web server to provide access to HTML documents that are stored in the le system. Dynamic web sites are those sites that construct the content of web pages from data that is stored in a database. The databases on which these dynamic sites are built are typically modi ed as a result of user interaction with site. Thus, users are presented with web pages that are uniquely generated for them based on their previous interactions with the site. The trend is for web pages to be generated from 1112 databases rather than being read from the le system. 1.3 Computer Languages Used for Web Applica- tion Development There are numerous languages and frameworks that are used for web appli- cation development. Java is one of the older and more established languages in which web applications have been developed. This book covers Java-based web application development using Servlets and JSP. This book also covers the news feed protocol RSS version 2.0, and REST-based web services. Java is a strict object-oriented language in which all function calls are made to either static methods of classes or to non-static methods that are invoked through class instances. These classes are organized into namespaces called packages, so that unquali ed class names do not need to be globally unique. An application programming interface (API) is a speci cation that de- nes how user code can access system functionality. The Java API refers to the speci cation that de nes how Java code may access functionality, such as opening a le in the le system, creating a socket connection with another process, creating a linked-list of objects, etc. For example, the following line creates an instance of the Socket class, which can be used to make TCP connections to other processes. java.net.Socket socket = new java.net.Socket("localhost", 8080); The above line of code can be simpli ed by importing the class java.net.Socket into the local namespace by adding the following line just after the package declaration of a java source code le. import java.net.Socket; The above import statement allows for the following simpli ed version of the socket creation code give above, in which the package pre x quali ers are dropped from the Socket class. Socket socket = new Socket("localhost", 8080); December 1, 200913 1.4 The Servlet API The Socket class is an example of a class that is part of the core Java API, which is available in all standard Java virtual machine (JVM) environments. However, web applications typically additional functionality that is not part of the core Java API. In particular, conventional web applications need to be able to access functionality provided through the Servlet API. Implemen- tations of the Servlet API are provided by third parties, such as Apache, IBM, Oracle, etc. In fact, the Servlet API is provided by something called a web container (or Servlet container), which is de ned within an exten- sive speci cation called Java 2 Enterprise Edition (J2EE). A web container is actually a web server that loads and executes Java Servlets to process incoming requests from browsers (or other HTTP clients). 1.5 Java 2 Enterprise Edition (J2EE) The Java 2 Enterprise Edition is a speci cation developed by Sun Microsys- tems with input from other major companies in the industry through a mechanism called the Java Community Process (JCP). J2EE describes a set of services that application developers utilize to solve enterprise computing problems. There are many third party implementations of J2EE, including both expensive proprietary implementations, and free open source imple- mentations. The Apache Software Foundation provides a free open source implementation of J2EE web containers, called Tomcat, which is widely used in the industry for web applications. This book describes the use of Tomcat, and does not discuss other web containers. Tomcat is not a complete implementation of the J2EE standard. In particular, it does not provide an Enterprise Java Beans (EJB) container. JBoss is a popular, free, open source implementation of the complete J2EE standard. The JBoss project itself does not provide an implementation of the Web container; instead, it requires that a third party web container be plugged in. However, Tomcat is the default Web container that comes packaged and pre-con gured with JBoss. A popular alternative to Tomcat is Resin and a popular non-free alternative to JBoss is IBM's WebSphere. December 1, 200914 1.6 Java Server Pages (JSP) The use of Java Server Pages (JSP) is covered in this book. JSP is a notation that is added to HTML les, so that per-request functionality can be added to otherwise statically-de ned HTML. It is possible to place all program functionality into JSP les. However, this practice is widely frowned against, because it leads to code that is dicult to maintain after a project grows in size. There are several reasons for this. First, JSP les are compiled at runtime by the web container, so that syntax errors are detected at runtime. By placing this code into Servlets, syntax errors are detected at compile time, which allows syntax errors to be caught and xed at an earlier point in time. Second, JSP les can not make use of inheritance, so that projects solely written in JSP look more like functional programs rather than object-oriented programs, and thus do not make use of the bene ts provided by object-oriented design. One can move away from pure JSP designs in two degrees: the java beans approach, and the servlet approach. The Java beans approach moves database access and other logic into Java beans, which are then invoked from the JSP. The Servlet approach also moves database access and other logic into Java beans, but also moves controller logic into Java Servlets, and invokes most of the Java bean functionality from the servlets. This book illustrates the Servlet approach. 1.7 Rich Site Summary (RSS) Rich Site Summary (RSS) is an XML-based format for syndicating content. In this book, we show how RSS can be added to a Java-based Web applica- tion from both the client side and from the server side. Rather than develop all the needed code from scratch, we utilize functionality provided by two di erent open source projects: JDOM and Informa. JDOM is a library that simpli es the processing of XML documents, and Informa is a library that simpli es the parsing of RSS documents. These libraries come in the form of jar les, which are zip les containing the byte code that comprise Java class and interface de nitions. To access the functionality provided by these libraries, the jar les must be placed in what is called the classpath. The classpath is basically a list of folders and jar les that the Java classloader searches to nd de nitions of Java classes. When the jar le of a library is present in the classpath, then its API becomes visible to application code. There is a tool, called javadoc, that is used to generated API documen- December 1, 200915 tation from code and the comments embedded within it. This generated documentation is in the form of HTML pages, and is thus viewed within a browser. It is important to become familiar with javadoc-generated API documentation, because it is the standard means to document Java APIs. 1.8 Representational State Transfer (REST) Representational State Transfer (REST) is formally an architectural style for building distributed software applications, that is, software systems that run on separate computers and that communicate with each other over a network. However, the term is informally used to represent an approach to building Web services in which message data is placed in XML docu- ments and transported using HTTP. In this second meaning, REST is an alternative to the more complex form of Web services based on SOAP and WSDL. 1.9 Web Services Software systems that provide programmatic interfaces to other systems (as opposed to browsers operated by human users) are similar to web applica- tions in the sense that they rely on the Internet and usually rely on the HTTP protocol. These applications are referred to as web services. This book provides an introduction to REST-based web services. 1.10 Integrated Development Environments When developing software, programmers tend to rely on integrated develop- ment environments (IDEs). An IDE provides important time-saving func- tionality, such as syntax checking, code assist and re-factoring. With syntax checking, the IDE will alert you if you have typed a command incorrectly. The term code assist refers to the ability of the IDE to suggest completions to a piece of code that you are working on. For example, if a locally scoped variable is named maximumLikelihoodEstimator and you wish to use this variable in an expression that you are typing, then you can invoke the code assist function to obtain a list of identi ers to choose from. As you type in characters, the list is narrowed to match only those identi ers that match with the characters you have so far entered. Re-factoring functionality al- lows you to change the name of an identi er in one part of the code, and have the IDE change the name as it occurs throughout the entire code base. December 1, 200916 These and other time saving functions make IDEs highly useful tools for developers. 1.11 Ant Ant is the Java version of the make utility that is commonly used to build programs written in C or C++. Without an IDE such as Eclipse, a Java programmer would normally write ant build scripts to perform repetitive tasks, such as compiling and packaging compiled code into archives (jar les). With an IDE such as Eclipse, programmers can invoke commonly used operations such as building through the GUI of the IDE. However, there will always be a need to develop scripts in non-trivial projects to automate repetitive tasks. For this reason, this book covers the use of ant for running database regeneration scripts and for generating various objects needed for application security. Ant is built into Eclipse, so the user can run ant build scripts through the Eclipse menu system. Ant build scripts are in the form of XML les. The default name of a build le is build.xml. The build le contains one or more targets, each of which perform some job. Each target is comprised of any number of tasks, which comprise the atomic actions that a user can specify. Ant is a free, open source project maintained by the Apache Software Foundation. The ant build system is well documented, and there are nu- merous tutorials and articles on its use. This book employs ant in a simple way, so that students can become familiar with its use and the syntax of an ant build le. 1.12 Web Application Architecture There are many di erent ways to design Java-based web applications. This book presents a particular design. In this book, we show how to implement a web application that follows what is popularly called the model-view- controller (MVC) architecture. The MVC approach attempts to separate code into three areas of concern: persistence and business logic (model), user interface generation (view), and user input (controller). In java ap- plications, MVC is usually implemented by generating HTML from Java Server Page (JSP) scripts, handling incoming requests with servlets. Per- sistence of data is done through data access objects (DAOs) or Enterprise Java Beans (EJBs), and business logic is placed inside servlets, EJBs or December 1, 200917 other classes. In this book, we do not look at EJBs; instead, we use DAOs to provide persistence services, and place business logic within servlets and other classes. Data access objects (DAOs) are used to provide persistence functionality for objects that can not be stored in main memory inde nitely. For example, the application may have a class called User that is used to represent users of the system. The User object will contain username, password, email and other attributes needed by the application. This information obviously should survive the restart of the system, and so must be preserved in the non-volatile memory such as a hard disk drive. Objects that are instances of such classes as User are termed persistent objects. Although the state of persistent objects can be stored directly in the le system, they are usually stored in a database. Some databases are object-oriented, which makes storing persistent ob- jects in them straightforward. However, object-oriented databases have not gained wide acceptance; instead, developers use relational databases in which data is stored in tables of rows and columns. The transference of data between objects in memory and tables in the database is not a straightforward process. Consequently, a lot of code needs to be written to implement this functionality. In fact, there are frameworks (such as Hiber- nate or iBatis) that can be used to simplify the addition of this capability to an application. Use of these frameworks is not covered in this book. Instead, we will develop our own persistence mechanism by placing such code within our data access objects. There is an alternative to using persistent objects, which is to operate directly on the data within the database without encapsulating it within objects. This approach removes a lot of complexity from the code for small projects, however, larger projects bene t from the use of persistent objects because it simpli es the expression of the application's business logic. This book focuses on an approach to web application design that is based on persistent objects. 1.13 Security In the Java Web development world, there are several ways to implement security features in an application. This book uses a simple approach to authentication and authorization. A uni ed process of validating user input is also presented. December 1, 200918 1.14 Web Application Servers Java Web development is usually done using Servlets and JSP. Both Servlets and JSP are standard APIs that were developed through the Java Commu- nity Process, which is a mechanism by which the Java language is subject to review and modi cation by the community. As a result of being developed as standards, there are many competing implementations of what are called Servlet/JSP containers. Some implementations are proprietary and licensed for a fee, such as IBM WebSphere and Oracle Application Server. Others are free, open source, such as Tomcat and Resin. In this book, we use the Tomcat web container. The code that is developed in this book, will gener- ally run unmodi ed in any Web container. However, certain details related to deploying the application in a particular web container are not subject to the standard, and thus vary between implementations. 1.15 Database Servers A database server is an essential tool to Web developers, no matter which language, framework or operating system they use. Typically, web devel- opers use relational database servers, although alternatives exist, such as object-oriented database servers. Currently, the most widely used database server in industry is probably Oracle. However, there are some good quality alternatives to Oracle, such as MySQL and PostgreSQL. In this book, we use the MySQL database server, because it is the most widely used free, open source database server. 1.16 Development versus Deployment Environments One important concept that students are not usually aware of is the distinc- tion between a development environment and a production environment. The book describes how to set up and use a development environment. Speci cally, this book details the steps needed to set up a Windows ma- chine to be used for development of Web applications. However, the book does not cover the set up of an environment in which to run Web applications to be used in a business context. Although it is possible to use Windows as the operating system in a pro- duction environment, the Linux operating system is perhaps a more common platform for production servers. Details of installation and con guration of a production environment for Java web applications is not covered. Also not December 1, 200919 covered are methods used to distribute load across multiple servers, which is a common necessity in production environments. December 1, 2009

Advise: Why You Wasting Money in Costly SEO Tools, Use World's Best Free SEO Tool Ubersuggest.