Estructura Simple de Servlet Project
Estructura Simple de Servlet Project (Maven project) y Uso de Cookies:
Estructura del proyecto
Manejo Cookies: Servlet bajo la anotacion de Webservlet
Dependencias: javaee
src\main\webapp\index.html: archivo inicial (WEB-INF carpeta de configuracion)
pom.xml: archivo de maven: es necesario el empaquetamiento war, el build y la dependencia de javaee.
<code ManejoCookies>
package cookies;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet(name = "ManejoCookies", urlPatterns = {"/ManejoCookies"})
public class ManejoCookies extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//Declaramos la variable contador
int contador = 0;
//Si existe, obtenemos el contador de visitas actual
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie c : cookies) {
if (c.getName().equals("contadorVisitas")) {
try {
//Obtenemos el valor del contador de visitas actual
contador = Integer.parseInt(c.getValue());
} catch (NumberFormatException e) {
//En caso de error, reiniciamos el contador de visitas
contador = 0;
}
}
}//fin del for
}//fin del if
//incrementamos el contador de visitas
//y lo agregamos la cookie en la respuesta
contador++;
Cookie c = new Cookie("contadorVisitas", Integer.toString(contador));
//La cookie se almacenará en el cliente por 1 hora (3600 seg)
c.setMaxAge(3600);
response.addCookie(c);
//Mandamos el mensaje al navegador
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Contador de visitas de cada cliente: " + contador);
}
//para peticiones doPost
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(req, resp);
}
//metodo para procesar peticiones es opcional
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}
</code>
<code pom.xml>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mx</groupId>
<artifactId>Servlet1</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<name>Servlet1</name>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>8.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
</code>
<code index.html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ejemplo de Contador de Visitas</title>
</head>
<body>
<h1>Ejemplo de Contador de Visitas</h1>
<br>
<a href="/Servlet1/ManejoCookies">
Link al Servlet Contador de Visitas
</a>
</body>
</html>
</code>
Puedes optar por omitir la anotacion del descriptor en la clase ManejoCookies y agregar el archivo web.xml en la carpeta WEB-INF, esto producirÃa el mismo resultado.
<code web.xml>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>ManejoCookiesController</servlet-name>
<servlet-class>cookies.ManejoCookies</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ManejoCookiesController</servlet-name>
<url-pattern>/ManejoCookies</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
</code>
Proyecto Completo
Estructura del proyecto
Manejo Cookies: Servlet bajo la anotacion de Webservlet
Dependencias: javaee
src\main\webapp\index.html: archivo inicial (WEB-INF carpeta de configuracion)
pom.xml: archivo de maven: es necesario el empaquetamiento war, el build y la dependencia de javaee.
<code ManejoCookies>
package cookies;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet(name = "ManejoCookies", urlPatterns = {"/ManejoCookies"})
public class ManejoCookies extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//Declaramos la variable contador
int contador = 0;
//Si existe, obtenemos el contador de visitas actual
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie c : cookies) {
if (c.getName().equals("contadorVisitas")) {
try {
//Obtenemos el valor del contador de visitas actual
contador = Integer.parseInt(c.getValue());
} catch (NumberFormatException e) {
//En caso de error, reiniciamos el contador de visitas
contador = 0;
}
}
}//fin del for
}//fin del if
//incrementamos el contador de visitas
//y lo agregamos la cookie en la respuesta
contador++;
Cookie c = new Cookie("contadorVisitas", Integer.toString(contador));
//La cookie se almacenará en el cliente por 1 hora (3600 seg)
c.setMaxAge(3600);
response.addCookie(c);
//Mandamos el mensaje al navegador
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Contador de visitas de cada cliente: " + contador);
}
//para peticiones doPost
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(req, resp);
}
//metodo para procesar peticiones es opcional
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}
</code>
<code pom.xml>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mx</groupId>
<artifactId>Servlet1</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<name>Servlet1</name>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>8.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
</code>
<code index.html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ejemplo de Contador de Visitas</title>
</head>
<body>
<h1>Ejemplo de Contador de Visitas</h1>
<br>
<a href="/Servlet1/ManejoCookies">
Link al Servlet Contador de Visitas
</a>
</body>
</html>
Puedes optar por omitir la anotacion del descriptor en la clase ManejoCookies y agregar el archivo web.xml en la carpeta WEB-INF, esto producirÃa el mismo resultado.
<code web.xml>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>ManejoCookiesController</servlet-name>
<servlet-class>cookies.ManejoCookies</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ManejoCookiesController</servlet-name>
<url-pattern>/ManejoCookies</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
Proyecto Completo
No hay comentarios.