Spring随笔4
来源:互联网 发布:linux下more命令 编辑:程序博客网 时间:2024/05/28 11:29
1、登录验证中的一点问题
在进行登录验证的时候,发现无论用户名/密码对错都会登陆成功,通过寻找getMatchUser方法,发现是其SQL语句出了问题,原SQL是
select count(*) from t_user where user_name=? and password=?
这样一来,无论user_name和password是什么,它的结果不是1就是0,方法中,总会返回true。我将它改成
select * from t_user where user_name=? and password=?
就ok了。
2、Java反射机制
通过一个汽车制造的实例来演示Java反射机制
首先,定义一个Car类,包括brand,color和Maxspeed三个属性;两个构造方法,一个生产方法
Car.java
public class Car { private String brand; private String color; private int maxSpeed; public Car(){ } public Car(String brand,String color,int maxSpeed){ this.brand=brand; this.color=color; this.maxSpeed=maxSpeed; } public void introduce(){ System.out.println("brand:"+brand+",color:"+color+",maxSpeed:"+maxSpeed); } set/get方法。。。}
通过Java反射机制间接的操作类
ReflectTest.java
import java.lang.reflect.Constructor;import java.lang.reflect.Method;public class ReflectTest { public static Car initByDefaultConst() throws Throwable{ //通过类装载器获取Car类对象 //获取当前线程的ClassLoader ClassLoader loader=Thread.currentThread().getContextClassLoader(); //通过指定的全限定类“”装载Car类对应的反射实例 Class clazz=loader.loadClass("com.changhong.reflect.Car"); //获取类的默认构造器对象并通过它实例化Car //通过Car的反射类对象获取Car的构造函数对象cons Constructor cons=clazz.getDeclaredConstructor((Class[])null); //通过构造函数对象的newinstrance()方法实例化Car对象,等同于new Car(); Car car=(Car)cons.newInstance(); //通过反射方法设置属性,getMethod(String methodName,Class paramClass)获取属性 的set方法对象 //获得方法对象,第一个参数是目标Class的方法名,第二个是对象的入参类型 Method setBrand=clazz.getMethod("setBrand",String.class); //通过invoke(Object obj,obj param)方法调用目标类的方法,第一个参数是类实例对象,第二个是目标方法的入参 setBrand.invoke(car, "Lamborghini Murcielago"); Method setColor=clazz.getMethod("setColor",String.class); setColor.invoke(car, "red"); Method setMaxSpeed=clazz.getMethod("setMaxSpeed",int.class); setMaxSpeed.invoke(car, 380); return car;} public static void main(String[] args) throws Throwable{ Car car=initByDefaultConst(); car.introduce(); }}
这说明在编程中调用Class的各项功能,和通过构造函数和方法直接调用类函数的结果是一样的,在前面的代码中主要用到了Method,ClassLoader,Class,Constructor等反射类,通关这些反射类就可以调用目标Class的各项功能了。
工作总结
0 0
- Spring随笔4
- spring学习随笔4
- spring随笔
- Spring随笔
- spring随笔
- Spring随笔
- spring随笔
- spring随笔
- Spring随笔
- spring 事务管理 随笔
- spring mvc随笔
- Spring mvc随笔
- spring基础知识随笔
- Spring随笔1
- Spring随笔2
- Spring随笔3
- Spring随笔5
- Spring随笔6
- ThinkPHP函数详解:C方法
- 51nod 1264 线段相交 (模板)
- Windows7/8/10系统中Altera USB-Blaster驱动安装的终极解决办法
- JavaScript: 取得 function 的所有参数名
- 向量之战 by 神经病
- Spring随笔4
- Win7下PDF文件无法显示缩略图的解决方法
- 启动图后面加入别的启动图片
- oralce 动态sql 点位符示例
- Java数组!!!你知多少?
- java 同对象不同方法线程同步的研究
- 新书到货 Fundamentals of Music Processing by Meinard Muller
- Nginx性能提升--引入线程池性能提升9倍
- igrimace V8 支持8系统越狱设备 一键新机 苹果伪造工具