秒杀系统
学习记录
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"/>
得出结论,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,检查之后发现是两个实体类共有的属性变量名不一致造成的。
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层注入失败,但是单元测试通过,无报错
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"
修改系统编码(失败)
修稿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加载失败
原因是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值不一致,导致无法读入输入的手机号
最后
数据库