1. 与缓存的结合
spring的配置
xml 19行
<!-- 缓存的管理器 -->
<bean id="cacheManager" class="org.springframework.cache.concurrent.ConcurrentMapCacheManager">
<!-- 管理缓存区域 -->
<property name="cacheNames">
<list>
<value>user</value>
<value>order</value>
<value>product</value>
</list>
</property>
</bean>
<!-- 启用缓存相关的注解及支持
@Cacheable
@CacheEvict
@CachePut
-->
<cache:annotation-driven/>
注解的使用
@Cacheable(cacheNames = "缓存名字") 加在方法上
检查缓存内容
如果缓存中没有,就把方法结果存入缓存,
如果缓存中有,就直接返回内容,不会执行方法
@CacheEvict(cacheNames = "缓存名字", allEntries = true) 加在方法上
让某个缓存的内容失效
@CachePut(cacheNames = "user") 加在方法上
总会执行方法,用方法的返回结果更新缓存
2. ajax
页面无刷新技术,在页面不刷新的情况下与服务器进行交互
javascript中的对象--XMLHttpRequest
-
创建XMLHttpRequest
var xhr = new XMLHttpRequest(); -
发送请求
xhr.open("get|post|put|delete", 请求url地址, true|false);
xhr.send(); // 真正发送请求 -
接收响应
xhr.responseText -
转换json
如果服务器返回的是json结果,需要用JSON.parse 将其转为js对象
3. 同步请求和异步请求
open("请求方式", "url", 异步or同步)
true ==> 异步请求, send() 不会等待响应返回,请求发送后立刻结束
false ==> 同步请求 , send()会一直等待到响应返回后,send才会结束
4. 异步请求下接收响应
// 响应返回时会触发onload时间
xhr.onload = function(){
xhr.responseText
}
// 旧的响应事件
xhr.onreadystatechange() {
if(xhr.readyState==4) { // 当readyState属性值为4时才是响应触发的
xhr.responseText
}
}
- ajax的含义
几个技术的统称, 实现了页面的局部刷新
a asynchronous (异步的请求 xhr)
j javascript
a and
x xml (返回响应的格式xml, json)
{
"username":"姓名",
"age": 18
}
JSON.parse(json)==> 对象.属性名
应用
应用1: 检查用户名是否存在(注册)
应用2: 提交表单之前,检查图片验证码是否正确
应用3: 省市县联动
xml 6行
<user>
<username>姓名</username>
<age>18</age>
</user>
xhr.responseXML ==> 文档对象.getElementsByTagName("username")[0].textNode.value