【发布时间】:2011-02-23 20:08:19
【问题描述】:
我有一个简单的人类:
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">
name: <input type="text" name="name"><br>
second name: <input type="text" name="secondname"><br>
<input type="submit">
</form>
</body>
</html>
还有一个简单的 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");
}
}
有没有办法自动设置参数?
像魔法一样的东西
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");
}
【问题讨论】:
-
这当然可以通过反射 API 来完成,但问题是它是否比它的价值更麻烦,除非你经常遇到这种情况或有大量的属性要设置。另外请记住,您可能想要进行一些验证(“是否给出了参数?”“该字段的值是否有效?”)
-
为了您的理智,请将您的 servlet 重命名为
PersonServlet或其他名称。 -
谢谢johusman,我希望已经有了一些东西。验证和其他逻辑稍后在类的实例上完成。
-
Jeremy,这只是我专门为这篇 SO 帖子写的一个例子 :)
标签: java forms servlets javabeans