Java基础(五)

什么是Ajax,由哪几部分组成

Ajax(Asynchronous JavaScript And Xml),字面意思为异步的JavaScript和Xml,可实现动态加载页面及页面局部刷新
主要包含技术:Html、CSS、Dom、XMLHttpRequest、JavaScript
常用参数:

  1. url:请求地址
  2. type:请求方式,默认为get,常用的还有post
  3. async:设置是否异步,默认为true,表示异步
  4. dataType:设置返回的数据格式,常用的是json,也可以设置为text、html
  5. data:设置发送给服务器的数据
  6. success:请求成功后的回调函数
  7. error:请求失败后的回调函数

如何解决Ajax跨域问题

  • 服务端响应头添加Header允许访问

response.addHeader(‘Access-Control-Allow-Origin:*’);//允许所有来源访问
response.addHeader(‘Access-Control-Allow-Method:POST,GET’);//允许访问的方式

* 前端使用jsonp:只支持get不支持post
用法:动态创建script,利用script不受同源策略限制的特性获取服务端返回信息
1) dataType改为jsonp
2) jsonp:"jsonpCallback"
3) 后端获取get请求中的jsonpCallback
4) 构造回调结构
```javascript

//前端
$.ajax({
type : "GET",
async : false,
url : "http://a.a.com/a/FromServlet?userName=644064",
dataType : "jsonp",//数据类型为jsonp
jsonp : "jsonpCallback",
success : function(data) {
alert(data["userName"]);
},
error : function() {
alert('fail');
}
});

```java

//后端
String jsonpCallback = request.getParameter("jsonpCallback");
//构造回调函数格式jsonpCallback(数据)
resp.getWriter().println(jsonpCallback+"("+jsonObject.toJSONString()+")");

* httpClient内部转发
* 使用接口网关nginx、springcloud zuul

HashMap和HashTable的区别

相同点:

  1. 都实现了Map接口
  2. 实现原理相同,底层都是哈希表,功能相同
    不同点:
  3. HashTable继承自Dictionary类,HashMap继承自AbstractMap类
  4. HashTable线程安全,HashMap线程不安全
  5. HashTable不允许有null,HashMap允许至多一个null
  6. 检查是否存在:Hashtable->contains();HashMap->containsKey()/containsValue()

jdbc与Hibernate比较

  1. jdbc使用sql,Hibernate使用HQL
  2. jdbc操作数据,Hibernate操作持久化对象
  3. jdbc操作的数据是临时的,Hibernate是可持久的,即持久化对象的值和数据库保持一致

过滤器Filter和拦截器Interceptor

  1. Filter依赖于servlet容器,基于函数回调,可以对几乎所有请求进行过滤,如CharacterEncodingFilter
  2. Interceptor依赖于web框架,基于Java的反射机制,属于面向切面编程(AOP)的一种运用,只能对controller请求进行拦截,对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理

谈谈对MyBatis的理解

  • MyBatis是一个数据持久层(ORM)框架,可以在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM实现。
  • 需要开发人员自己来写sql语句,程序更灵活,在一定程度上可以作为ORM的一种补充,但数据库移植性差。
  • 便于统一管理与维护,降低了程序的耦合度。

MyBatis中如何使用事务

Mybatis对于事务的支持不太好,需要手动开启JDBC事务进行事务管理:

  1. 在整个请求处理之前,创建事务工厂
  2. 基于同一个SqlSession对象获得事务对象,期间执行多次数据库更新操作
  3. 最后捕捉异常,进行事务回滚或关闭
posted @ 2019-12-16 11:57  秋裤队长  阅读(171)  评论(0编辑  收藏  举报