学习记录

1、XML CDATA

使用方法:

XML文档中所有的文本均会被解析器解析,只有CDATA区段中的文本会被解析器忽略

2、mybatis和spring整合方式

  • XML提供SQL
  • DAO接口Mapper

3、jdbc连接池是个什么东西?

在增删改查操作中,避免频繁地创建和销毁JDBC连接,可以通过连接池复制已经创建好的连接

4、class path resource [jdbc.properties] cannot be opened because it does not exist

之前的写法:

修改为 相对路径 即 spring/jdbc.properties

5、Connections could not be acquired from the underlying database!

折腾了半天,最后把jdbc.properties中的配置直接写到spring-dao.xml

结果是一个 & 报错 ,删掉&及后面的就成功了,我直接???

xml配置文件中,要用&代替

<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/seckill?useUnicode=true&characterEncoding=UTF-8"/>

img

得出结论,spring-dao.xml不能读取jdbc.properties文件

暂未解决

6、java的运行不会保留形参

List<Seckill> queryAll(int offet, int limit)->queryAll(arg0,arg1);

如果之后操作需要形参,如:

<select id="queryAll" resultType="Seckill">
        select seckill_id,NAME,NUMBER ,start_time,end_time,create_time
        from seckill
        order by create_time DESC
        limit #{offset},#{limit}
    </select>

则可以通过@Param()注解实现

List<Seckill> queryAll(@Param("offset") int offset,@Param("limit") int limit);

7、Error instantiating class org.seckill.entity.Seckill with invalid types () or values ().

seckill实体类缺少无参构造

8、这个dao层单元测试之前一直有几个属性报Null,检查之后发现是两个实体类共有的属性变量名不一致造成的。

image-20210206213044063

Service层

9、报错:不兼容的类型

Incompatible types. Required: java.util.logging.Logger
Found: org.slf4j.Logger

解决:

将划红线的修改为

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

10、 roll back回滚?spring事务

Connection conn = DriverManager.getConnection();
try {  
    conn.setAutoCommit(false);  //将自动提交设置为false                         
    执行CRUD操作 
    conn.commit();      //当两个操作成功后手动提交  
} catch (Exception e) {  
    conn.rollback();    //一旦其中一个操作出错都将回滚,所有操作都不成功
    e.printStackTrace();  
} finally {
    conn.colse();
}

​ 事务是一系列的动作,一旦其中有一个动作出现错误,必须全部回滚,系统将事务中对数据库的所有已完成的操作全部撤消,滚回到事务开始的状态,避免出现由于数据不一致而导致的接下来一系列的错误。事务的出现是为了确保数据的完整性和一致性,在目前企业级应用开发中,事务管理是必不可少的。

11、spring整合mybatis Dao层注入失败,但是单元测试通过,无报错

image-20210222184343517

Web层

1、Restful是什么

一种url规范

参考:https://zhuanlan.zhihu.com/p/30396391

2、Spring的Model

作用:从控制层直接返回前端所需的数据

3、@RequestMapping()

参数produce:指定返回值类型还可以指定字符编码

@Responsebody

@ResponseBody的作用其实是将java对象转为json格式的数据

4、@Pathvariable()

通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“)

5、重定向和请求转发

6、@CookieValue

作用:
用于把指定cookie名称的值传入控制器方法参数。
属性:
value:指定cookie的名称。
required:是否必须有此cookie。

7、重复秒杀、秒杀关闭异常,在service层直接抛出,需要在controller层处理

8、静态包含

<%@include file="common/head.jsp"%>
    <%--静态包含--%>

9、

jsp页面中 标签中的target=_blank是什么意思?

解答:
表示该连接在新窗口中打开

_self相同框架
_top整页
_blank新建一个窗口
_parent父窗口
其它的就是自定义了,可以指向已有的窗口名称

10、html页面中文乱码

查看页面编码

"windows-1252"

修改系统编码(失败)

img

修稿jsp文件编码设置

原先设置

<%@page contentType="text/html; charset = utf-8" language="java" %>

解决方案:将charser = utf-8修改为pageEncoding=utf-8

pageEncoding是jsp文件本身的编码

contentType的charset是指服务器发送给客户端时的内容编码

成功显示:

11、jquery选择器,选择到一个节点

var killPhoneModal = $('#killPhoneModal')

12、电话输入框无法弹出

原因:未能成功加载seckill.js

将路径resources/script/seckill.js前加上**‘ / ’**

<script src="/resources/script/seckill.js" type="text/javascript"></script>

13、电话输入框无法输入

解决方法:加入一个样式

14、/time/now加载失败

image-20210301220229002

原因是web层SeckillController中没有加入@ResponseBody注解

@RequestMapping(value = "/time/now",method = RequestMethod.GET)
   @ResponseBody
   public SeckillResult<Long> time(){
       Date now  = new Date();
       return new SeckillResult(true,now.getTime());
   }

15、Uncaught TypeError: killPhoneModal.modal is not a function

jqury包含了两次,注释掉一个

16、修改Js无效

清除浏览器缓存并按F12 network中禁用缓存

17、IDEA中 JSP/HTML文件无法导入js文件

解决,需要把js文件所在的上级目录设置为resources文件夹

18、电话输入框一直弹出

原因是seckill.js文件中 cookie值与SeckillController.java中cookie值不一致,导致无法读入输入的手机号

image-20210312221724921

最后

数据库