Servlets & JSP: (With Tomcat & Apache)
Servlets & JSP: (With Tomcat & Apache)
Kai Tödter
CT SE 2
Siemens AG
E-mail: [email protected]
www: http://www.toedter.com
Outline
Motivation: Poll Web Application
Date Servlet/Date JSP
Servlet Engine: Tomcat
Web Server: Apache
Basic Servlet/JSP
Request
Cookies
Authorization
Session
Tag Libraries
Web Applications
JDBC
Books & Links
response.setContentType( "text/html" );
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<HEAD><TITLE>Date Servlet</TITLE></HEAD>");
out.println("<BODY><H2>Date Servlet: " + (new Date()) + "</H2></BODY>");
out.println("</HTML>");
}
}
Servlets/JSP © Kai Tödter, 2000 1/24/2001 4
Date Servlet (2)
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
out.println("<HTML>");
out.println("<HEAD><TITLE>Date Servlet</TITLE></HEAD>");
out.println("<BODY><H2>Date Servlet: " +
(new Date()) + "</H2></BODY>");
out.println("</HTML>");
}
JSP
Tomcat
Reference Implementation for Servlets & JSPs
Implementing the latest API
Open Source
Apache Project Jakarta
Web-Site: httpd.apache.org
Free Software!
Robust, fast, powerful, many features, ...
Available for almost every operating system
E.g. Solaris, Windows, Linux, ...
Most widely used web server in the world
BUT:
Not very easy to manage and administrate
View Controller
Model
Model
An object that defines the component's state
View
A visual screen representation of a component
Controller
An object that makes a component respond to user input
JSP Servlet
View Controller
Model
JavaBeans
Servlets/JSP © Kai Tödter, 2000 1/24/2001 24
Poll MVC Architecture
JSP Servlet
authorization errorpage pollController
pollAdmin pollVote
pollEdit pollResult
Java / JavaBeans
poll
pollFactory
<html>
<head><title>JSP Error Page</title></head>
…
In servlets
getServletContext().
getRequestDispatcher( "/pollResult.jsp" ).
forward( request, response );
Persistent
...
cookie.setMaxAge( 60 * 60 * 24 ); // For 24 hours
response.addCookie( cookie );
In Servlet
...
HttpSession session = request.getSession( true );
String user = (String) session.getAttribute("user");
<%
String aut = request.getHeader("Authorization");
if (aut == null) {
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.setHeader( "WWW-Authenticate",
"BASIC realm=\"Web Poll\"„ );
return;
}
else {
// See next slide
}
%>
Servlets/JSP © Kai Tödter, 2000 1/24/2001 43
Authorization Example (2)
else {
aut = aut.substring( aut.indexOf(' ')+1 );
BASE64Decoder decoder = new BASE64Decoder();
String s = new String( decoder.decodeBuffer( aut ));
String user = s.substring( 0,s.indexOf(':') );
String passwd = s.substring( s.indexOf(':')+1 );
if( !(user.equals( "Kai" ) && ( passwd.equals( "jtf" )))) {
response.setStatus( HttpServletResponse.SC_UNAUTHORIZED );
response.setHeader( "WWW-Authenticate", "BASIC realm=\"Poll\"");
return;
}
}
<html>
<body>
<pre>
<poll:htmlfilter>
<html>
<body>
<h3 align=center>The Tag poll:htmlfilter</h3>
<p>Paragraph: HTML except JSP tags
</body>
</html>
</poll:htmlfilter>
</pre>
</body>
</html>
Servlets/JSP © Kai Tödter, 2000 1/24/2001 52
Web Applications
Java Runtime Environment(s)
Running in the server (required)
JSP(s)
Handle requests and generate dynamic content
Servlet(s)
Handle requests and generate dynamic content
Server-side JavaBeans components
Encapsulate behavior and state
Static HTML, DHTML, XHTML, XML and similar pages.
Client-side Java classes
Applets, JavaBeans, other Java class files
Java Runtime Environment(s)
Downloadable via the Plugin
Running in client(s)
Classes
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
<web-app>
<display-name>
Web Poll (Kai Toedter)
</display-name>
<description>
A Web Poll with Java, Servlets and JSP
</description>
</web-app>
// ...
}
shannon.informatik.fh-wiesbaden.de/jsp