Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.
For the best experience please use the latest Chrome, Safari or Firefox browser.
HttpServlet
javax.servlet.http.HttpServlet
.
public abstract class HttpSerlet extends GenericServlet {
protected void doGet(...) { ... }
protected void doPost(...) { ... }
protected void doPut(...) { ... }
/*Pas de doPatch() ! Mais vous pouvez l'ajouter vous-même...*/
protected void doDelete(...) { ... }
protected void doHead(...) { ... }
protected void doOptions(...) { ... }
protected void doTrace(...) { ... }
//Analyse la requête d'entrée et appelle la bonne méthode doX()
public void service(...) {...}
}
HttpServlet
.
doGet()
GET
classique
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html");
PrintWriter printWriter = resp.getWriter();
printWriter.println("<html><head>");
printWriter.println("<title>Hello Servet</title>");
printWriter.println("</head><body>");
printWriter.println("<h1>Hello !</h1>");
printWriter.println("</body></html>");
printWriter.close();
}
}
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app version="3.0"
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_3_0.xsd">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/sayhello</url-pattern>
</servlet-mapping>
</web-app>
http://localhost:8080/sayhello
.
web.xml
web.xml
définir le mapping entre les URL et les servlets. Le serveur web gère chaque requête en la confrontant au mapping de ce fichier pour appeler la bonne méthode de la bonne classe.
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>HelloServlet</servlet-class>
<init-param>
<param-name>nom</param-name>
<param-value>Bob</param-value>
</init-param>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
</servlet>
http://locahost:8080/hello/*
seront redirigés vers la servlet HelloServlet
. On peut récupérer le paramètre nom avec String nomDefault = getServletConfig().getInitParameter("nom");
doGet()
et des paramètreshttp://localhost:8080?nom=IPI
ou le paramètre nom vaut IPI.
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html");
String nom = req.getParameter("nom");
PrintWriter printWriter = resp.getWriter();
printWriter.println("<html><head>");
printWriter.println("<title>Hello Servet</title>");
printWriter.println("</head><body>");
printWriter.println("<h1>Hello " + nom + "!</h1>");
printWriter.println("</body></html>");
printWriter.close();
}
}
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app version="3.0"
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_3_0.xsd">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/sayhello</url-pattern>
</servlet-mapping>
</web-app>
http://localhost:8080/sayhello?nom=IPI
.
doPost()
POST
.
public class HelloServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //Même code que pour doGet } }
<!DOCTYPE html> <html lang="en"><!--index.html--> <head><meta charset="UTF-8"><title>Bonjour</title></head> <body> <form action="http://localhost:8080/sayhello" method="post"> Votre nom : <input type="text" name="nom" value=""> <input type="submit" value="OK"> </form> </body></html>
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app version="3.0"
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_3_0.xsd">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/sayhello</url-pattern>
</servlet-mapping>
</web-app>
http://localhost:8080/index.html
on verra le formulaire qui une fois validé affichera Hello nomFormulaire !.
init()
est appelée une fois lors de la première requête sur la servlet. On peut appeler la méthode destroy()
si l'on souhaite détruire la servlet.
web.xml
. De plus, lorsqu'on a deux requêtes sur le même URL avec la même méthode, on n'est obligé de passer par la même méhode doX()
.
@RestController
.
@RestController
@RequestMapping(value = "/sayhello")
public class HelloController {
//...
}
@RequestMapping
. Ce contrôleur gérera toutes les requêtes commençant par /vehicules
@RequestMapping
.
@RequestMapping(
method = RequestMethod.POST, //Méthode HTTP : GET/POST/PATCH/PUT/DELETE
consumes = "application/json", //Type MIME des données passées avec la requête : JSON, XML, Texte...
produces = "application/json", //Type MIME des données fournies dans la réponse
value = "/vehicules" //Chemin du mapping (concaténé avec l'éventuel chemin présent au niveau du contrôleur)
)
public ...
QueryParams
QueryParams
sont les paramètres qui sont passés dans l'url. Par exemple http://localhost:8080?page=1&size=15
. Il y a deux paramètres : page
valorisé à 1 et size
valorisé à 15. Pour les récupérer, on utilise l'annotation @RequestParam
.
@RequestMapping(...)
public String exemple(
@RequestParam("page") Integer page,
@RequestParam("size") Integer size)
{
...
}
http://localhost:8080/hello/1
@RequestMapping(value = "/{name}", ...)
public String hello(
@PathVariable (value = "name") String name)
{
...
}
@RequestBody
, cela correspond au champ data
de la requête.
@RequestMapping(...)
public String createVehicule (
@RequestBody Vehicule vehicule)
{
...
}
Map
.