例如,前端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)方法进行数据封装
一样平常实在不须要自定义转换器,只有在分外情形下才会自定义转换器