En aquest tema, aprendrem a desenvolupar una aplicació web utilitzant Java. Ens centrarem en les tecnologies bàsiques necessàries per crear una aplicació web funcional, incloent-hi servlets, JSP (JavaServer Pages) i frameworks com Spring Boot. També veurem com desplegar l'aplicació en un servidor web.
Objectius del Tema
- Entendre els conceptes bàsics de les aplicacions web.
- Aprendre a utilitzar servlets i JSP per crear aplicacions web.
- Introduir-se en l'ús de Spring Boot per simplificar el desenvolupament d'aplicacions web.
- Desplegar una aplicació web en un servidor.
- Conceptes Bàsics d'Aplicacions Web
Què és una Aplicació Web?
Una aplicació web és un programa que s'executa en un servidor web i es pot accedir a través d'un navegador web. Les aplicacions web poden ser tan senzilles com una pàgina HTML estàtica o tan complexes com una aplicació de comerç electrònic.
Arquitectura d'una Aplicació Web
Les aplicacions web solen seguir una arquitectura de tres capes:
- Capa de Presentació: La interfície d'usuari, generalment implementada amb HTML, CSS i JavaScript.
- Capa de Lògica de Negoci: La lògica de l'aplicació, sovint implementada amb servlets, JSP o frameworks com Spring.
- Capa de Persistència: La base de dades o altres sistemes d'emmagatzematge de dades.
- Servlets i JSP
Servlets
Un servlet és una classe Java que s'executa en un servidor web i respon a les peticions HTTP. Els servlets són la base de moltes aplicacions web en Java.
Exemple de Servlet
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/hello") public class HelloServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.getWriter().println("<h1>Hello, World!</h1>"); } }
Explicació:
@WebServlet("/hello")
: Defineix la URL a la qual respondrà aquest servlet.doGet
: Mètode que maneja les peticions GET.
JSP (JavaServer Pages)
JSP és una tecnologia que permet crear pàgines web dinàmiques utilitzant Java. Les pàgines JSP es compilen en servlets.
Exemple de JSP
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Hello JSP</title> </head> <body> <h1>Hello, <%= request.getParameter("name") %>!</h1> </body> </html>
Explicació:
<%= request.getParameter("name") %>
: Inserta el valor del paràmetre "name" de la petició HTTP.
- Introducció a Spring Boot
Spring Boot és un framework que simplifica el desenvolupament d'aplicacions Java, incloent-hi aplicacions web. Proporciona configuració automàtica i una estructura de projecte predefinida.
Configuració del Projecte Spring Boot
- Crear un Projecte Spring Boot: Utilitza Spring Initializr (https://start.spring.io/) per generar un projecte Spring Boot.
- Dependències Necessàries: Assegura't d'incloure les dependències per a Spring Web.
Exemple de Controlador Spring Boot
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping("/hello") public String hello(@RequestParam(value = "name", defaultValue = "World") String name) { return String.format("Hello, %s!", name); } }
Explicació:
@RestController
: Indica que aquesta classe és un controlador REST.@GetMapping("/hello")
: Defineix la URL a la qual respondrà aquest mètode.@RequestParam
: Obté el paràmetre "name" de la petició HTTP.
- Desplegament d'una Aplicació Web
Desplegament en un Servidor Tomcat
- Descarregar i Instal·lar Tomcat: Descarrega Tomcat des de https://tomcat.apache.org/ i segueix les instruccions d'instal·lació.
- Desplegar l'Aplicació: Copia el fitxer WAR de la teva aplicació a la carpeta
webapps
de Tomcat. - Iniciar Tomcat: Executa el script
startup.bat
(Windows) ostartup.sh
(Linux/Mac).
Desplegament en un Servidor de Producció
Per a desplegar en un servidor de producció, pots utilitzar serveis com AWS, Heroku o altres plataformes de núvol. Spring Boot facilita el desplegament amb suport integrat per a diversos serveis de núvol.
Exercicis Pràctics
Exercici 1: Crear un Servlet
- Crea un projecte web en Java.
- Implementa un servlet que respongui a la URL
/greet
i mostri un missatge de benvinguda.
Exercici 2: Crear una Pàgina JSP
- Crea una pàgina JSP que mostri un formulari amb un camp de text per al nom.
- Quan l'usuari enviï el formulari, mostra un missatge de benvinguda amb el nom introduït.
Exercici 3: Desenvolupar una Aplicació amb Spring Boot
- Crea un projecte Spring Boot utilitzant Spring Initializr.
- Implementa un controlador que respongui a la URL
/welcome
i mostri un missatge de benvinguda.
Solucions
Solució Exercici 1
@WebServlet("/greet") public class GreetServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.getWriter().println("<h1>Welcome to our website!</h1>"); } }
Solució Exercici 2
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Welcome Form</title> </head> <body> <form action="welcome.jsp" method="post"> Name: <input type="text" name="name"> <input type="submit" value="Submit"> </form> </body> </html>
welcome.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Welcome</title> </head> <body> <h1>Welcome, <%= request.getParameter("name") %>!</h1> </body> </html>
Solució Exercici 3
@RestController public class WelcomeController { @GetMapping("/welcome") public String welcome(@RequestParam(value = "name", defaultValue = "Guest") String name) { return String.format("Welcome, %s!", name); } }
Conclusió
En aquest tema, hem après els conceptes bàsics per desenvolupar una aplicació web en Java, incloent-hi l'ús de servlets, JSP i Spring Boot. També hem vist com desplegar una aplicació en un servidor web. Amb aquests coneixements, estàs preparat per crear aplicacions web més complexes i desplegar-les en entorns de producció.
Curs de Programació en Java
Mòdul 1: Introducció a Java
- Introducció a Java
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
- Operadors
Mòdul 2: Flux de Control
Mòdul 3: Programació Orientada a Objectes
- Introducció a la POO
- Classes i Objectes
- Mètodes
- Constructors
- Herència
- Polimorfisme
- Encapsulació
- Abstracció
Mòdul 4: Programació Orientada a Objectes Avançada
Mòdul 5: Estructures de Dades i Col·leccions
Mòdul 6: Gestió d'Excepcions
Mòdul 7: Entrada/Sortida de Fitxers
- Lectura de Fitxers
- Escriptura de Fitxers
- Fluxos de Fitxers
- BufferedReader i BufferedWriter
- Serialització
Mòdul 8: Multithreading i Concurrència
- Introducció al Multithreading
- Creació de Fils
- Cicle de Vida dels Fils
- Sincronització
- Utilitats de Concurrència
Mòdul 9: Xarxes
- Introducció a les Xarxes
- Sockets
- ServerSocket
- DatagramSocket i DatagramPacket
- URL i HttpURLConnection