从代码中摘录一些知识点
http
http状态码
代码语言:javascript复制1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见状态码
代码语言:javascript复制200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
jsp
9大内置对象
代码语言:javascript复制request:封装客户端的请求,其中包含来自GET或POST请求的参数;
response:封装服务器对客户端的响应;
pageContext:通过该对象可以获取其他对象;
session:封装用户会话的对象;
application:封装服务器运行环境的对象;
out:输出服务器响应的输出流对象;
config:Web应用的配置对象;
page:JSP页面本身(相当于Java程序中的this);
exception:封装页面抛出异常的对象。
4种作用域
代码语言:javascript复制page代表与一个页面相关的对象和属性。
request代表与Web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web组件;需要在页面显示的临时数据可以置于此作用域。
session代表与某个用户与服务器建立的一次会话相关的对象和属性。跟某个用户相关的数据应该放在用户自己的session中。
application代表与整个Web应用程序相关的对象和属性,它实质上是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域。
mybatis
一级缓存和二级缓存的区别
代码语言:javascript复制一级缓存的作用域是在SqlSession中,二级缓存的作用域是针对mapper做缓存。
一级缓存(本地缓存):一级缓存是框架默认为我们开启的,我们不需要做任何配置。首先去缓存中查询结果集,如果没有则查询数据库,如果有则从缓存取出返回结果集就不走数据库。
二级缓存(全局缓存):二级缓存是 mapper 级别的缓存,多个sqlSession去操作同一个Mapper的sql,不管Sqlsession 是否相同,只要 mapper 的 namespace相同就能共享数据。也可以称之为 namespace 级别的缓存 。二级缓存是可以跨SqlSession的。
工作原理:
sqlSession 关闭后(close) ,一级缓存的数据会保存到二级缓存中,新的相同就会去二级缓存中去查询
9大动态SQL
代码语言:javascript复制元素 作用 备注
if 判断语句 单条件分支
choose(when、otherwise) 相当于 Java 中的 if else 多条件分支
trim(where、set) 辅助元素 用于处理 SQL 拼接问题
foreach 循环语句 批量插入, 更新, 查询时经常用到
bind 创建一个变量, 并绑定到上下文中 用于兼容不同的数据库, 防止 SQL 注入等
其他标签
代码语言:javascript复制sql和include
<!-- 可复用的字段语句块 -->
<sql id="userColumns">
id,username,password
</sql>
使用时
<select id="selectUsers" resultType="map">
select
<include refid="userColumns"></include>
from user
</select>
配置映射结果集
<resultMap id="BaseTable" type="com.myfdc.domain.StudentDO">
<id property="user_id" column="id"></id>
<result property="user_name" column="name"></result>
<result property="user_age" column="age"></result>
</resultMap>
使用时,标签后面加 resultMap="BaseTable"
配置多表联合查询的时候,结果映射
<resultMap id="empAndDept" type="emp">
<id column="id" property="id"></id>
<result column="ename" property="ename"></result>
<result column="job_id" property="jobId"></result>
<result column="mgr" property="mgr"></result>
<result column="joindate" property="joindate"></result>
<result column="salary" property="salary"></result>
<result column="bonus" property="bonus"></result>
<result column="dept_id" property="deptId"></result>
<association property="dept" column="dept" javaType="dept">
<id column="id" property="id"></id>
<result column="name" property="name"></result>
</association>
</resultMap>
<!-- 测试使用-->
<select id="loadData" resultMap="empAndDept">
select e.*,d.name from emp e,dept d where e.dept_id=d.id order by dept_id limit 0,5;
</select>