45_SSM的介绍,Ajax技术,同步于异步请求的介绍

 SSM spring-mvc, spring, mybatis整合

mybatis
@Select , @Insert, @Delete, @Update,
@Param 用来把方法参数与sql中的#{}来对应,用在方法有多个参数时
spring
@Transactional 管理事务 加在需要事务的方法上,也可以加在类上
@Autowired 依赖注入 加在属性上,加在set方法上, 加在构造方法上 都是根据类型匹配

@Aspect 加在类上,表示此类是切面类(通知类)
@Around(切点表达式) 加在方法上, 表示环绕通知
@Before(切点表达式) 加在方法上, 表示前置通知
@After(切点表达式) 加在方法上, 表示后置通知(总会执行)
@AfterReturning(切点表达式) 加在方法上, 表示正常返回通知
@AfterThrowing(切点表达式) 加在方法上, 表示异常通知

都是配合 context:component-scan 标签使用,表示加了这个注解的类需要交给spring容器控制反转
@Controller 加在控制器类上
@Service 加在service(业务逻辑类)上
@Repository 加在dao实现类上(jpa, hibernate), 与mybatis结合没用用上
@Component 当某个类不好归类到三层结构时,可以用它

springmvc
@RequestMapping("路径") 映射请求路径, 可以加在类上,也可以加在方法上
如果类和方法都有这个注解:最终的路径是类的路径+方法路径
@GetMapping("路径") 专门处理get请求
@PostMapping("路径") 专门处理post请求
如果实际的请求与注解的格式不匹配,会报405 Method Not Allowed
get(查),post(新增),put(修改),delete(删除)

@ExceptionHandler 加在方法上,表示此方法是处理异常的方法
@ControllerAdvice 加在类上,经常配合@ExceptionHandler做全局异常处理
@ResponseBody 加在方法上,用来把方法的返回值转为json字符串作为响应
@RequestBody 加在方法参数上,用来把参数的json字符串还原为java对象

@PathVariable 加在方法参数上,用来获取路径中的参数
@CookieValue("cookie名") 加在方法参数上,用来获取请求参数中的cookie值
@DateTimeFormat(pattern="日期格式") 加在方法参数上,加在属性上,用来转换请求参数中的日期

@ModelAttribute("key") 用来接收重定向传递的参数值,需要配合RedirectAttributes一起使用
@SessionAttribute

@Cacheable
@CacheEvict
@CachePut

json转换
@JsonIgnore 加在属性上,转json时忽略此属性
@JsonProperty("新的属性名") 加在属性上,转json时改变属性名称
@JsonFormat(pattern="日期格式", timezone="GMT+8") 加在属性上,转换日期

 

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

  1. 创建XMLHttpRequest
    var xhr = new XMLHttpRequest();

  2. 发送请求
    xhr.open("get|post|put|delete", 请求url地址, true|false);
    xhr.send(); // 真正发送请求

  3. 接收响应
    xhr.responseText

  4. 转换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
}
}

  1. ajax的含义
    几个技术的统称, 实现了页面的局部刷新
    a asynchronous (异步的请求 xhr)
    j javascript
    a and
    x xml (返回响应的格式xml, json)

{
"username":"姓名",
"age": 18
}
JSON.parse(json)==> 对象.属性名

    xml    6行

<user>
    <username>姓名</username>
    <age>18</age>
</user>
xhr.responseXML ==> 文档对象.getElementsByTagName("username")[0].textNode.value
  1.  

猜你喜欢

转载自blog.csdn.net/Lisiluan/article/details/88369254