在Servlet中我们可以通过一系列提供的现有方法完成获取前端表单数据的功能。这其中包括如下与获取表单数据相关的方法
例如,前端HTML页面上包含一个表单,表单里是一个input 文本框,想要在Servlet中获取该表单提交过来的值,可以使用以下四种方法调用。
<input type="text" name="username" />
最常用HttpServletRequest中的相关方法:
1. getParameter(name) 根据表单中name属性的名,获取value属性的值方法
getParameterValues(String name)专业为复选框取取提供的方法 返回的是一个String类型的数组
getParameterNames() 得到表单提交的所有name的方法 获得form表单所有的标签名,返回值为枚举(Enumeration) 用法和迭代器类似。通过迭代,获取标签名,调用getParameterValues方法传入名称,根据名称获取值。
getParameterMap 到表单提交的所有值的方法。获得表单项里 标签名与值对应的集合 key:标签名;value:标签值
getInputStream 以字节流的方式得到所有表单数据。表单提交方式为post时,请求消息正文有内容,可以使用getInputStream获得表单数据。
当成功获取到前端数据后,就可以继续完整封装对象的操作。
我们以getParameterMap方法为例完成对象的封装
将前台获得的数据封装对象
案例:
创建实体类javabean User.java
(约定大于配置原则 创建JavaBean
建议前端页面表单项name,JavaBean中的属性名 以及 数据库表里的字段名保持一致 方便我们的代码前后端统一 和日后功能扩展)
编写servlet.java
配置web.xml
修改register.html 的aciton地址提交到指定的Servlet中
BeanUtils
由于前几种封装对象方法过于繁琐 我们在下面接下来的开发中使用这一种封装对象方法
注意:如果想使用BeanUtils自动封装数据,表单form中元素的name需要与JavaBean中的属性一致。
什么是BeanUtils
BeanUtils一套开发包,Apache公司提供 ,专门进行javabean操作,在web层各种框架中被使用,例如:struts 使用BeanUtils操作JavaBean 。
实例
1、下载BeanUtils的jar :commons-beanutils 、commons-logging,需要同时下载两个jar包。(BeanUtils依赖Logging的jar包 )
2、将beanutils和logging的 jar包复制 工程/WebContent/WEB-INF/lib
注意:引BeanUtils包时要引org.apache.commons.beanutils
常用方法:
BeanUtils.populate(Object bean, Map properties)方法进行数据封装
因为需要为Map类型,因此需要通过request.getParameterMap()方法将form表单中的数据变为Map类型
HTML页面传到Servlet中的数据都是以String字符串形式传输的,假设,我们传入String类型的生日,想要存储到JavaBean中Date类型的属性中。这里面就涉及到String类型转换成Date类型。当需要进行转换时,就必须创建自定义转换器。
自定义转换器使用步骤
让该类实现Converter 接口,重写convert方法。
在convert方法中进行格式转换 设置日期格式
注册转换器
创建实现类重写方法
因为在转换器中定义了“yyyy年MM月dd日”的格式,因此在jsp页面的form表单需要输入信息为“1998年2月12日”这类的格式的字符串,才可以通过我们自定义的转换器进行转换,转换为Date类型并之后进行存储。
注册转换器
通过调用静态方法 完成转换器的注册
ConvertUtils.register(转换器, 目标类型.class);
修改之后的Servlet程序:
BeanUtils结论
BeanUtils.populate(Object bean, Map properties)方法进行数据封装
一般其实不需要自定义转换器,只有在特殊情况下才会自定义转换器
本文暂时没有评论,来添加一个吧(●'◡'●)