MVC&事务补充&反射补充

1.MVC是什么:


    M:model 模型 作用:主要是封装数据,封装对数据的访问
    V:view     视图 作用:主要是用来展示数据 一般是jsp担任的
    C:ctrl    控制 作用:接受请求,找到相应的javabean完成业务逻辑

2.Mvc思想

就是将业务逻辑,代码,显示相分离的一种思想


   servlet-->缺点:生成html内容太麻烦(out.print("html"))
        |
    jsp--->缺点:阅读起来不方便,维护比较困难
        |
    jsp+javabean:
            jsp的model1:
                jsp:接受请求,展示数据
                javabean:和数据打交道 
        |
    jsp+javabean+servlet
            jsp的model2:
                jsp:展示数据
                javabean:和数据打交道
                servlet:接受请求,处理业务逻辑
            就是MVC思想的体现

2.1

javabean在model1中的使用(了解)

    javabean+jsp
    用到的
   1. Uer.java:包含username和password(创建的一个javabean)
   2.form表单
    注意:表单中用name和password
    login.jsp:就是下面的东西
        <!-- 接受值 -->
        <jsp:useBean id="u" class="com.itheima.domain.User"></jsp:useBean><!--相当于  User u=new User()-->
        <jsp:setProperty property="name" name="u"/><!--相当于  u.setName(...)-->
        <jsp:setProperty property="password" name="u"/>

        <!-- 打印值-->
        <jsp:getProperty property="name" name="u"/>
        useBean就可以用这样的方式将提交过来的数据封装成指定的对象
        如何做的--》反射,获取class就可以干了

 

2.2

javabean在model2中的使用

    BeanUtils:可以看作封装数据一个工具类
        使用步骤:
            1.导入jar包
            2.使用BeanUtils.populate(Object bean,Map map);底层用的还是反射的思想(得到class,对象就可以干许多事情的)
    传入map集合给bean对象,然后获取class,然后。获取其中的所有方法
    map。获取key
    获取value。
    还是反射思想。

 

 

2.反射的回顾+补充

    1.获取class对象
        方式1:
            Class clazz=Class.forName("全限定名")
        方式2:
            Class clazz=类名.class;
        方式3:
            Class clazz=对象.getClass;
    2.可以获取对应类的构造方法(了解)
        Constructor con = clazz.getConstructor(Class .. paramClass);
        Person p = (Person) con.newInstance(参数);

    3.可以通过clazz创建一个对象(了解)
        clazz.newInstance();//相当于调用的无参构造器
        如果没有无参构造的话就会报错
    4.可以通过clazz获取所有的字段 getFiled()(了解中的了解)
    5.可以通过clazz获取所有的方法
        Method m = clazz.getMethod("sleep");//获取公共的方法
        Method m = clazz.getDeclaredMethod("sleep");//获取任意的方法
        
        注意:若是私有的方法 必须让该方法可以访问
            m.setAccessible(true);
    6.Method对象的invoke是有返回值,他的返回值就是目标方法执行的返回值
    m.invoke(p);执行

    注意:反射里面的参数传进去后得用.class
    eg:Strring name->String.class
    Demo.java60行
总结:
    有了class对象之后,无所不能.

代码演示:

package com.itheima.reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

import org.junit.Test;

import com.itheima.domain.Person;

public class Demo {
	@Test
	public void f1() throws Exception{
		//1.获取class对象
		Class clazz=Class.forName("com.itheima.domain.Person");
		
		//2.获取构造器(了解)
		//Constructor con = clazz.getConstructor();
		//Person p = (Person) con.newInstance();
		
		//2.1获取带参的构造器(了解)
		Constructor con = clazz.getConstructor(String.class,String.class);
		Person p = (Person) con.newInstance("tom","123");//相当于  new Person("tom","123")
		
		System.out.println(p.getPassword());
	}
	
	@Test
	public void f2() throws Exception{
		//1.获取class对象
		Class clazz=Class.forName("com.itheima.domain.Person");
		
		//2.获取构造器(了解)
		Person p = (Person) clazz.newInstance();
	}
	
	@Test
	//获取私有方法
	public void f3() throws Exception{
		//1.获取class对象
		Class clazz=Class.forName("com.itheima.domain.Person");
		
		Person p = (Person) clazz.newInstance();
		//2.获取方法
		//Method m = clazz.getMethod("sleep");//获取公共的方法
		Method m = clazz.getDeclaredMethod("sleep");//获取任意的方法
		
		//2.1若是私有的方法 必须让该方法可以访问
		m.setAccessible(true);
		
		//执行方法
		m.invoke(p);
	}
	
	@Test
	public void f11() throws Exception{
		//1.获取
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值