JAVA EE 复习重点

JAVA EE 复习重点

题型:

  1. 选择题 15 道题,共30分
  2. 判断题 7 道题,共7分
  3. 填空题 4道题8个空,共8分
  4. 简答题 4道题,共20分
  5. 综合题:共2道题, 共35分

一、SSM 框架: Spring + Spirng MVC + MyBatis

  • Spring: 容器管理
  • Spring MVC :MVC 开发模式
  • MyBatis : 持久层
  • 常规的SSM 指是通过xml 方式来配置的,Spring Boot其实就是 基于自动配置简化Spring 操作

二、重点

  1. ES6 部分:
    • 用let 替代var 声明变量:a. 语法严谨;b.let 变量具有块级作用域。
    • 解构数组用中括号,解构对象用大括号。
       let arr = ["AA", "BB", "CC", "DD"];
       let [first, second] = arr; //解构数组用[]
       let obj = {"name": "hkx", "age": 18};
       let {name} = obj
      
    • 面向对象
      • 如何创建对象 和 java 一样,有class 关键字。
  2. 什么是Mybatis 呢
    • Mybatis 是一种对象关系映射的持久层框架
    • 目前流行的持久层框架有MyBatis 和 JPA
    • MyBatis 简单理解,就是SQL 映射对象,最常用的注解或xml 标签和查询操作相关
      • @Select 、@Insert、@Delete 、@Update、@ResultType、@Param
      • 也可以通过xml 方式来实现:对应
    • Mybatis 的核心就Mapper接口文件(Dao):
      • 作用:定义SQL 查询语句和JAVA 对象的映射。
      • 声明:
        • 通过 @Mapper 注解来声明。
    • 动态SQL(重点)
      • 是什么? :动态SQL 简而言之,就根据不同的条件生成不同的SQL语句。Mybatis 提供了
        if
        (when,otherwise)
        (where, set)
      • 具体的应用场景(SQL的用处
        • 条件查询:根据用户提供不同的查询条件,自动生成不同的SQL语句,主要用if 元素
        • 批量操作:一般用于批量处理集合数据,主要是用foreach
        • 动态更新:根据用户提供不同的字段自动生成不同的SQL语句。
        • 动态排序:根据用户提供不同的字段自动生成不同的SQL排序语句。
    • MyBatis缓存机制
      • MyBatis 内置了一个强大的事务性查询缓存机制,包括一级缓存和二级缓存。
      • 一级缓存指SqlSession中缓存,默认开启,基于对象引用的,可以减少查询的次数,提高性能。用于同一个SqlSession多次查询相同的数据。当SqlSession关闭时,一级缓存被清空。
      • 二级缓存指SqlSessionFactory中的缓存,默认是关闭的,是全局共享,基于对象序列化的。用于多个SqlSession多次查询相同的数据。当数据变化时候,二级缓存被清空。
  3. Spring IOC
    • 主要作用是:管理对象生命周期。
    • 对象创建:
      • 属性注入:常见的,用法简单。
      • 构造器注入:最大的优点可以保证依赖关系完整性。
      • 作用域方式:
        • 单例模式:默认的。Controller、Service等都是这种模式。
        • 原型模式:需要指定 prototype
      • 注入的注解:(填空)
        • @Autowired : 既可以根据类型又可以根据名称注入
        • @Resource :
  4. Spring AOP
    • Spring AOP 基于动态代理实现。

    • 关键概念:

      • 切入点(连接点):被拦截的方法
      • 切面:是一个类,定义通知的地方
    • Spring AOP的两种动态代理的实现方式

      • 基于JDK的动态代理
        • jdk 动态代理要求代理对象必须有接口
        • 通过反射机制生成一个代理类,再重写接口中的方法来实现代理,代理方法中调用目标对象的方法。
      • 基于cglib动态代理
        • cglib 是一个功能强大的代码生成库,可以在运行时候动态生成class文件字节码。

      两种动态代理有哪些不同
      Spring AOP中,如果对象没有实现任何接口,Spring AOP 采用cglib方式,如果该对象有接口,采用JDK默认的动态代理。


  1. Spring MVC

    • Spring MVC中可以挖出一个东西,叫前端控制控制器,叫 DispatcherServlet处理分发请求
    • ModelAndView: 模型数据和视图层
  2. Spring IOC、Spring MVC、Spring Boot 中常用的注解。(要求掌握10 个以上)并描述作用

    • 基于组件化
      • @Component : 组件注解。
      • @Controller:组件注解,用于控制器
      • @Service::组件注解,用于服务层
      • @Repository:组件注解,用于持久层
      • @Autowired: 自动注入(装配),用于自动装配对象,根据类型或名称进行装配。
    • Spring MVC
      • @RequestMapping : 映射请求路径的。
      • @PostMapping: 和@RequestMapping功能一样,限定请求方式为Post
      • @GetMapping: 和@RequestMapping功能一样,限定请求方式为get
      • @PutMapping: 和@RequestMapping功能一样,限定请求方式为put
      • @DeleteMapping: 和@RequestMapping功能一样,限定请求方式为delete
      • @RequestParam: 用于接收指定的参数,将请求参数绑定到控制器的方法上
      • @RequestBody: 请求头注解,用于接收json格式的请求头信息参数。
      • @ResponseBody:响应体注解,用于json 形式返回结果给客户端。
      • @RestController: Restful风格的控制器,相当于@Controller和@ResponseBody的组合。
      • @PathVariable: 路径变量,用于获取请求通配符路径的变量。
    • SpringBoot
      • @Configuration : 用于标注配置类。
      • @SpringBootApplication:在SpringBoot中用于标注主类。
  3. 分层(为什么要分层,分为几层):

    • 控制层
      • 控制器类似传统的Servlet,用于处理web请求。接收请求,处理请求,调用服务层、Dao层等组件实现业务逻辑。
      • 如何定义?通过@Controller 或 @RestController 进行标注。
      • 处理结果返回数据模型和视图,根据返回的数据跳转到不同的视图页面作展示。
    • 服务层
    • Dao层
  4. 如何设计数据库(第一道大题)
    购物车提交就是订单,数据结构一模一样
    用户 ,商品,购物车/订单之间的关系(ER图)

    • 第一问:概念,ER 图等
    • 第二问:实现一个完整基本的功能:Mapper 接口查询某个时间段的订单或购物车

9.第二大题


1. mapper 代码
```text
@Mapper
public interface OrderMapper {
   public List<Order> selectOrderByGoods(@Param("goodsId") String goodsId, Date beginTime);
} 
<select id="selectOrderByGoods" >
   select * from order where goodsId = #{googsId} and createTime = #{beginTime} 
</select>
```
  1. Service 层代码
@Service
public class OderService {
    @Autowired
    private OrderMapper orderMapper;
    public List<Order> listOrderByGoods(String goodsId, Date beginTime){
       return orderMapper.selectOrderByGoods(goodsId,beginTime);
    }
 } 

3.Controller 层

 public class OrderController {
    @Autowired
    private MyOderService myOderService;
    @RequestMapping("/list/xxxx/{id}")
    public String listOrderByGoods(@PathVariable String id, @RequestParam("beginTime") Date beginTime, Model model){
        List<Order> orderList = myOderService.listOrderByGoods(id, beginTime);
        model.addAttribute("orderList",orderList);
        return "listOrder";
    }
}
  1. 视图层
<table>
     <tr><td>序号</td><td>订单编码</td><td>商品</td></tr>
     <c:forEach items="${orderList}" var="order" varStatus="status">
       <tr>
         <td>${status.count}</td>
         <td>${order.orderNum}</td>
         <td>${order.goodsId}</td>
       </tr>
    </c:forEach>
 </table>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值