Introdução a Containers Web: A Primeira Aplicação Web com Servlets

Tipos  de Clientes

O Protocolo HTTP

Containers Web e Aplicações Web

webcontainer.gif (12544 bytes)

Servlets

servlet1.gif (8422 bytes)

Java Server Pages

jsp1.gif (10870 bytes)

Servlets ou Java Server Pages?

Deployment Descriptors

Nossa Primeira Aplicação Web

O arquivo EAR

Criação do arquivo HTML

<html>

<head>
<title>Cadastro de Mail</title>
</head>

<body>
<h1>Bem-vindo!</h1>
<form method="POST" action="/cadastromail/cadastra">
  <p>Seu nome <input type="text" name="nome" size="40"></p>
  <p>Seu email <input type="text" name="email" size="40"></p>
  <p><input type="submit" value="Submit"> <input type="reset" value="Reset"></p>
</form>
</body>

</html>

Criação do servlet

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class CadastroServlet extends HttpServlet {
  protected void doPost(HttpServletRequest request,
                        HttpServletResponse response)
                        throws ServletException, IOException {

    // pega parâmetros do request
    String nome = request.getParameter("nome");
    String email = request.getParameter("email");
    
    GregorianCalendar calendário = new GregorianCalendar();
    String mensagem = calendário.get(Calendar.AM_PM) == Calendar.AM ?
                      "Bom dia" : "Boa Tarde";

    // acerta tipo MIME para a resposta
    response.setContentType("text/html");

    PrintWriter out = response.getWriter();
    out.println("<HTML>");
    out.println("<BODY>");
    out.println("<P>" + mensagem + ", " + nome + "</P>");
    out.println("<P>Obrigado por cadastrar seu email (" + email + ") conosco.</P>");
    out.println("<P>- A Galera Java</P>");
    out.println("</BODY>");
    out.println("</HTML>");
    out.close();
  }
}
<project name="disciplina-j2ee-exemplos" default="all" basedir=".">
  <target name="init">
    <tstamp/>
    <property name="build" value="../build" />
    <property name="cadastromail" value="cadastromail" />
    <property environment="myenv" />
    <property name="j2eepath"  value="${myenv.J2EE_HOME}/lib/j2ee.jar" />
  </target>

  <target name="prepare" depends="init">
    <mkdir dir="${build}" />
  </target>

  <target name="clean" depends="init">
    <delete dir="${build}" />
  </target>
      
  <target name="all" depends="init,cadastromail">
  </target>

  <target name="cadastromail" depends="init">
    <mkdir dir="${build}/${cadastromail}" />
    <copy todir="${build}/${cadastromail}" >
      <fileset dir="${cadastromail}"  >
        <include name="**/*.html" />
      </fileset>
    </copy>
    <javac srcdir="${cadastromail}"
      destdir="${build}/${cadastromail}"
      classpath="${j2eepath}" >
      <include name="**/*.java" />
    </javac>
  </target>
</project>
C:\...\src>ant cadastromail
Buildfile: build.xml

init:

cadastromail:
    [mkdir] Created dir: C:\...\build\cadastromail
     [copy] Copying 1 file to C:\...\build\cadastromail
    [javac] Compiling 1 source file to C:\...\build\cadastromail

BUILD SUCCESSFUL

Total time: 4 seconds

Construção da aplicação

j2ee -verbose
deploytool

wpeA6.jpg (26221 bytes)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE application PUBLIC '-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN' 'http://java.sun.com/dtd/application_1_3.dtd'>

<application>
  <display-name>CadastromailApp</display-name>
  <description>Application description</description>
  <module>
    <web>
      <web-uri>war-ic.war</web-uri>
      <context-root>/cadastromail</context-root>
    </web>
  </module>
</application>
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE j2ee-ri-specific-information PUBLIC '-//Sun Microsystems Inc.//DTD J2EE Reference Implementation 1.3//EN' 'http://localhost:8000/sun-j2ee-ri_1_3.dtd'>

<j2ee-ri-specific-information>
  <server-name></server-name>
  <rolemapping />
  <web>
    <module-name>war-ic.war</module-name>
    <context-root>/cadastromail</context-root>
  </web>
</j2ee-ri-specific-information>
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'>

<web-app>
  <display-name>CadastromailWAR</display-name>
  <servlet>
    <servlet-name>CadastroServlet</servlet-name>
    <display-name>CadastroServlet</display-name>
    <servlet-class>CadastroServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CadastroServlet</servlet-name>
    <url-pattern>/cadastra</url-pattern>
  </servlet-mapping>
  <session-config>
    <session-timeout>30</session-timeout>
  </session-config>
</web-app>

wpeA7.jpg (23542 bytes)

wpeA9.jpg (27320 bytes)

wpeAA.jpg (25198 bytes)

Como a Aplicação Funciona

servlet2.gif (6269 bytes)

intro programa