JavaWeb---实现JavaBean来接收参数、请求转发、域对象
六、使用getParameterMap()
方法结合JavaBean的应用实现参数接收的通用方法
如果表单的参数非常多,使用getParameter(" ")
方法会造成代码的重复,方法会反复使用。如果用JavaBean来封装所有的参数,一次性读取参数值,显然会方便很多,SpringMVC框架也是这样做的。
1、什么是JavaBean
如果一个类具有无参的构造,私有的成员变量,针对变量提供共有的get
、set
方法,这种类 就是JavaBean。 它是封装的一种典型的例子。
它的作用一般用来封装数据,并在不同的类之间传递数据。
2、jdk就由一个针对JavaBean处理的包,是java.beans
包。里面提供了针对JavaBean内部属性及方法的处理类型。
Introspector
类
Introspector
类 中的 getBeanInfo(class<?> beanClass)
方法
BeanInfo
接口
BeanInfo
接口 中的getPropertyDescriptors()
方法(这个方法在其它的子类中被实现)
PropertyDescriptor
类
PropertyDescriptor
类 中的 getPropertyType()
方法
PropertyDescriptor
类 中的 getWriteMethod()
方法
getName()
方法 从PropertyDescriptor
类的父类 FeatureDescriptor
类 中继承而来
3、JavaBean的语法特征
JavaBean的属性名从哪里来? JavaBean的get、set方法名称是规定的写法,由get+属性名的大写开头单词,所以属性名是由get、set方法的命名来决定的,而不是由变量名来决定的。(也就是说,属性名的取值是从方法名的名字中提取而来的 比如:getId()
和 setId(Integer id)
方法 那么属性名就是 id
)
4、实现用JavaBean来自动接收参数
实现了一个Bean工具类。提供了一个静态方法接收Map和Bean类型的对象,然后对Bean 对象进行赋值。
在Servlet中调用以上方法,可以把多个参数封装到JavaBean对象中去。
一个 JavaBean
public class Person {
private Integer id;
private String name;
private Date date;
private String[] good;
public String[] getGood() {
return good;
}
public void setGood(String[] good) {
this.good = good;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", date=" + date +
", good=" + Arrays.toString(good) +
'}';
}
}
将 提交的数据 封装成 一个 JavaBean
对象
public class BeanUtil {
public static <T> T toBean(Map<String,String