Un modo semplice per popolare i Javabean in base ai parametri della richiesta

Ho una class di una persona semplice:

package simpleApp.entities; public class Person { private String name; private String secondname; public void setSecondname(String cognome) { this.secondname = cognome; } public String getSecondname() { return secondname; } public void setName(String nome) { this.name = nome; } public String getName() { return name; } } 

e una semplice pagina html:

   
name:
second name:

e un semplice servlet:

 public class Person extends HttpServlet { private static final long serialVersionUID = 1L; public Person() { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //LOOK HERE: simpleApp.entities.Person p = new simpleApp.entities.Person(); p.setName(request.getParameterValues("name")[0]); p.setSecondname(request.getParameterValues("secondname")[0]); response.sendRedirect("/simpleApp/index.html"); } } 

C’è un modo per automatizzare l’impostazione dei parametri?

Qualcosa di magico come

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { simpleApp.entities.Person p = new simpleApp.entities.Person(); Magic.justSetEverything(p, request); // NOT NEEDED ANYMORE!!! MUAHAHAHA more time for coffee // p.setName(request.getParameterValues("name")[0]); // p.setSecondname(request.getParameterValues("secondname")[0]); response.sendRedirect("/simpleApp/index.html"); } 

Per questo Apache Commons BeanUtils è spesso usato.

 BeanUtils.populate(bean, request.getParameterMap()); 

Questo è tutto.

Per ottenere un ulteriore passo avanti, è ansible adottare un framework MVC che utilizza Javabeans come modelli in modo che non sia necessario preoccuparsi di essi, come JSF o Spring MVC .


Non correlato alla domanda concreta, l’uso di getParameterValues() è maldestro in questo specifico esempio. Basta usare getParameter() .

 p.setName(request.getParameter("name")); p.setSecondname(request.getParameter("secondname"));