Je suis le tutoriel : Apprendre à développer les services REST avec Spring Boot et Spring RestTemplate https://bnguimgo.developpez.com/tuto...-resttemplate/ et j'ai du mal à comprendre certaines choses.

1. Pourquoi la Classe UserDto se trouve dans la partie serveur et client à la fois:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.bnguimgo.springbootrestclient.dto;
import java.io.Serializable;
 
import org.hibernate.validator.constraints.NotEmpty;
 
public class UserDto implements Serializable{
 
	private static final long serialVersionUID = 3046638822810400597L;
 
	@NotEmpty(message = "Entrez votre login")
    private String login;
 
    @NotEmpty(message = "Entrez un mot de passe")
    private String password;
 
    public String getLogin() {
        return login;
    }
 
    public void setLogin(String login) {
        this.login = login;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
 
  //Formatage d'un objet en String
    @Override
     public String toString() {
     return String.format("[login=%s, password=%s]", login, password);
     }
}
2. J'aimerai savoir à quoi servent les 2 derniers paramètres User.class et variables concernant cette ligne:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
ResponseEntity<User> userExists =  restTemplate.getForEntity(configurationService.getUrl() +"user/users/{loginName}", User.class, variables);

3. Le formulaire contenu dans la page loginForm.jsp contient aussi un champ password. Or c'est seulement le login qui est géré lors de la tentative de connexion:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@PostMapping(value = "/login")
    public ModelAndView login(@Valid @ModelAttribute("userForm") UserDto userForm,
            BindingResult bindingResult, ModelAndView modelAndView) {
 
        modelAndView.setViewName("loginForm");
        if (bindingResult.hasErrors()) {
            return modelAndView;
        } 
        Map<String, String> variables = new HashMap<String, String>(1);
        variables.put("loginName", userForm.getLogin());
 
        ResponseEntity<User> userExists =  restTemplate.getForEntity(configurationService.getUrl() +"user/users/{loginName}", User.class, variables);
        User user = userExists.getBody();
        if (user == null) {//ceci nous évite d'écrire une page de gestion des erreurs
            modelAndView.addObject("saveError", "Aucun utilisateur trouvé avec ce compte");
            return modelAndView;
        }
        modelAndView.setViewName("loginSuccess");
       return modelAndView; 
    }
Y a t-il un autre endroit où le password est géré?

4. A quoi sert le (1) à la fin de cette ligne:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Map<String, String> variables = new HashMap<String, String>(1);
Merci