111 Java Servlets Dynamic Web Pages (Program Files) Servlets versus Java Server Pages Implementing...

23
1 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

Transcript of 111 Java Servlets Dynamic Web Pages (Program Files) Servlets versus Java Server Pages Implementing...

111

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

222

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

33

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

44

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

55

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

66

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/classes6

777

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

888

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

9

F15 Class

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.util.*;

public class F15 extends HttpServlet

{

9

10

F15 doGet Method

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException

{

this.doPost(request, response);

}

10

11

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

12

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

13

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

14

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

15

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

16

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

17

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>

18

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

19

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>

20

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>

21

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>

22

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>

23

Configure Tomcat Service

Can use buttons to start and stop the Tomcat Service