230 likes | 403 Views
Java Servlets. Dynamic Web Pages (Program Files) Servlets versus Java Server Pages Implementing Servlets Example: F15 Warranty Registration Tomcat Configuration for Servlet Processing Starting and Stopping Tomcat Service. 1. 1. Dynamic Web Pages.
E N D
Java Servlets • Dynamic Web Pages (Program Files) • Servlets versus Java Server Pages • Implementing Servlets • Example: F15 Warranty Registration • Tomcat Configuration for Servlet Processing • Starting and Stopping Tomcat Service 1 1
Dynamic Web Pages • The URL points to an “executable program” file instead of to a “static” HTML document file • The program generates response based on input request parameters and data stored on the server • It writes response in HTML format to stdout • These programs can be scripts PERL, PHP, etc or compiled C CGI programs • They can also be Java Programs, e.g. Servlets • Servlets can be auto-generated from JSP pages 2 2
Servlets versus Java Server Pages • A servlet is a .java source file with code that reads user submitted parameters and writes HTML formatted text back to the user • It can also access or update files on the server • Much like any Java program: • It is compiled to a .class file • Data is displayed to user based on java statements 3
Servlets versus Java Server Pages • A Java Server Page is a “markup document” with snippets of Java code included to control processing/generation of response to the user • It can also access or update files on the server • Much like any HTML page: • It is not compiled by the developer (a servlet is generated and compiled behind the scenes) • Data is displayed to user based on markup text 4
Servlets versus Java Server Pages • There are advantages and disadvantages for using a servlet or a Java Server Page (JSP) • Primarily consider the ratio of code to markup: • The more code the greater the case for a servlet • The more markup the greater the case for a JSP • The code sections of a JSP may become difficult to debug because the compiler works on the generated ".java" source file - not directly on the JSP • For a page with simple server-side functions, such as altering output based on a few request parameters, a JSP can be much simpler to build than a servlet 5
Java Servlets • Import javax.servlet.* and javax.servlet.http.* • Class extends httpServlet (An abstract class) • No need to implement a constructor method • Use methods init and destroy – like Applets • Implement methods doPost and/or doGet • Compile your servlet source code as usual • Save class file in myapp/WEB-INF/classes 6 6
Java Servlets • GET method • If your form has METHOD="Get" in its FORM tag, implement the doGet method • POST method • If your form has METHOD="Post" in its FORM tag, implement the doPost method • For flexibility, implement both methods • Have one method call the other passing the received arguments so you don’t need to write the code twice 7 7
Java Servlets Example • F15.html sends either Get or Post request • To localhost/myapp/F15 (a Servlet) • Tomcat servlet container invokes either the doGet method or doPost method depending on the type of request received • doGet/doPost obtains the input data via calls to the request object’s getParameter method • Generates HTML response via response object’s methods and PrintWriter object obtained from response.getWriter method 8 8
F15 Class import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; public class F15 extends HttpServlet { 9
F15 doGet Method public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } 10
F15 doPost Method public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // get the input data from the form String name = request.getParameter("Name"); String title = request.getParameter("Title"); String model = request.getParameter("Model"); . . . 11
F15 doPost Method // start the usual stuff for the response response.setContentType("text/html"); PrintWriter out = response.getWriter(); // PrintWriter is the same class as System.out String docType = “<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0” + “Transitional//EN\”>\n”; out.println(docType + “<HTML>\n” + “<HEAD><TITLE>F15 Response</TITLE></HEAD>” + “ \n<BODY>”); 12
F15 doPost Method // now compose our response based on the form input data out.println("To: " + name + "<br><br>" + title); out.println("<p>We at MakDonut-Duglass wish you the ” + “best of luck using your F15 " + model + " model to " + . . . // and end with the usual stuff for the response out.println("</BODY></HTML>"); } } 13
Tomcat File Directory Structure • Path to Tomcat in Program Files C:\Program Files\Apache Software Foundation\Tomcat 6.0 • Top Level Subdirectories of Interest \conf – contains configuration files in xml format \webapps – contains ROOT and “myapp” sub-directories for the top level pages of web applications \work – contains source code and class files for servlets generated from JSP pages (many levels below) \logs – contains log files with error messages or output from any debug write statements you use in your code
Tomcat Configuration • Tomcat has overall configuration files in: • Tomcat 6.0\conf folder • server.xml • tomcat-users.xml • context.xml • web.xml • Tomcat has configuration files for individual web applications in: • Tomcat 6.0\webapps\myapp\WEB-INF • web.xml
Tomcat Configuration (server.xml) • Contains configuration for port number on which the service will be offered <Connector port=“80” protocol=“HTTP/1.1” connectionTimeout=“20000” redirectPort=“8443” /> • Default file came set up with port 8080
Tomcat Configuration (tomcat-users.xml) • User account names, passwords and privileges <tomcat-users> <role rolename=“manager”/> <role rolename=“admin”/> <user username=“admin” password=“********” roles=“admin,manager”/> </tomcat-users>
Tomcat Configuration (context.xml) • Context Useful for Development Activity <Context reloadable="true" privileged="true"> • Reloadable = Enables monitoring of servlet class files for reloading without server restart • Privileged = Allows Use of Invoker Servlet • Allows access to servlets without a definition and a mapping in the web.xml configuration file(s) • Both normally set to false for production
Tomcat Configuration (web.xml) • In folder conf/web.xml • Invoker Servlet Definition / Initialization <servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet </servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>
Tomcat Configuration (web.xml) • In folder conf/web.xml • Invoker Servlet Mapping to URL <servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping>
Tomcat Configuration (web.xml) • In folder myapp/WEB-INF/web.xml • F15 Servlet Definition / Initialization <servlet> <servlet-name>F15</servlet-name> <servlet-class>F15</servlet-class> <init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param> </servlet>
Tomcat Configuration (web.xml) • In folder myapp/WEB-INF/web.xml • F15 Servlet Mapping to URL <servlet-mapping <servlet-name>F15</servlet-name> <url-pattern>/F15</url-pattern> </servlet-mapping>
Configure Tomcat Service Can use buttons to start and stop the Tomcat Service