servlet的应用------request对象和bean实体的反射关系

servlet的应用------request对象和bean实体的反射关系

public class FormBeanVO{

	public <T> T getFormBean(HttpServletRequest request, Class<T> k) {
		try {
			T o = k.newInstance();
			for(Method m : k.getDeclaredMethods()) {
				String mName = m.getName();
				String requestName = request.getParameter(setLower(mName.substring(3)));
				if(requestName == null || "".equals(requestName)) continue;
				else {
					if(mName.startsWith("set")) {
						if(m.getParameterTypes()[0].equals(int.class) || 
								m.getParameterTypes()[0].equals(Integer.class)) {
							m.invoke(o, Integer.valueOf(requestName));
						} 
						else if(m.getParameterTypes()[0].equals(boolean.class) || 
								m.getParameterTypes()[0].equals(Boolean.class)) {
							m.invoke(o, Boolean.valueOf(requestName));
						}
						else if(m.getParameterTypes()[0].equals(String.class)) {
							m.invoke(o, requestName);
						}
						else if(m.getParameterTypes()[0].equals(float.class) || 
								m.getParameterTypes()[0].equals(Float.class)) {
							m.invoke(o, Float.valueOf(requestName));
						}
						else if(m.getParameterTypes()[0].equals(long.class) || 
								m.getParameterTypes()[0].equals(Long.class)) {
							m.invoke(o, Long.valueOf(requestName));
						}
						else if(m.getParameterTypes()[0].equals(Timestamp.class)) {
							m.invoke(o, Timestamp.valueOf(requestName));
						}
					}
				}
			}
			return o;
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	private String setLower(String s) {
		StringBuilder builder = new StringBuilder(s);
		String first = s.substring(0, 1).toLowerCase();
		builder.setCharAt(0, first.charAt(0));
		return builder.toString();
	}
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值