code: public static <T> T fillBean(final ServletRequest request, T bean, CopyOptions copyOptions) {
  		final String beanName = StrUtil.lowerFirst(bean.getClass().getSimpleName());
  		return BeanUtil.fillBean(bean, new ValueProvider<String>() {
  			@Override
  			public Object value(String key, Type valueType) {
  				String value = request.getParameter(key);
  				if (StrUtil.isEmpty(value)) {
  					// 使用类名前缀尝试查找值
  					value = request.getParameter(beanName + StrUtil.DOT + key);
  					if (StrUtil.isEmpty(value)) {
  						// 此处取得的值为空时跳过，包括null和""
  						value = null;
  					}
  				}
  				return value;
  			}
  
  			@Override
  			public boolean containsKey(String key) {
  				// 对于Servlet来说，返回值null意味着无此参数
  				return (null != request.getParameter(key)) || (null != request.getParameter(beanName + StrUtil.DOT + key));
  			}
  		}, copyOptions);
  	}
docs: ServletRequest 参数转Bean
  
  @param <T> Bean类型
  @param request ServletRequest
  @param bean Bean
  @param copyOptions 注入时的设置
  @return Bean
  @since 3.0.4