How to pass the attribute value from jsp page to spring controller
There are multiple ways to do this. I will explain a couple of ways.
- Create a user class at the server which contains a name and password field(this is not a good practice to keep password in same object but for learning purpose its perfectly ok) as:
- public class User{
- private String userName;
- private String password;
- //getters and setters
- }
Now the spring controller would look like:
- @RequestMapping(value="login", method=RequestMethod.POST)
- public void loginUser(User user){
- //user object will automatically be populated with values sent from browser or jsp page. Provide your authentication logic here
- }
In the above method, note that
- the name given in value attribute of @RequestMapping should match the html page form action value.
- We gave the object of user class as method argument in the loginUser function. If you give a class object in a controller method as argument then its field names(userName and password in this case) should match the name attribute of html form input tags.
Now coming to html form, it will look like:
In the above form note that:
- the name attributes of inputs whose values you want to send to server should exactly match with the field names of the class object which we have given in the controller method.
- form action should match the value of RequestMapping annotation of controller method.
2. Il secondo metodo consiste nel cambiare il metodo del controllore. Il modulo HTML rimane lo stesso. Il metodo del controllore sarà come
@RequestMapping(value="login", method=RequestMethod.POST)
public void loginUser(@RequestParam("userName")String name, @RequestParam("password")String password ){
//Provate la vostra logica di autenticazione usando i valori di nome e password
}
Nota:
- I valori dati in RequestParam dovrebbero corrispondere esattamente agli attributi del nome dei tag di input del modulo html.
- Ci potrebbe essere la necessità di creare o meno la classe User nel secondo metodo. Dipende dai tuoi requisiti, ma la logica di autenticazione può essere scritta senza la classe User anche nel secondo metodo.
Siccome hai detto che stai usando Spring, ti ho detto i modi specifici di Spring per realizzare questo dato che @RequestMapping, @RequestParam, @RequestMethod sono annotazioni Spring.
In entrambi i metodi di cui sopra l'approccio che viene usato è :
Appena invii il modulo, tutti gli elementi di input vengono inviati come parametri al server sotto forma di coppie chiave-valore. La chiave è il valore dato negli attributi name degli elementi di input e i valori sono la stringa inserita in quegli elementi di input dall'utente che invia il modulo. L'unica differenza sta nel modo in cui queste coppie chiave-valore sono ricevute dal server. Ci può essere un oggetto i cui campi corrispondono alle chiavi (primo approccio) o ci possono essere degli argomenti definiti per ricevere ogni coppia chiave-valore separatamente (secondo approccio).
Dimmi per qualsiasi altro chiarimento.
Spero che questo aiuti!!!