写之前不知道Spring已经实现这样的功能,所以傻傻的写了这个东西!

实现原理挺有趣的在此记录一下。从去年十月参加java开发以来自己终于有了点小进步。

好开心。

解决问题(详解):前端form表单提交过程中我们需要多次从前端获取各个参数。这样不效率,而表单提交过程中的内容绝大多数与pojo类重合,因此我就构想能不能利用pojo类来灵活接收前端信息,在简化代码的同时,让项目更加对象化。

主要功能:利用pojo类信息接收前端传入的表单信息避免书写代码过多繁杂影响效率。

代码入下。因为用了公司的内部一些框架所以替换成了

 value=(Integer)request.getAttribute(fieldName)这类东西!应该不影响使用与阅读
package org.hyena.contract.util;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import javax.servlet.http.HttpServletRequest; public class GetUtil { public <T> T getType(Class<T> classes, HttpServletRequest request){
T t=classFactiory(classes);
t=builder(t,request);
return t; } private <T> T builder(T t, HttpServletRequest request){
Class classes=t.getClass();
Field[] fields=(Field[]) classes.getDeclaredFields();
Method[] methods = classes.getDeclaredMethods();
String methonName="";
String TypeName="";
String fieldName=""; Object value=null;
for(Field f:fields){
methonName="set"+f.getName();
//取值
TypeName=f.getType().getSimpleName();
fieldName=f.getName();
if(TypeName.equals("Integer")||TypeName.equals("int")){
value=(Integer)request.getAttribute(fieldName);
}else if(TypeName.equals("Integer[]")||TypeName.equals("int[]")){
value=(Integer[])request.getAttribute(fieldName);
}else if(TypeName.equals("Double")||TypeName.equals("double")){
value=(Double)request.getAttribute(fieldName);
}else if(TypeName.equals("Double[]")||TypeName.equals("double[]")){
value=(Double[])request.getAttribute(fieldName);
}else if(TypeName.equals("String")||TypeName.equals("char")){
value=(String)request.getAttribute(fieldName);
}else if(TypeName.equals("String[]")||TypeName.equals("char[]")){
value=(String[])request.getAttribute(fieldName);
}
for(Method m:methods){
if(m.getName().toLowerCase().contains(methonName.toLowerCase())){
//插入值
try {
m.invoke(t,value);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
return t;
} /**
* 判断是否存在某属性的 set方法
*
* @param methods
* @param fieldSetMet
* @return boolean
*/
private boolean checkSetMet(Method[] methods, String fieldSetMet) {
for (Method met : methods) {
if (fieldSetMet.equals(met.getName())) {
return true;
}
}
return false;
}
/**
* @function 工厂类反射创造对象
* @param c
* @return
*/
private <T> T classFactiory(Class<T> c){
T t=null;
try {
t=c.newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return t;
}
}

功能并不是太完善太美好,只是作为一个自己的纪念,还有就是有兴趣的玩一玩。

希望大家善待萌新不要太打击~~~~~~~~~~~

这个工具类的结构详解:

传入参数:pojo类对象,request请求。

结构:

1利用类对象创建实例。

2获取类对象的属性数组与方法数组

3遍历类对象属性,并确定存在set方法。根据属性从前端传入request中获取属性名参数值

  3.1在遍历方法数组获取set方法把之前求的参数值放入对象中

4返回已经赋值完全的对象

一个利用pojo类从前端页面request中获取参数的小框架~的更多相关文章

  1. JSP userBean setProperty直接从request中获取参数

    JSP userBean setProperty直接从request中获取参数: form表单Jsp: <%@ page language="java" import=&qu ...

  2. java获取request中的参数、java解析URL问号后的参数

    java获取request中的参数.java解析URL问号后的参数.有时候我们需要从request中获取参数,或者获取拼接在Url后面的参数,有时候一个一个去拿有点麻烦,一起拿出来放在一个map里面需 ...

  3. pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等

    pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等 pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等 pojo类对应的就是数据库中的表 ...

  4. Java POJO类直接存储在MongoDB中

    记录Java POJO类直接存储在MongoDB中的策略. maven: <dependency> <groupId>org.mongodb</groupId> & ...

  5. 使用JavaScript获取url(request)中的参数

    这次是使用JavaScript来获取url(request)中的参数 在日常页面编写的过程中为了方便操作在<script>中通过使用window.location.href="要 ...

  6. 通过反射将request中的参数封装到对象中

    import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.text.SimpleDateFo ...

  7. 【Java/JDBC】利用ResultSetMetaData从数据库的某表中获取字段信息并存到csv文件

    代码下载:https://files.cnblogs.com/files/xiandedanteng/FindNotnullColumns20191102-2.rar 这篇还不够完善,请看更完善的续篇 ...

  8. setCharacterEncoding 是在request.getParameter获取参数之前 设置request的编码格式 一步到位

    setCharacterEncoding 是在request.getParameter获取参数之前 设置request的编码格式 一步到位

  9. Flask request接口获取参数

    Flask request接口获取参数   request.form.get("key", type=str, default=None) 获取表单数据, request.args ...

随机推荐

  1. JQuery学习笔记——层级选择器

    JQuery学习笔记--层级选择器 上一篇学习了基础的五种选择,分别是id选择器,class选择器,element选择器,*选择器 和 并列选择器.根据手册大纲,这篇学习的是层级选择器. 选择器: 1 ...

  2. 第一课 1) 控制div属性 总结

    点击按钮变换属性: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  3. jmeter之BeanShell对两个变量断言对比

    在jmeter的中,断言没法对两个变量的进行对比后判断,只能使用Bean Shell断言来进行. 假设需求: 获取某类型用户uid个数与数据库查询结果是否相等 获取uid个数用http接口获取统计数据 ...

  4. 学习笔记TF032:实现Google Inception Net

    Google Inception Net,ILSVRC 2014比赛第一名.控制计算量.参数量,分类性能非常好.V1,top-5错误率6.67%,22层,15亿次浮点运算,500万参数(AlexNet ...

  5. 模拟EF CodeFist 实现自己的ORM

    一.什么是ORM 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单来说,ORM 是通过使用描述对象 ...

  6. Android Handler 机制 - Looper,Message,MessageQueue

    Android Studio 2.3 API 25 从源码角度分析Handler机制.有利于使用Handler和分析Handler的相关问题. Handler 简介 一个Handler允许发送和处理M ...

  7. 蓝桥杯比赛java 练习《立方变自身》

    立方变自身 观察下面的现象,某个数字的立方,按位累加仍然等于自身.1^3 = 1 8^3  = 512    5+1+2=817^3 = 4913   4+9+1+3=17... 请你计算包括1,8, ...

  8. [补档][NOI 2008]假面舞会

    [NOI 2008]假面舞会 题目 一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会.今年的面具都是主办方特别定制的.每个参加舞会的人都可以在入场时选择一个自己喜欢的面具. 每个面具都有一 ...

  9. HttpStatus各种状态

    JS.ns("JS.HTTPStatus","JS.XMLHttpRequest"); /** * FC 2616 HTTP1.1规范的HTTP Status状 ...

  10. 解决lxml不含etree模块导致scrapy startproject ***出错

    本文环境:win10(64) python3.6(64) 背景:之前已成功安装scrapy(1.4.0),但在命令行敲 scrapy startproject ***出错,错误提示:from ... ...