2.1 Classe HttpServletRequest
La plupart du travail que votre servlet doit faire est basé sur les informations reçues de la requête. L'objet en est responsable HttpServletRequest
, que le conteneur transmettra à votre servlet (à la méthode service
ou aux méthodes doGet()
, doPost()
etc.)
Cet objet a plusieurs méthodes, car il stocke simplement les données de la requête et, à travers lui, vous pouvez interagir avec le conteneur.
Les méthodes peuvent être divisées en 2 grands groupes :
- Méthodes liées à l'autorisation des utilisateurs
- Méthodes d'utilisation des données de requête
Je donnerai les méthodes d'autorisation de l'utilisateur sous forme de tableau, mais nous ne les analyserons pas. Le fait est qu'ils sont très rarement utilisés pour autoriser un utilisateur. Tous les frameworks populaires utilisent leurs propres approches d'autorisation beaucoup plus avancées.
Je devrais les énumérer, mais encore une fois, je n'ai vu personne les utiliser.
Méthode | Description | |
---|---|---|
1 | authenticate(HttpServletResponse) |
Effectue l'authentification de la réponse |
2 | changeSessionId() |
Changer de force l'ID de session |
3 | getAuthType() |
Renvoie le type d'authentification utilisé : ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH |
4 | getRemoteUser() |
Renvoie la connexion de l'utilisateur |
5 | getRequestedSessionId() |
Renvoie le SessionID du client |
6 | getSession() |
Renvoie un objet HttpSession |
7 | getUserPrincipal() |
Renvoie un objet java.security.Principal |
8 | login(username, password) |
Effectue la connexion de l'utilisateur |
9 | logout() |
Déconnecte la session utilisateur |
2.2 Demander des données
Le deuxième groupe de méthodes est beaucoup plus intéressant. Quel type de données avons-nous dans la demande ?
- méthode http
- URI
- Choix
- Titres
Voyons quelles méthodes sont disponibles pour travailler avec eux:
Méthode | Description | |
---|---|---|
1 | getMethod() |
Renvoie la méthode HTTP : GET, POST, DELETE, ... |
2 | getRequestURI() |
Renvoie l'URI de la requête : http://codegym.cc/my/data |
3 | getRequestURL() |
Renvoie l'URL de la requête : http://codegym.cc/my/data |
4 | getQueryString() |
Renvoie Query, c'est-à-dire tout ce qui suit le ? |
5 | getParameterMap() |
Renvoie une liste de paramètres de requête |
6 | getParameter(String name) |
Renvoie la valeur du paramètre par son nom |
7 | getContentType() |
Renvoie le corps de la requête MimeType |
8 | getReader() |
Lecteur pour lire le corps de la requête sous forme de texte |
9 | getInputStream() |
InputStream pour lire le corps de la requête en tant qu'octet [] |
dix | getSession() |
Renvoie un objet HttpSession |
onze | getCookies() |
Renvoie un tableau d'objets Cookie[] |
12 | getHeaderNames() |
Renvoie une liste de titres, noms uniquement |
13 | getHeader(String name) |
Renvoie la valeur d'en-tête par nom |
14 | getServletPath() |
Renvoie la partie de l'URL qui fait référence au servlet |
15 | getContextPath() |
Renvoie la partie de l'URI qui spécifie le contenu de la requête |
Et ce n'est même pas toutes les méthodes...
Bien qu'après avoir étudié le protocole HTTP et appris à travailler avec HttpClient, tout est plus ou moins familier ici, n'est-ce pas ?
Écrivons une servlet à laquelle on peut transmettre du texte et une couleur, et elle renverra une page HTML avec ce texte écrit dans la couleur spécifiée. Comment aimez-vous l'idée?
Commençons par écrire notre servlet :
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
//write your code here
}
}
Nous devons maintenant obtenir le texte et la couleur transmis depuis l'URI par l'utilisateur :
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
// Getting the parameter “text” и “color” from request
String text= request.getParameter("text");
String color = request.getParameter("color");
}
}
Et enfin, vous devez sortir le texte au format HTML. Nous couvrirons cela dans la prochaine conférence, mais ici je vais donner un petit indice :
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
// Get the "text" and "color" parameters from the request
String text = request.getParameter("text");
String color = request.getParameter("color");
// Print the HTML as a response to the browser
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head> <title> ColorTextServlet </title> </head>");
out.println("<body>");
out.println("<h1 style="color:"+color+">"+text+"</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
}
GO TO FULL VERSION