111111111111
Class<?> cls = class.forname ("package name. Class name");
Object o = cls.newinstance ();
222222222222
Method of Acquisition
method = Cls.getmethod ("Set" +stringutil.makefirstletteruppercase (key), boolean.class);// The Boolean here can also be other types such as: integer to see the value of the assignment
333333333333333
Execution method
Method.invoke (O,val); Val is a value that is the value of the Set method above
444444444444444444444444
Get all the methods of the class
Method[] ms = Cls.getmethods ();
Gets the return value type of one of the methods
String type = Ms[0].getreturntype (). GetName ();
return value type:
Java.lang.Long
Java.lang.String
Java.util.Date
Java.lang.Double
Java.lang.Float
Int
Here you can find the corresponding return value based on the name of the method, and then assign the parameter to the second step to get the second step of the method
55555555555555555555555555555555
An Excel import that uses reflection (personal code collection)
Front-end Code
<script type= "Text/javascript" >
$ (function () {
Import the underlying data
$ ("#importData"). Click (function () {
var RQ = $ ("#inpRq"). Val ();
var url = __ctx+ '/zjdlbb/zjdlbb/zjdlbb/importdialog.ht ';
var conf=$.extend ({},{dialogwidth:550, dialogheight:200,help:0,status:0,scroll:0,center:1});
var winargs= "dialogwidth=" +conf.dialogwidth+ "px;dialogheight=" +conf.dialogheight
+ "px;help=" + Conf.help + "; status=" + Conf.status + "scroll=" + conf.scroll + "center=" +conf.center;
Url=url.getnewurl ();
/*killdialog*/
Dialogutil.open ({
Height:conf.dialogHeight,
Width:conf.dialogWidth,
Url:url,
Isresize:true,
Succall:function (RTN) {
$.ligerdialog.success ("Import succeeded", "", function () {
Window.location.reload ();
Window.opener.refreshThis ();
});
}
});
});
});
</script>
<div class= "group" ><a class= "link" id= "ImportData" href= "javascript:;" > Import </a></div>
Background code
@RequestMapping ({"Importexcel"})
@Action (Description = "Import Excel pop-up Windows")
public void Importexcel (Multiparthttpservletrequest request,
HttpServletResponse response) throws Exception {
String RQ = Request.getparameter ("RQ");
SimpleDateFormat SDF = new SimpleDateFormat ("Yyyy-mm-dd");
SimpleDateFormat sdftime = new SimpleDateFormat ("Yyyy-mm-dd HH:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat ("yyyy-m-d");
Multipartfile fileload = Request.getfile ("xmlfile");
Resultmessage resultmessage = null;
try {
String FileType = Fileload.getoriginalfilename (). SUBSTRING (
Fileload.getoriginalfilename (). LastIndexOf (".") + 1,
Fileload.getoriginalfilename (). Length ());
Workbook wb = null;
if (filetype.equals ("xls")) {
WB = new Hssfworkbook (Fileload.getinputstream ());
} else if (Filetype.equals ("xlsx")) {
WB = new Xssfworkbook (Fileload.getinputstream ());
} else {
throw new Exception ("Read not Excel file");
}
Sheet Sheet = wb.getsheetat (0);
Xssfsheet s = null;
Hssfcell cell0 = null;
Hssfcell cell1 = null;
map<string, string> map = new hashmap<string, string> ();
Get total number of columns
int Coloumnum=sheet.getrow (0). Getphysicalnumberofcells ();
int Rownum=sheet.getlastrownum ();//Get Total rows
Class<?> cls = Class.forName ("COM.YTD.ZJDLBB.MODEL.ZJDLBB.ZJDLBB");
Method[] ms = Cls.getmethods ();
list<zjdlbb> list = new arraylist<zjdlbb> ();
map<string,string> KeyMap = This.getkey ();
Traverse each row of data, the first row 0 is the title
for (int i = 1; I <= rowNum; i++) {
Object o = cls.newinstance ();
Iterate through each column
for (int j = 0; J < Coloumnum; J + +) {
Get column headers
String title = Sheet.getrow (0). Getcell (j). Getstringcellvalue ();
/* IF (Title.endswith (")")) {
title = Title.substring (0,title.indexof (")");
}*/
Log.info ("title =============================" +title);
Get the value of a column
String colval = Sheet.getrow (i). Getcell (j). Getstringcellvalue ();
Find corresponding entity class properties
String key = Keymap.get (title);
Log.info ("Key =============================" +key);
if (Stringutil.isnotempty (key)) {
Traverse all method Names of a class
for (int k = 0; k < ms.length; k++) {
Getting the Get method
String tmp = "Get" +stringutil.makefirstletteruppercase (key);
When the Excel title is the same as the class property
if (Tmp.equals (Ms[k].getname ()) &&stringutil.isnotempty (Colval)) {
String SetType = Ms[k].getreturntype (). GetName ();
Log.info ("SetType =============================" +settype);
method = null;
if ("Boolean". Equals (SetType)) {
method = Cls.getmethod ("Set" +stringutil.makefirstletteruppercase (key), boolean.class);
Method.invoke (O,colval);
}else if ("java.lang.String". Equals (SetType)) {
method = Cls.getmethod ("Set" +stringutil.makefirstletteruppercase (key), string.class);
Method.invoke (O,colval);
}else if ("Java.lang.Long". Equals (SetType)) {
method = Cls.getmethod ("Set" +stringutil.makefirstletteruppercase (key), long.class);
Method.invoke (O,long.parselong (colval));
}else if ("int". Equals (SetType)) {
method = Cls.getmethod ("Set" +stringutil.makefirstletteruppercase (key), integer.class);
Method.invoke (O,integer.parseint (colval));
}else if ("Java.util.Date". Equals (SetType)) {
method = Cls.getmethod ("Set" +stringutil.makefirstletteruppercase (key), date.class);
Method.invoke (O,sdftime.parse (colval));
}else if ("Java.lang.Double". Equals (SetType)) {
Log.info ("Hhhhhhh ===========oooooooooooooooooooo==================" +settype);
method = Cls.getmethod ("Set" +stringutil.makefirstletteruppercase (key), double.class);
Method.invoke (O,double.parsedouble (colval));
}else if ("Java.lang.Float". Equals (SetType)) {
method = Cls.getmethod ("Set" +stringutil.makefirstletteruppercase (key), float.class);
Method.invoke (O,float.parsefloat (colval));
}
}
}
}
}
List.add ((ZJDLBB) o);
}
for (ZJDLBB entity:list) {
Long Id=uniqueidutil.genid ();
Entity.setid (ID);
Zjdlbbservice.add (entity);
}
String result = "Import data succeeded";
if (Result.contains ("Success")) {
Resultmessage = new Resultmessage (1, "Import succeeded!");
} else {
Resultmessage = new Resultmessage (0, result);
}
Writeresultmessage (Response.getwriter (), resultmessage);
} catch (Exception ex) {
Ex.printstacktrace ();
String str = messageutil.getmessage ();
Ex.getlocalizedmessage ();
if (Stringutil.isnotempty (str)) {
Resultmessage = new Resultmessage (0, "Import failed please check that the imported Excel is correct:"
+ str);
Response.getwriter (). print (resultmessage);
} else {
String message = Exceptionutil.getexceptionmessage (ex);
Resultmessage = new Resultmessage (0, "Import failed please check that imported Excel is correct");
Response.getwriter (). print (resultmessage);
}
}
}
Summary of the Java reflection mechanism