Servlet
1.请求与响应
分类:
- 行 请求行:包括请求方法(Get请求)、请求路径+资源、请求协议与协议版本号头
- 头 请求头:<k,v> : Host、User-Agent(用户代理)
- 题
2.servlet框架
- 框架内容:
- mapper:与数据库进行交互
- service:对数据进行处理
- controller:接收与返回数据(与浏览器交互)
- 相关知识:
- CSRF:跨站请求伪造
- cookie:是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。
- session:代表着服务器与客户端一次会话的过程。当用户在应用程序的web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存活下去。当客户端关闭会话,或者Session超时失效时会话才结束。
- 重定向方法:req/resp.sendDirect();
- 主要的请求方式:
Get:查询服务器数据
Post:增删改查服务器数据
-
ORM:(object relationship mapping):对象关系映射框架
-
Mybatis属于ORM的一种:轻量级半自动化框架
-
Mybatis三大核心对象:SqlSessionBuilder、SqlSessionFactory、SqlSession
-
状态码:
-
开头:信息正在处理
-
开头:请求处理成功
-
开头:需要进行重定向
-
开头:客户端发生错误
-
开头:服务器发生错误
MyBatis概述
1.MyBatis是什么?
- Mybatis是一个轻量级半自动化框架,它内部封装了JDBC,加载驱动、创建连接等过程,开发者只需要关注如何编写SQL语句,可以严加控制sql执行性能,灵活性高。
2. Mybaits的优缺点?
- 优点:
- 灵活性高
- 与JDBC相比,减少了50%以上的代码量
- 能够与Spring很好的集成
- 缺点:
- SQL语句工作量大
- SQL语句依赖于数据库,不能随意更换数据库
3. 为什么说Mybatis是半自动ORM映射工具?它与全自动 的区别在哪里?
- Hibernate属于全自动ORM映射工具,使用Hibernate查询关联对象或者关联集合对象时,可以根据对象 关系模型直接获取,所以它是全自动的。 而Mybatis在查询关联对象或关联集合对象时,需要手动编写sql来完成,所以,称之为半自动ORM映射 工具。
4. JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?
- 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能。
解决:在xml文件中配置数据连接池,使用连接池管理数据库连接。
- Sql语句写在代码中造成代码不易维护,实际应用失去了变化的可能性大。
解决:将sql语句配置在XXXXmapper.xml文件中与java代码分离。
5.MyBatis编程步骤是什么样的?
- 在pom文件中导入包
- 完成配置文件config.xml
- 创建SqlSessionFactory
- 通过SqlSessionFactory来获取SqlSession
- 创建实体类与表
- 创建XXXXMapper接口
- 创建映射文件xml
- 去config.xml里面添加Mapper的注册信息
- 回到使用session的地方,通过session.getMapper(类型);方法来获得Mybatis给我们生成的Mapper对象。
- 执行接口,获得数据,结束
6. #{}和${}的区别?
- #{}是占位符,预编译处理;${}是拼接符,字符串替换,没有预编译处理。
- #{}可以有效的防止SQL注入,${}不能防止SQL注入。
7. 在Mapper中如何传递多个参数?
使用@Param注解;在Dao层的参数中前加@Param注解。
8. xml映射文件中,不同的xml映射文件id是否可以重复?
不同的xml映射文件,如果配置了namespace,那么id可以重复;如果没有配置namespace,那么id不能重复。
9.Mybatis的一级、二级缓存?
- 一级缓存:存储作用域为Session,存在自动缓存机制,如果增加了增删改,那么缓存会自动消失。一级缓存是默认打开的。
- 二级缓存:存储作用域为Mapper,可以自定义存储器。打开方式就是使用<cache></cache>标签。如果增加了增删改,那么缓存也会自动消失。