domingo, abril 08, 2007

Java: Servlet básico - Minimal Servlet

Ejemplo de un Servlet básico sobre el que podemos empezar a añadir la funcionalidad que queramos.
Contiene ejemplos básicos para la obtención de parámetros, escritura de la respuesta web, ...

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


public class Middleware extends HttpServlet {

//Initialize global variables
public void init() throws ServletException {
}

//Process the HTTP Get request > aqui tratamos la peticion
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {

//obtenemos el descriptor sobre el que devolveremos la respuesta html
response.setContentType("text/html");
PrintWriter out = response.getWriter();

try {

//forma de obtener los parametros > vienen de un formulario
String servicio = request.getParameter("servicio");
}
catch (Exception e) {
out.println("Error en el Servlet del servicio web.");
}
}

//Process the HTTP Post request > no importa el metodo, lo tratamos todo igual
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}

//Clean up resources
public void destroy() {
}
}

Para la respuesta web es recomendable usar un método en el que se le pase como parámetros el descriptor de la salida y la ruta de la página a mostrar. El método es el siguiente (el primero es una versión básica y el segundo permite introducir cambios mediante un array de pares de string "antiguo-nuevo"):


public static void enviarPagina(String pagina, PrintWriter out)
{
try {

FileReader fr = new FileReader(pagina);
BufferedReader buffer = new BufferedReader(fr);

String linea = buffer.readLine();

while (linea != null)
{
out.println(linea);
linea=buffer.readLine();
}
}
catch(Exception e)
{
System.out.println("Error al abrir el fichero");
out.println("Error al cargar el fichero de la página - " + e.toString());
try{
File dir1 = new File(".");
out.print("Current dir : " + dir1.getCanonicalPath());
}catch(Exception en){}
}
}

public static void enviarPagina(String pagina, PrintWriter out, String[][] cambios)
{
try {

FileReader fr = new FileReader(pagina);
BufferedReader buffer = new BufferedReader(fr);

String linea = buffer.readLine();

while (linea != null)
{
//hacemos los cambios necesarios
for(int i=0;i(menorque)cambios.length;i++){
linea = linea.replaceAll(cambios[i][0],cambios[i][1]);
}
//escribimos
out.println(linea);
linea=buffer.readLine();
}
}
catch(Exception e)
{
System.out.println("Error al abrir el fichero");
}
}

No hay comentarios: