public String encodeGet(String str){ if(str!=null){ try { str = new String(str.getBytes("iso8859-1"),"utf-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return str; } public String getRequestEncode(String key){ String str = request.getParameter(key); return encodeGet(str); } public Object getByRequest(Object model){ //Object model = c.getInterfaces(); Class c = model.getClass(); Map<String,String> map = new HashMap(); Map<String,String[]> parammap = request.getParameterMap(); for(Map.Entry<String, String[]> entry:parammap.entrySet()){ String[] value = entry.getValue(); if(value.length==1){ map.put(entry.getKey(),value[0]); } } Field[] fields = c.getDeclaredFields(); try { for(int i=0;i<fields.length;i++){ Field field = fields[i]; field.setAccessible(true); String fname = field.getName(); String mvalue = map.get(fname); if(mvalue != null && !mvalue.equals("") && !mvalue.equals("null")){ String ftype = field.getType().getSimpleName(); if(ftype.equals("String")){ field.set(model, mvalue); }else if(ftype.equals("Integer") || ftype.equals("int")){ field.set(model, Integer.parseInt(mvalue)); }else if(ftype.equals("Double")){ field.set(model, Double.parseDouble(mvalue)); }else if(ftype.equals("Timestamp")){ Timestamp timestamp = Timestamp.valueOf(mvalue); field.set(model,timestamp); } } } }catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } return model; }
时间: 2024-01-05 22:04:45 浏览: 119
ISO-8859.docx
这是一段 Java 代码,主要是对 HTTP 请求中的参数进行编码,并将其赋值给一个 Java 对象。具体来说,它包括三个方法:
- encodeGet(String str):对传入的字符串进行 ISO8859-1 到 UTF-8 的编码转换,并返回转换后的字符串。
- getRequestEncode(String key):从 HTTP 请求中获取 key 对应的参数,并对参数进行编码转换。
- getByRequest(Object model):将 HTTP 请求中的参数转换成 Java 对象。它首先通过反射获取对象的所有字段,然后遍历所有参数,将参数的值赋给对应字段。在赋值之前,它会根据字段的类型进行类型转换。支持的类型包括 String、Integer、Double 和 Timestamp。
需要注意的是,这段代码存在一些问题。例如,它没有对参数的 key 进行空值判断,可能会导致空指针异常;它也没有处理参数值中包含特殊字符的情况,可能会引发安全问题。因此,在使用这段代码时需要进行改进。
阅读全文