根据请求参数填充Javabeans的简单方法 [英] Easy way of populating Javabeans based on request parameters

查看:132
本文介绍了根据请求参数填充Javabeans的简单方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的人类:

  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;
}

}

和一个简单的html页面:

 < html> 
< body>

< form action =/ simpleApp / person /method =POST>
名称:< input type =textname =name>< br>
第二个名称:< input type =textname =secondname>< br>
< input type =submit>
< / form>

< / body>
< / html>

和一个简单的servlet:

  public class Person extends HttpServlet {
private static final long serialVersionUID = 1L;
$ b $ public Person(){
}

保护无效doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException {
}

protected void doPost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException {

//在这里:
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);
}

}

有没有办法自动化参数设置?



  protected void doPost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException {
simpleApp.entities.Person p = new simpleApp.entities.Person();

Magic.justSetEverything(p,request);

//不需要任何! MUAHAHAHA更多时间喝咖啡
// p.setName(request.getParameterValues(name)[0]);
// p.setSecondname(request.getParameterValues(secondname)[0]);

response.sendRedirect(/ simpleApp / index.html);


解决方案

对于 Apache Commons BeanUtils 经常用到。

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

就是这样。



更进一步,您可以采用使用Javabeans作为模型的MVC框架,以便您根本不必担心它们,例如 JSF Spring MVC






与具体问题无关,在此特定示例中使用 getParameterValues()是笨拙的。只需使用 getParameter()

  p.setName(request.getParameter (名称)); 
p.setSecondname(request.getParameter(secondname));


I have a simple person class:

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;
    }

}

and a simple html page:

<html>
<body>

    <form action="/simpleApp/person/" method="POST">
        name: <input type="text" name="name"><br>
        second name: <input type="text" name="secondname"><br>
        <input type="submit">
    </form>

</body>
</html>

and a simple 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");
    }

}

Is there a way to automate the parameter setting?

Something magic like

    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");
    }

解决方案

For that Apache Commons BeanUtils is often used.

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

That's it.

To get a step further, you can adopt a MVC framework which uses Javabeans as models so that you don't need to worry about them at all, such as JSF or Spring MVC.


Unrelated to the concrete question, using getParameterValues() is clumsy in this specific example. Just use getParameter().

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

这篇关于根据请求参数填充Javabeans的简单方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆