universidad distrital francisco josé de caldas facultad de ingenieria

Anuncio
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE
CALDAS
FACULTAD DE INGENIERIA
DOCTORADO EN INGENIERÍA
COMPETENCIAS EN CIENCIA DE LA
INFORMACIÓN Y EL CONOCIMIENTO
Carlos Enrique Montenegro Marín
Ingeniero de Sistemas de la Universidad Distrital
Magister en ciencias de la Información y las
comunicaciones de la Universidad Distrital
DEA en ingeniería de Software de la Pontifica
Universidad de Salamanca
PhD en Sistemas y Servicios informáticos para
internet de la Universidad de Oviedo
Correo Electronico:
[email protected]
[email protected]
Linkedin:
http://es.linkedin.com/pub/carlos-enriquemontenegro-marin/26/584/82a
Facebook:
http://www.facebook.com/ingcarlosmontenegro
Twitter
@ingcemm
Tutorial Web Dinámica con Servlets y JSP
Sesion 3
1. Eclipse Plataforma Web Tool
Eclipse WTP proporciona herramientas para desarrollar aplicaciones web
estándar Java y aplicaciones Java EE. Artefactos típicos web en un entorno
Java son páginas HTML, archivos XML, servicios web, servlets y
JSP. Eclipse WTP simplifica la creación estos artefactos web y proporciona
entornos de tiempo de ejecución en el que estos artefactos pueden ser
desplegados, se inició y depurado. En Eclipse WTP crear "proyectos Web
dinámicos". Estos proyectos proporcionan la funcionalidad necesaria para
ejecutar, depurar y desplegar aplicaciones Web de Java.
Eclipse WTP soporta la gran mayoría de Contenedor Web, por ejemplo Jetty
y Tomcat Apache, así como la mayor cantidad de servidor de aplicaciones
Java EE. Este tutorial usa Apache Tomcat como un Contenedor Web.
2. Instalación de Tomcat
Descargue el Apache Tomcat 7.0.x del servidor de la página web
siguientehttp://tomcat.apache.org/ . En MS Windows, puede utilizar el
programa de instalación autoexplicativo MS para instalar Tomcat. Para una
instalación de Tomcat en otras plataformas, utilice Google.
Después prueba la instalación de Tomcat, si quedo instalado correctamente
al abrir un navegador a http://localhost:8080/. Esto debería abrir la página
principal de Tomcat y si usted ve esta página después Tomcat está instalado
correctamente.
Después de verificar que Tomcat está instalado correctamente, pare el
Tomcat. Eclipse WTP tratara de iniciar Tomcat por sí mismo. Si ya se está
ejecutando Tomcat Eclipse WTP no será capaz de utilizarlo para el
desarrollo.
3. Instalación de la WTP
Supongo que usted haya descargado el IDE Eclipse para desarrolladores
de Java . Utilice el Gestor de actualizaciones de Eclipse para instalar
todos los paquetes de la categoría "Web, XML, Java EE y Desarrollo OSGi
Desarrollo de la Empresa", excepto "PHP Desarrollo" y la Tooling "RAP".
4. WTP de configuración
Seleccione Windows -> Preferencias -> Servidor -> Runtime Environment
para configurar disposición a pagar para utilizar Tomcat Pulse Agregar.
Seleccione su versión de Tomcat.
Para compilar la página JSP en servlets es necesario utilizar el JDK. En mi
caso el "JRE Workbench default" está señalando el JDK. Usted puede
comprobar la configuración haciendo clic en "JRE instalado".
Pulse Finalizar y luego en Aceptar. Ahora está listo para usar Tomcat con
WTP.
4,1. Servidor
Durante el desarrollo va a crear su servidor. Puede administrar el servidor a
través de la vista del servidor. Para ver si los datos se persisten detener y
reiniciar el servidor. Usted puede hacer esto a través del Windows -> Show
View -> Servidores -> Servidores
A continuación le mostramos donde se puede iniciar, detener y reiniciar el
servidor.
5. Servlets
5,1. Proyecto
Vamos a crear un servlet que funciona como un contador de páginas
web. Este servlet mantendrá un registro del número de visitantes de una
página web. El servlet persiste el número de visitantes en un archivo de
texto. Crear un nuevo "proyecto web dinámico" llamado "wtp.filecounter"
seleccionando Archivo -> Nuevo -> Otros -> Web -> Proyecto Web dinámico.
Presione Finish. Si se le pregunta si desea cambiar a la perspectiva Java EE
respuesta afirmativa.
Un nuevo proyecto ha sido creado con la estructura estándar de una
aplicación web Java. El directorio WEB-INF/lib más tarde llevará a cabo
todos los archivos JAR que la aplicación web Java requiere.
5,2. Creación de objetos de acceso a datos
Crear un nuevo paquete "SampleServlet".
Cree la clase Java que proporcionará el número de visitantes escribir este
valor en un archivo.
ackage wtp.filecounter.dao;
import
import
import
import
import
import
java.io.BufferedReader;
java.io.File;
java.io.FileReader;
java.io.FileWriter;
java.io.IOException;
java.io.PrintWriter;
public class FileDao {
public int getCount() {
int count = 0;
// Load the file with the counter
FileReader fileReader = null;
BufferedReader bufferedReader = null;
PrintWriter writer = null ;
try {
File f = new File("FileCounter.initial");
if (!f.exists()) {
f.createNewFile();
writer = new PrintWriter(new FileWriter(f));
writer.println(0);
}
if (writer !=null){
writer.close();
}
fileReader = new FileReader(f);
bufferedReader = new BufferedReader(fileReader);
String initial = bufferedReader.readLine();
count = Integer.parseInt(initial);
} catch (Exception ex) {
if (writer !=null){
writer.close();
}
}
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return count;
}
public void save(int count) throws Exception {
FileWriter fileWriter = null;
PrintWriter printWriter = null;
fileWriter = new FileWriter("FileCounter.initial");
printWriter = new PrintWriter(fileWriter);
printWriter.println(count);
// Make sure to close the file
if (printWriter != null) {
printWriter.close();
}
}
}
Esta clase Java no es un servlet, es una clase normal de Java.
5,3. Crear el Servlet
Crear un servlet. Haga clic derecho sobre la carpeta y seleccione
Webcontent New-> Other.Seleccione Web - Servlet>. Mantener los datos
siguientes.
Pulse Finalizar.
También puede crear un servlet sin el asistente. El asistente crea una clase
Java que se extiende javax.servlet.http.HpptServlet y añadir la configuración de
servlet para el archivo de descripción de web.xml.
Mantener el siguiente código para el servlet.
package wtp.filecounter;
import java.io.IOException;
import java.io.PrintWriter;
import
import
import
import
import
javax.servlet.ServletException;
javax.servlet.annotation.WebServlet;
javax.servlet.http.HttpServlet;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import wtp.filecounter.dao.FileDao;
/**
* Servlet implementation class FileCounter
*/
@WebServlet("/FileCounter")
public class FileCounter extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public FileCounter() {
super();
// TODO Auto-generated constructor stub
}
int count;
private FileDao dao;
public void init() throws ServletException {
dao = new FileDao();
try {
count = dao.getCount();
} catch (Exception e) {
getServletContext().log("An exception occurred in
FileCounter", e);
throw new ServletException("An exception occurred in
FileCounter"
+ e.getMessage());
}
}
/**
* @see HttpServlet#doGet(HttpServletRequest request,
HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
// TODO Auto-generated method stub
// Set a cookie for the user, so that the counter does
not increate
// everytime the user press refresh
HttpSession session = request.getSession(true);
// Set the session valid for 5 secs
session.setMaxInactiveInterval(5);
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
if (session.isNew()) {
count++;
}
out.println("This site has been accessed " + count + "
times.");
}
public void destroy() {
super.destroy();
try {
dao.save(count);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request,
HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
// TODO Auto-generated method stub
}
}
Este código se lee el contador de un archivo en el servidor y devolvera texto
sin formato en el navegador. El servlet aumentará el contador si el usuario
espera 5 segundos inactivo.
5,4. Ejecutar
Seleccione el servlet, haga clic derecho sobre él y seleccione Run As ->
Ejecutar en servidor.
Seleccione su servidor e incluya su servlet para que se ejecuta en el
servidor.
Pulse Finalizar. Usted debe ver en Eclipse un navegador web mostrando en
su interior el número de cuenta. Si usted espere 5 segundos y volver a
cargar el número debería aumentar.
Felicitaciones. Ha creado su primera servlet trabajar con Eclipse WTP!
6. JavaServer Pages (JSP)
6,1. Crear proyecto
El siguiente ejemplo muestra la creación y uso de una página
JaveServer . Crear el proyecto Web dinámico "sampleJSP". y el paquete "
wtp.jspsimple"
6,2. Cree el JSP
Seleccione la carpeta "WebContent", haga clic con el botón derecho del
ratón -> Nuevo -> JSP y crear la JSP "FirstJSP". Seleccione la opción
"Nuevo archivo JSP (html)" de la plantilla.
Cree la siguiente codificación.
<%@ page language="java" contentType="text/html; charset=ISO8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO8859-1">
<title>JSP con Fecha Actual</title>
</head>
<body>
<%java.text.DateFormat df = new
java.text.SimpleDateFormat("dd/MM/yyyy"); %>
<h1>Current Date: <%= df.format(new java.util.Date()) %> </h1>
</body>
</html>
6,3. Ejecutarlo
Inicie su aplicación web. Para ello encontrara su JSP bajo la URL
"http://localhost:8080/SampleJSP/FirstJSP.jsp".
6,4. Ajuste web.xml
Establezca la página JSP como página de bienvenida para su
aplicación. Esto es opcional, pero que sea más fácil porque el JSP se abre
automáticamente cuando se inicia la aplicación. Modificar el archivo
"WebContent / WEB-INF / web.xml" a la siguiente.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>SampleJSP</display-name>
<welcome-file-list>
<welcome-file>FirstJSP.jsp</welcome-file>
</welcome-file-list>
</web-app>
Esto permite iniciar el JSP a través de la trayectoria
"http://localhost:8080/SampleJSP/".
7. JSP y Servlets
7,1. Crear proyecto
Este ejemplo demostrará el uso de JSP para la visualización y un servlet
como el controlador para una aplicación de web. El servlet enviará la
solicitud JSP correcto.
Cree el Dynamic Web Project "SampleServletAndJSP". y el paquete
"wtp.jsp"
7,2. Cree el controlador (servlet)
Crear un servlet nuevo "Controller" en el paquete " wtp.jsp".
package wtp.jsp;
import java.io.IOException;
import java.util.Map;
import
import
import
import
import
import
import
javax.servlet.RequestDispatcher;
javax.servlet.ServletConfig;
javax.servlet.ServletException;
javax.servlet.annotation.WebServlet;
javax.servlet.http.HttpServlet;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Controller
*/
@WebServlet("/Controller")
public class Controller extends HttpServlet {
private static final long serialVersionUID = 1L;
private static String DELETE_JSP = "/Delete.jsp";
private static String EDIT_JSP = "/Edit.jsp";
private static String SHOWALL_JSP = "/ShowAll.jsp";
/**
* @see HttpServlet#HttpServlet()
*/
public Controller() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request,
HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
// TODO Auto-generated method stub
String forward="";
// Get a map of the request parameters
@SuppressWarnings("unchecked")
Map parameters = request.getParameterMap();
if (parameters.containsKey("delete")){
forward = DELETE_JSP;
} else if (parameters.containsKey("edit")){
forward = EDIT_JSP;
} else {
forward = SHOWALL_JSP;
}
RequestDispatcher view =
request.getRequestDispatcher(forward);
view.forward(request, response);
}
}
Este controlador comprueba que parámetros se ha pasado al servlet y luego
remitirá la solicitud al correcto JSP.
7,3. Crear las Vistas (JSP)
En la carpeta "WebContent" crear el nueva JSP "ShowAll" con el siguiente
código.
<%@ page language="java" contentType="text/html; charset=ISO8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO8859-1">
<title>Show all names</title>
</head>
<body>
<form method="GET" action='Controller' name="showall">
<table>
<tr>
<td><input type="checkbox" name="id1" /></td>
<td>Jim</td>
<td>Knopf</td>
</tr>
<tr>
<td><input type="checkbox" name="id2" /></td>
<td>Jim</td>
<td>Bean</td>
</tr>
</table>
<p><input type="submit" name="delete" value="delete" /> 
<input type="submit" name="edit" value="edit" /> 
<input type="reset"
value="reset" /></p>
</form>
</body>
</html>
Cree el JSP "delete.jsp".
<%@ page language="java" contentType="text/html; charset=ISO8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO8859-1">
<title>Insert title here</title>
</head>
<body>
Delete successful
<form method="GET" action='Controller'
name="delete_success"><input
type="submit" value="back"></form>
</body>
</html>
Cree el JSP "Edit.jsp".
<%@ page language="java" contentType="text/html; charset=ISO8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="GET" action='Controller' name="edit">
<table>
<tr>
<td>First name:</td>
<td><input type="text" name="firstName"></td>
</tr>
<tr>
<td>Last name:</td>
<td><input type="text" name="lastName"></td>
</tr>
<tr>
<td><input type="submit" value="save"> <input
type="reset" value="reset"> <input type="submit"
value="back">
</td>
</tr>
</table>
</form>
</body>
</html>
7,4. Ejecutarlo
Monta tu nueva aplicación mediante la ejecución de "ShowAll.jsp" en el
servidor. Usted debe ser capaz de navegar entre las páginas.
8. Archivo Web - Cómo crear un archivo WAR de
Eclipse
'A continuación se describe cómo crear un archivo Web (WAR) de Eclipse.
Haga clic derecho sobre el proyecto y seleccione "Exportar".
Especifique el directorio de destino y pulse Finalizar.
Importar ahora el archivo WAR a su sistema de producción Tomcat y probar
la aplicación web.
Descargar