黑马程序员技术交流社区

标题: 【石家庄校区】 MVC&事务&AJAX 学习笔记 [打印本页]

作者: cyahua    时间: 2018-5-27 16:11
标题: 【石家庄校区】 MVC&事务&AJAX 学习笔记
MVC&事务&AJAX 学习笔记

反射Class对象
Class对象的newInstance()方法可以创建对象
构造方法
Constructor[] constructor = clazz.getConstructors();获得构造方法
Constructor constructor = clazz.getConstructor(parameters...);
getDeclaredConstructor(parameters...);
getDeclaredConstructor();
constructor.newInstance(parameters...);
成员变量
Field
getDeclaredField(String name,params.class...);
field.set(Object object, Object object);
field.setAccessible(true);
成员方法
Method
getDeclaredMethod(String name, params.class...);
setAccessible(true);
method.invoke(Object object, params...);
内省Java中的内省技术】(了解)
内省:用来获得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方法
            Method method = pd.getWriteMethod();// 获得set方法.
*/      }
    }
使用内省封装一个MyBeanUtils:
public class MyBeanUtils {

    public static void populate(Object obj,Map<String,String[]> map) throws Exception{
        // 获得类的所有的属性的名称:
        BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
        // 获得类中所有的属性:
        PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
        for (PropertyDescriptor pd : pds) {
            if(map.containsKey(pd.getName())){
                Method method = pd.getWriteMethod();
                // 执行set方法:
                method.invoke(obj, map.get(pd.getName())[0]);
            }
        }
    }
}事务ACID特性
原子性:事务的不可分割
一致性:事务执行前后,数据的完整性保持一致
隔离性:事务执行不受到其他事务的干扰
持久性:事务一旦结束,保存到数据库中
事务的隔离级别
read uncommitted
read committed
repeatable read
serializable
读问题:
脏读:读到了另一个事务未提交的数据
不可重复读:读到另一个事务update的数据,导致前后查询不一致
虚读/幻读:读到另一个事务insert的数据,导致前后查询不一致
AajxAjax使用步骤$.get(
    "url",
    {
        "":"",
        "":""
    },
    function(data){ //data:服务器对当前这次请求的响应
        
    },
    "响应的类型"
);
$.post(
    "url",
    {
        "":"",
        "":""
    },
    function(data){ //data:服务器对当前这次请求的响应
        
    },
    "响应的类型"
);

$.ajax({
    url:"",
    type:"请求方式",
    data:{
        "":"",
        "":""
    },
    dataType:响应内容的类型
    success:function(data){ //成功后执行
        
    },
    error:function(){ //出错之后执行
        
    },
    beforeSend:function(){ //发送之前执行
        
    },
    complete:function(){ //不管成功还是失败都执行
        
    }
});XML传输数据
xStream
void alias("别名",类名.class);
void useAttributeFor(类名.class,"属性名");
String toXML(Object);

XStream xs = new XStream();
//xs.alias("city",City.class);
String xmlstr = xs.toXML(Object object);
response.setContentType("text/xml;charset=UTF-8")
$("#city").each(function(){
   var cname = $(this).findchildren("cname").text();
   var cid = $(this).findchildren("cid").text();
   $("#city").append("<option value="+cid+">"+cname+"</option>");
});JSON传输数据
{"名称":值,"名称":值}         //普通格式,值可以是数组
[{"名称":值,"名称":值},{"名称":值,"名称":值}]       //数组
{
    “city”:{“cid”:1,”cname”:”xxx”}
}
工具

JSONArray   :
JSONObject  :
JsonConfig  :
    config.setExcludes(new String[] {""});
JsonConfig config = new JsonConfig();
config.setExcludes(new String[] {"pid"});
JSONArray array = JSONArray.fromObject(list,config);
response.setContentType("text/html;charset=UTF-8");
response.getWriter().print(array.toString());监听器Listener三类八种:ServletContextListener







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2