Está en la página 1de 25

Universidad UTE

Facultad de Ciencias de la Ingeniería e Industrias

Aplicaciones Distribuidas
Aplicaciones Web
Servlets – JSP

Diego Ordóñez Camacho, Ph.D.


Referencias
● https://docs.oracle.com/javaee/7/tutorial/servlet
s.htm
● http://www.novocode.com/doc/servlet-
essentials/
● https://docs.oracle.com/javaee/7/tutorial/webap
p005.htm
● https://docs.oracle.com/javaee/7/tutorial/servlet
s006.htm
● http://www.ibm.com/developerworks/java/tutoria
ls/j-introjsp/
Creación
● Crear Aplicación Web
● File / New Project
– Java Web / Web Application
● Crear {Servlet, JSP, HTML, Filter}
● File / New File
– Web / {Servlet, JSP, HTML, Filter}
● Las Servlets/Filters van dentro de
– Source packages
● Las JSP/HTML van dentro de
– Web Pages
Servlets
● Extiende de
● javax.servlet.http.HttpServlet
– public class MiServlet extends HttpServlet {…}

● Se debe configurar su acceso por http


● Generándole un path de recurso
Configurar Servlets
● web.xml
● <servlet>
<servlet-name>Nombre</servlet-name>
<servlet-class>codigo.SendInfo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Nombre</servlet-name>
<url-pattern>/send</url-pattern>
</servlet-mapping>
● Cuando se llame al path /send se ejecutará
● codigo.SendInfo
…Configurar Servlets
● Alternivamente
● Configurar la clase con una anotación
– @WebServlet(name = "SendInfo", urlPatterns = "/send")
Recibir/Enviar valores
● Recibe valores del cliente en
● HttpServletRequest request
● Envía valores al cliente por
● HttpServletResponse response
…Recibir/Enviar valores
● Dónde?
● doGet, doPost, …
@Override
protected void doGet( //es igual para doPost, …
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {

PrintWriter out = response.getWriter();


out.println("Debe utilizar el formulario login.html");
}
Recuperar de request
● Recuperar un valor enviado por el browser
● sea por GET o por POST
– String valor = request.getParameter("nombre");
Enviar por response
● Enviar encabezados
● response.setContentType("text/html;charset=UTF-8");
● Enviar contenido
● PrintWriter out = response.getWriter();
out.println("texto enviado al browser");
Guardar datos del cliente

● Guardar en session
● HttpSession session = request.getSession(true);
session.setAttribute("nombre", "valor");
● Guardar cookie
● Cookie cookie = new Cookie(“nombre", “valor");
response.addCookie(cookie);
Recuperar datos (guardados) del
cliente
● Recuperar de session
● HttpSession session = request.getSession(true);
● String valor = session.getAttribute(“nombre”).toString();
● Recuperar cookie
● Cookie[] cookies = request.getCookies();
for (Cookie c : cookies) {
String nombre = c.getName();
String valor = c.getValue();
}
Redireciconar datos
● Pasar un dato a otro componente (antes de
redireccionar!)
● Guardar en request (para hacer forward)
– request.setAttribute(“nombre”, valor);
● Redirecciona a otro componente
● request
.getRequestDispatcher(“path componente")
.forward(request, response);
● Recuperar un valor pasado por otro pograma
● String valor = (String)
request.getAttribute("nombre");
Archivos
● Enviar desde el cliente
● <form
action=“servlet-path"
method="post"
enctype="multipart/form-data">

<input type="file" name="file" />


<input type="submit" value="Enviar"/>

</form>
…Archivos
● Recibir en la Servlet
● Decorar Servlet con @MultipartConfig
● Cada archivo viene en una “parte”, cuyo nombre es
el del botón submit
– Part filePart = request.getPart("file");
● En la parte consta p.ej. el nombre del archivo
– String fileName = filePart.getSubmittedFileName();
● Cada parte tiene su propia InputStream para leer el
archivo
– InputStream fileContent = filePart.getInputStream();
…Archivos
● Enviar al cliente
● Enviarlo directamente por la OutputStream de la
response
– P.ej:
Path fileToDownload =
Paths.get(FILES_DIR_PATH + fileName);
– Files.copy(
fileToDownload,
response.getOutputStream());
Java Server Pages - JSP
● Página HTML con código Java embebido
● El código Java permite generar contenido
HTML dinámico
● Una página JSP es compilada y transformada
en una Servlet (automáticamente en el
servidor)
Elementos JSP
● Plantilla de contenido
● HTML estático
● Elementos JSP
● Código Java para configuración o ejecución que se
encuentra en etiquetas especiales
– Comentarios
● <%- - … - -%>
… Elementos JSP
– Expresiones
● <%= … %>

– Scriptlets
● <% … %>
– (Código en general)

– Directivas
● <%@ … %>
Directiva: page
● Permite definir propiedades generales de la
página como codificación, tipo de contenido, …
● <% @ page contentType="text/html" pageEncoding="UTF-8“ %>
– Esta instrucción se espera que esté al inicio de todas las JSP

● Paquetes o clases que se importan


● <% @ page import=“java.util.*, java.x.Y” %>
● …
Expresiones
● Son instrucciones que generan un valor
● <%= expresion %>
– Solo una expresión por etiqueta
– NO se cierra la expresión con punto y coma
● <%= 2 + 2 %>
● <%= name %>
● <%= x2(5) %>
● <%= new java.util.Date() %>
Scriptlets
● Código Java en general, para p.ej. controlar el
flujo de las operaciones
● <%
if(a > b) {
x = y;
} else {
y = y;
}
%>
…Scriptlets
● Se pueden intercalar con el contenido HTML de
la plantilla
● <% if(a > b) { %>

<p> a es mayor que b </p>

<% } else { %>

<p> a NO es mayor que b </p>

<% } %>
Objetos implícitos
● Algunos objetos de uso común no deben ser
creados o declarados. Se encuentran
automáticamente a nuestra disposición
● request y response
● out (flujo de salida: out.println(“hola”))
● session y application
● exception (información del error para páginas de
error)
● …
Distribución en capas
● En un esquema como por ejemplo MVC,
generalmente:
● Servlet: Controlador. Reciben el request y
distribuyen el trabajo
● JSP: Vista. Reciben los datos procesados y los
presentan al usuario como html
● EJB (Enterprise Java Bean): Modelo (y negocio).
Generalmente interactúan con la base de datos,
procesan los datos, y los devuelven al controlador

También podría gustarte