A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

同学们,今天主要内容是MVC和事务,代码量不大,更多是需要理解。

今日需要掌握的有:
  • 首先要掌握MVC设计模式,分清这三者各自负责什么,并注意MVC与三层架构的区别(很重要)
  • 事务,我们首先记住Mysql和Oracle默认的隔离级别。待我们学了框架之后,事务是框架帮我们操作,所以目前对大家的要求就是理解,能陈述并理解事务隔离问题有哪些,隔离级别有哪些?

请同学们按照如上要求,总结今日所学。



46 个回复

正序浏览
吴俊斌

mvc模式:
  M(模型层):处理数据库中数据的增删改查 Javabean service dao
  v(视图层):主要是负责显示 jsp,html,css,js等
  c(控制层):主要负责从视图读取数据,控制用户输入,并向模型层发送数据 servlet

事务:
  事务是对数据库的操作,由于多线程,会出现安全问题.我们操作的时候要保证要么
全部成功,要么全部失败.
   在java代码中,一般通过开启事务(setAutomatic),将自动提交改为手动提交
   把异常捕获,如果没出现异常,那么执行提交事务(commit).出现异常执行rollback
回滚事务
   
反射获得方法:
    1,先获得字节码对象,有三种方式.用的最多最灵活的是:
      Class.forName(包名加类名)
    2,创建对象
      如果构造public并且无参可以通过字节码对象.newInstance()
      如果是有参私有的构造,可以通过构造器,getDeclaredConstructor()
      在newInstance()

    3.获得方法
      私有的.通过字节码对象Class.forName("").getMethod(方法名, 参数)
      再调用.invoke(obj, args)
回复 使用道具 举报
Do1 中级黑马 2018-6-10 10:24:40
43#
本帖最后由 Do1 于 2021-6-21 08:17 编辑



MVC就是模型层 显示层 和控制层,模型层存放数据从控制层里面去拿,显示层显示给客户端

模型层主要通过javabean封装好数据,控制层Servlet去拿javabean的数据或者从文件中拿到数据,然后通过JSP显示层显示在客户端上

事务回滚主要掌握向下传递
回复 使用道具 举报
李思贤:反射

public  void run(){
                System.out.println("跑");
        }
private String SayHello(String name){
                return "hello"+name;
        }
通过反射得到Javabean中的方法(公有私有都可获得)
Class clazz = Class.forName("com.itheima.Domain.Account");
                Method method = clazz.getDeclaredMethod("run");
                method.setAccessible(true);
                method.invoke(clazz.newInstance());
               
                System.out.println("-------------");
               
                Method method2 = clazz.getDeclaredMethod("SayHello", String.class);
                method2.setAccessible(true);
                String s = (String) method2.invoke(clazz.newInstance(), "李思贤");
                System.out.println(s);
}




事物
事物:要么全部成功,要么全部失败.

转账案例:三种方式(1贾琏欲执释 2DBUtils 3本地线程(了解))详见项目Day0609
注意Double的转换
Double money = (Double.parseDouble(request.getParameter("money")));
回复 使用道具 举报
        黄志彬
        反射
第一步获得代表这个类加载到内存的字节码文件的对象Class对象()
推荐使用class的forname的静态方法获得 Class.forName("类的全路径");
class去操作构造方法,属性,方法

内省基于反射实现,主要用于操作JavaBean,通过内省 可以获取bean的getter/setter

beanutils导两个包 logging和beanutils

JDBC 中的事务管理
setAotuCommit();自动提交模式
commit提交
rollback回滚
如果有异常就rollback,没有异常就commit


        三层架构和MVC是不同时期的不同东西,它们毫无关系的,
        web层                业务层                持久层
        servlet JSP        javabean        JDBC
        Struts2                Spring                Hibernate
        SpringMVC                        MyBatis
        Struts1                                DBUtils
        WebWork                                JDBCTemplate


        MVC是Model(模型层)        主要负责出来业务逻辑以及数据库的交互
        View(视图层)                主要用于显示数据和提交数据
        Controller(控制器)        主要是用作捕获请求并控制请求转发

使用servlet+JSP+javabean开发目前市面上的大部分项目,企业级中SSH.SSM框架进行开发
回复 使用道具 举报
康元中

MVC设计模式
M : model模型层用来封装数据 和 处理数据就是个javaBean
V:view 视图层 就是JSP
C:Controller 控制层 想当于Servlet(指挥官)接收请求然后将事情交给M层做
EE开发的三层结构
  客户端
  WEB层  ervlet JSP
  业务层 JavaBean
  持久层 JDB
EE开发三层结构和MVC是不同时期提出来的开发解决方案没有必然联系

反射:
反射第一步是获得calss文件加载到内存后形成字节码文件的对象 class对象
calass对象便可以获取构造,成员变量和成员方法包括私有放方法
重点掌握通过反射获取私有方法;
1 Class.forName()获取字节码对象
2 获取类的对象clazz.newInstance()
3 获取私有方法        clazz.getDeclaredMethod ("方法名","方法参数的class")
4 解除权限mthod对象.setAccessible(true)
5 method对象.invoke(对象名,"方法的参数")

事务:逻辑上的一组操作,在这组操作中的各个逻辑单元要么一起成功,要么一起失败。
DBC中的事务管理:
1.setAutoCommit()  参数为布尔类型,用于设定是否自动提交事务
2.comment()  提交事务
3.rollback   事务回滚
注意:操作数据库事务: 回滚的是数据库中的数据和java代码没关系
**两种方式实现事务管理(转账案例)
1 向下传递 :就是在服务层获取连接 将Connection对象传递到Dao中保证了使用的是
            同一个连接
2 线程绑定: 也是在服务层上获取连接,但是先写个工具类在工具类中完成线程的绑定和从线程中拿取连接
              添加事务等操作 这样也保证了Dao中的连接也是一致的效果
            
beanUtils 使用包commoms-logging-jar 和commons.beanutils,jar
回复 使用道具 举报
张述明
今天对mvc有了进一步的理解 ,回顾了一下反射,
重点掌握反射获取对象私有的方法

无参
1.        获得字节码对象
2.        Clazz.getDecarlareMethod()获得类中的方法
3.        让方法执行,使用 method.invoke(clazz.newIstance())
有参
Clazz.getDecarlareMethod(“方法名” ,(参数类型)String.Class)
String  s=(String )method.invoke(clazz.newIstance() ,”method””凤姐”);



Java中的内省技术
内省:获得javaBean的属性以及get 和set 方法

JavaBean是一个满足特定格式的Java类






事务管理  是数据库的
事务是逻辑上的一组操作,组成这组操作的各个单元要么一起成功,要么一起失败.

Mysql的事务管理有两种方式(mysql数据库自动提交,Oracle不自动提交)
1.        手动开启---start transaxtion—开始事务---commit/rollback;
2.        设置一个自动提交参数  show variable like ‘% commit%’—查看与Commit相关信息
Setantocommit=0;--将autocommit参数设置为空
JDBC中的事务管理
SetAutocoomit(boolean)  设置不自动开启(false)

Commit()    提交事务

Rollaback()    回滚<写在catch里面>

回复 使用道具 举报
汪志阳:
今天首先再次学习的反射,反射可以让我们通过类的字节码文件获取类的对象,这样就可以更加方便的而且暴力的获取对象,Class clazz = Class.forName("com.itheima.demo.Person");着重掌握通过类的全路径获取对象的方法
获取完字节码文件后,就可以通过.newInstance()实例化对象;.getDeclaredMethod()获取方法的地址值,再通过.invoke的方法得到对象中的方法.对于一些类中的private的成员变量,方法我们需要设置它的权限在进行获取.
内省技术:这是一个基于反射的,用来获取javaBean的属性及属性的get或set方法.
事务:逻辑上的一组操作,组成这组操作的各个逻辑单元要么一起成功,要么一起失败.
JDBC的事务管理:主要掌握三个API,setAutoCommit:设置事务的开放状态,commit()提交事务,并释放该事务
rollback()回滚事务,主要可以再事务中出现错误是回滚,避免前后事件执行情况的不一致,事务主要有四种特性:
1.原子性:强调事务的不可分割.2.一致性:强调的是事务的执行的前后,数据的完整性要保持一致.
3.隔离性:一个事务的执行不应该受到其他事务的干扰.4.持久性:事务一旦结束(提交/回滚)数据就持久保持到了数据库.
然后就是利用事务去完成转账功能的案例:在案例中了解到了线程,线程和对象一样,每一个mvc的执行必然携带着线程,我们创建了线程
的工具类,每一个数据的执行都会形成一个线程.这样案例让我们对MVC开发有了更进一步的认识.
MVC:主要是Servlet+JSP+javaBean,jsp主要是显示页面,Servlet是一个控制层,连接jsp和javabean,javaBean则是一个主要代码的实现
三层框架是:客户端层,web层和业务层,客户端层主要是java,html,css,js;web层主要有servlet+jsp组成,业务层主要是EJB

回复 使用道具 举报
陈世彪:
今天学习了MVC和事务
MVC模式:
M(model)模型层:负责在数据库中存取数据,处理数据逻辑
可以看作javabean
V(view)视图层:负责数据显示
可以看作jsp
C(controller)控制层:负责从视图读取数据,控制用户输入,并向模型层发送数据
servlet,分布任务给下面
JSP + Servlet + JavaBean 称为MVC的设计模式.
三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。
事务的四种隔离级别
1 read uncommitted 最低级别,全部错误读法都可能发生
2 read committed 避免脏读     MySQL默认隔离级别
3 repeatable read 避免脏读 不可重复读 Oracle默认隔离级别
serializable   全部避免(包括虚读)
java中操作事物的方法

设置事物是否自动提交
conn.setAutoCommit(false);
设置是否提交
conn.commit();
回滚事务
conn.rollback()
回复 使用道具 举报
本帖最后由 COLDER 于 2018-10-18 19:18 编辑



[MVC And Commit]

1.MVC是什么?
MVC(Model View Controller)是一种设计模式,由JSP+Servlet+JavaBean组成.
Model模型层:JavaBean,作用是封装数据和处理数据.
View显示层:JSP,作用是将数据显示到浏览器上,也就是客户端
Controller控制层:Servlet,作用从浏览器request获取数据,向浏览器response响应数据,将要实现的功能交给业务层service处理.

2.什么是反射?
Java中的反射指得是在运行状态中,对于任意一个类都可以知道其所有属性和方法,都可以调用其任意的方法.也就是可以实现动态获取和
动态调用对象的方法.原本调用对象方法的形式是通过创建类对象,然后通过对象来调用方法,而反射是另外的方式,通过字节码对象来获取
字节码对象,然后通过字节码对象来获取类中的字段或调用类中的方法.

3.字节码对象的获取方式?
(1).对象名.getClass():这种方式是在已经存在对象后使用的方法.
(2).类名.class
*(3).Class.forName("全类名"):一般获取字节码对象都使用该方法.

4.如何使用反射获取公共/私有的成员变量,公共/私有的成员方法?
(1).获取字节码对象:class clazz = Class.forName("全类名");
(2).创建类对象:Object obj = clazz.newInstance();
(3).获取公共/私有的成员变量:Field f = clazz.getField("字段名")/getDeclaredField("字段名");
获取公共/私有的成员方法:clazz.getMethod("方法名")/getDeclaredMethod("方法名");
(4).如果是获取私有成员变量或成员方法需要让JVM不检查权限:setAccessible(true).

5.事务是什么?
事务指的是逻辑上的一组操作,组成这组操作的各个逻辑单元要么一起成功,要么一起失败,也就是使用事务可以确保两件事情在交互的过程中
具有安全性.比如说转账案例或者是存档案例.事务是用来针对数据库进行管理的,mySQL数据库的事务默认自动提交,Oracle数据库的事务默认
不自动提交.

6.事务管理的主要步骤?
(1).创建事务:关闭自动提交事务,setAutoCommit (false);
(2).开启事务:当代码无异常执行完毕才会开启事务,commit();
(3).回滚:当异常发生时,可以进行回滚,rollback();

7.转账案例使用DBUtils实现连接向下传递的思路?
(1).通过JDBCUtils获取连接池
(2).关闭自动提交事务
(3).编写扣款和收款的Dao方法
(4).使用DBUtils.commitAndCloseQuietly(conn);方法开启事务
(5).使用DbUtils.rollbackAndCloseQuietly(conn);方法回滚事务


回复 使用道具 举报
16weisong
今天学习了反射,内省和事务管理,反射之前java部分已经学过的了,内省是基于反射的,beanUtils就是使用内省,事务部分需要掌握管理事务的第一种方式;向下传递连接.DBUtils就是使用这种方式来管理事务
回复 使用道具 举报
江某人:
MVC:
M(model)模型层:负责在数据库中存取数据,处理数据逻辑  javabean service dao
V(view)视图层:负责数据显示 jsp
C(controller)控制层:负责从视图读取数据,控制用户输入,并向模型层发送数据 servlet
MVC与EE开发的三层结构之间没有必然联系 是不同时期不同的人提出的开发解决方案 谈不上有区别
Mysql和Oracle默认的隔离级别:
setAutoCommit(boolean)设置是否自动提交、commit()提交的方法、rollBack()回滚的方法。
设置事务的隔离级别:
read uncommitted                :未提交读.脏读,不可重复读,虚读都可能发生.
read committed                :已提交读.避免脏读.但是不可重复读和虚读有可能发生.
repeatable read                :可重复读.避免脏读,不可重复读.但是虚读有可能发生.
serializable                        :串行化的.避免脏读,不可重复读,虚读的发生.
回复 使用道具 举报
邵倩

反射:操作类中的属性和方法
当我们不知道要new谁的对象时,就可以使用反射得到对象 例如web.xml底层
反射的执行过程: java文件---编译成class文件---JVM中有一个类的加载器ClassLoader---将class文件加载到虚拟机中(内存中),那么有一个Class对象(代表class文件加载到内存后所形成的一个对象)


使用反射的第一步 :  获得class文件加载到内存形成的字节码文件的对象
三种方式:
          // 一种:通过类名.class
          Class clazz1 = Person.class;
          // 二种:通过类的实例对象.getClass()方法获得.
          Person person = new Person();
          Class clazz2 = person.getClass();
          // 三种:使用Class的forName的静态方法获得.(推荐使用这种)
          Class clazz3 = Class.forName("com.itheima.demo3.reflect.Person");

通过反射操作其构造方法的一个例子
DBUtils: Person person=queryRunner.query(sql,new BeanHandler<Person>(Person.class));

Java中的内省技术  基于反射   只能获得类(JavaBean)中属性和属性的set get方法
JavaBean: 满足了特定格式的Java类
其中需要提供私有属性
提供私有属性的public的set/get方法
提供无参构造方法

事务管理
事务指的是逻辑上的一组操作,组成这组操作的各个逻辑单元要么一起成功要么一起失败
MYSQL的事务管理(了解)
MYSQL的事务管理有两种方式(MYSQL数据库事务默认自动提交.Orecle数据库事务默认不自动提交)
1.手动开启事务
2.设置一个自动提交参数

JDBC中的事务管理(掌握)
JDBC的事务管理的三个API:
setAutoCommit()
commit()
rollback()

案例 转账
创建一个页面
导入JDBC相关的jar包和工具类
创建包结构
提交到Servlet---Service---DAO
页面跳转/打印

DBUtils实现事务管理
没有事务管理:
有事务管理:


MVC设计模式属于web开发 并不专属于JavaEE

EE开发的三层结构  WEB层(Servlet JSP) 业务层(JavaBean) 持久层(JDBC)  可以开发目前市面上的大部分项目
但是目前企业中使用SSH,SSM框架进行开发

今日必须掌握:
DBUtils向下传递管理事务的方法
通过反射获得属性方法并让方法执行   


回复 使用道具 举报
陈叶隆
1. 反射:(通过反射获得Person类中的求和方法,并调用)
Class clazz = Class.forName("com.reflect.Person");
                Method m1 = clazz.getDeclaredMethod("sum",int.class,int.class,int.class);
                m1.setAccessible(true);
                int invoke = (int) m1.invoke(clazz.newInstance(), 2,3,4);
2. 事务:
事务的管理的API(connection对象):
i) void  setAutoCommit (blooean autoCommit ):将此连接的自动提交模式设置为给定状态
ii) void  commit( ):        使所有上一次提交/回滚后进行的更改成为持久更改,并释放此Connection对 象当前持有的所有数据库锁
iii) void  rollback ( ):        取消在当前事物中进行的所有更改,并释放此Connection 对象当前持有的所有数据库锁
servlet:
                //Post方式接收的参数有中文,需要设置编码
                request.setCharacterEncoding("utf-8");
                //从request中接收的参数都是String类型的,需要转换类型
String s = request.getParameter("money");
                double money = Double.parseDouble(s);
service:
conn=JDBCUtils.getConnection();
                        conn.setAutoCommit(false);
                        dao1.outMoney(conn,from,money);
                        dao1.inMoney(conn,to,money);
                        DbUtils.commitAndCloseQuietly(conn);
回复 使用道具 举报
MVC 分为模型,视图,控制器,
模型层(Service,Dao ..)
视图层(HTML,JSP ...)
控制层(Servlet...)

事务的级别分为
第1级别:read-uncommitted:该级别引发的问题是——脏读():读取到了未提交的数据的执行结果
第2级别:Read Committed:这种隔离级别出现的问题是——不可重复读:不可重复读意味着我们在同一个事务中执行完全相同的select语句时可能看到不一样的结果。
第3级别:Repeatable Read(可重读):此级别可能出现的问题——幻读(Phantom Read):当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行
第4级别:Serializable(可串行化):在这个级别,可能导致大量的超时现象和锁竞争
MySql中默认的是第三级别的事务隔离:Repeatable Read(可重读)
回复 使用道具 举报
刘文峰
MVC是由web开发人员提出的一种设计模式,由模型层,视图层,控制层组成:
M: model  模型层  封装处理数据(用javabean实现)
V: View  视图层  将数据以视图的形式响应给客户端(用jsp实现)
C : Controller  控制层  接收客户端发来的请求,将请求分配给模型层(用servlet实现);
客户端发送请求和数据,控制层接收并传递给模型层,模型层处理完成后由视图层响应回客户端.
Javaee的三层架构由sun公司提出,分为web层,业务层,持久层
Web层 : servlet+jsp  接收和响应
业务层 : javabean  处理业务
持久层 : JDBC  操作数据
三层架构和MVC作用是一样的,web层相当于MVC的控制层和试图层,业务层,持久层相当于MVC的模型层;

事务:逻辑上的一组操作,要么全部成功,要么全部失败
事务有四个特性:隔离性,持久性,原子性,一致性
事务的隔离问题:多个事务同时开启时,可能会引发隔离问题,分为三种:
脏读:一个事务读到另一个事务未提交的数据;
不可重复读:一个事务读到另一个事务已经提交的update的数据,
虚读:一个事物读到另一个事务已经提交得insert的数据
事务的隔离级别:解决事务的隔离问题,分为四个
read uncommitted                :未提交读.脏读,不可重复读,虚读都可能发生.效率最高
read committed                :已提交读.避免脏读.但是不可重复读和虚读有可能发生.
repeatable read                :可重复读.避免脏读,不可重复读.但是虚读有可能发生.
serializable                        :串行化的.不会发生隔离问题.效率最低
回复 使用道具 举报
sts 中级黑马 2018-6-9 21:59:13
29#
苏海斌

MVC
M指的是模型层,主要是JavaBean
V是视图层,即JSP部分
C是控制层,也就是Servlet
三者加起来也就是MVC的设计模式;
而MVC与三层架构其实是不同时期不同组织或个人提出的JSP开发模式
虽然代码比较少,但主要还是结合代码去理解,说是说不清的

事务的隔离目前主要是理解就好,
事务如果不考虑隔离性,会引发一些安全性问题;
例如脏读(一个事务读到另一个事务还未提交的数据),
不可重复读(一个事务读到另一个事务已提交的update的数据,导致在当前的事务中多次查询结果不一致),
虚读(一个事务读到另一个事务已提交的insert的数据,导致在当前的事务中多次查询结果不一致)等;统称为类读;
隔离级别:
read uncommitted:未提交读.   脏读,不可重复读,虚读都可能发生
read committed:已提交读.  避免脏读.  但不可重复读和虚读有可能发生
repeatable read:可重复读. 避免脏读,不可重复读.  但虚读有可能发生
serializable:串行化的.  避免脏读,不可重复读,虚读的发生
回复 使用道具 举报
吴利君
今天学了很多,首先是复习了反射,通过类名拿到类的方法属性,其中有共有的获取和私有的暴力获取,这些知识之前有学过,复习!
然后是java中的内省模式,这个了解就好,然后是数据库的事务管理,这个主要有三个事务,开启事务提交事务和回滚事务,这个今天讲了两种方式,分别是线程方式和向下传递,其中线程方式hibernate这个框架使用的,DBUTils是向下同步!
然后是MVC模式和EE得三层结构,这两者是不同时期的不同思想,我们现在的程序都兼容,比如三层模式,Servlet层,service层以及dao层,其中Servlet是控制层,jsp是视图层,其他的是模型层。
回复 使用道具 举报
詹源

内省:
?内省:用来获得JavaBean的属性及属性的get或set方法.
JavaBean:就是一个满足了特定格式的Java类:
* 需要提供无参数的构造方法:
* 属性私有
* 对私有的属性提供public的get/set方法.
?内省的代码:
        public void demo1() throws Exception{
                // 获得了Bean的信息
                BeanInfo beanInfo = Introspector.getBeanInfo(User.class);
                // 获得Bean的属性描述了
                PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
                for(PropertyDescriptor pd:pds){
                        System.out.println(pd.getName());
                        /*pd.getReadMethod(); // 获得get方法
                        pd.getWriteMethod();// 获得set方法.
*/                }
        }

设置自动提交参数
show variables like '%commit%';
set autocommit=0;   关闭自动提交
conn.setAtutoCommit(false);不自动提交

通过事务管理控制转账:
Service完成操作
DAO是方法?
事务管理添加在Service层(业务层).必须由同一个对象管理的事务才是同一个事务
Service调用DAO层
开启事务→↓

提交事务→同一个conn  ← dao (不要在DAO里conn.close)否则会影响到事务层操作,释放资源在事务层进行

回滚事务→↑

事务管理:要么全部成功要么全部不成功.

事务管理
方式一:在Service创建Connection传递给DAO.称为向下传递
这种向下传递有代码侵入性.

方式二:获取Connection后,绑定到一个当前线程中.重新写一个新的JDBCUtils工具类
        在DAO中获得连接的话,可以从当前线程中获取.每个用户都使用独立线程
.        每次访问,都会创建新的conn;
回复 使用道具 举报
张育辉
1:什么是反射
                        java反射机制是在运行状态中,可以获取对象的成员(成员方法和成员属性),可以调用成员方法;
                2:获取字节码对象三种方式
                        1:可以通过对象.getClass();
                        2:类名.class;
                        3:Class.forName("全类名");
                3:通过字节码对象获取构造对象
                        1:getConstructors() 获取一个类中所有的公共的构造方法,返回Constructors数组
                        2:getConstructor((可以有参数,不传就是空参数)) 根据参数获取指定的公共的构造方法, 返回Constructor对象
                        3:getDeclaredConstructor((可以有参数,不传就是空参数))获取私有的
                                       
                4:通过字节码对象直接获取对象
                        获取对象,newInstance()空参newInstance()
                        Object obj =        class.newInstance()
                       
                5:获取类中成员变量
                        1:getField(); public修饰的
                        2:getDeclardField() 获取所有的成员属性包括私有
                                需要调用setAccessible(true)方法,告诉JVM我要暴力访问,让jvm不检查权限
                                实例:反射private属性执行流程
                                1. 获取person类字节码对象   Class cl = Class.forName("com.itheima.demo.Person");
                                2. 获取person对象                        Object person = cl.newInstance();
                                3. 通过getDeclaredField方法获取私有字段   Field f = cl.getDeclaredField("age");比如你要获取age私有属性
                                4. 通过setAccessible让jvm不检查权限    f.setAccessible(true);
                                5. 通过set方法设置对象为具体的值    f.set(person, 24);
                               
                6:获取成员方法
               
                        1:getMethod() 获取public修饰的成员方法 ,返回类型 Method对象,参数1是访问的方法名,参数2,是方法需要传的类型.class
                                                        调用方法  对象名.invoke() 参数1,对象名 参数2,你要传的参数
                                                       
                        2:getDeclaredMethod() 获取所有修饰的成员方法,格式:同上
                                                        需要调用 setAccessible(true)让jvm不检查权限
                                                        执行方法  对象名.invoke()        参数1,对象名 参数2,你要传的参数
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马