Session 和 cookie 有什么区别:
Session | cookie(4k) |
维持用户状态,跨页面数据传递,用户身份验证,数据持久化 | |
数据存储在服务器端,同时生成一个 sessionid 返回客户端并存放到cookie 中,占用服务器的性能,但安全性较高 | 数据存储在客户浏览器端,减轻服务器的压力,但有被用户篡改风险因此安全性较低 |
适合用于管理用户会话,存储与用户身份认证、权限管理等相关的数据,如用户信息、购物车内容 | 存储用户的身份验证信息,实现记住用户登录状态 |
对于一些敏感数据,如用户的登录凭证、支付信息等,建议使用Session存储在服务器端,减少被盗取的风险 | 用户选择的语言、主题等偏好可以存储在Cookie中,便于在不同页面中使用 |
需要存储较大量数据时,如用户浏览历史、购买记录等,Session在服务器端的存储能力更有优势 | 可以通过Cookie在用户不同设备之间同步一些基本的设置信息 |
请求转发和重定向的区别:
转发 | 重定向 |
一次请求,可以共享同一组
request
和
response
|
多次请求,不能共享同一组
request 和 response
|
地址栏不会发生变化,是在服务端完成的
|
地址栏会发生变化,客户端跳转
|
需要数据共享,需要访问内部资源
(WEB-INF)
,使用转发;
如果需要跨域到外部资源,必须使用重定向
|
get 和 post 请求的区别:
get | post |
参数包含在
url
中
|
参数放到
request body
中
|
url 的长度限制,只能发送 ASCII 字符 |
相对于
get
更安全,发送的数据更大,发送更多的数据类型
|
preparedStatement 和 Statement 的区别:
1.对于SQL 语句处理:
使用 Statement
时,SQL 语句是通过字符串拼接来构建的,sql语句较为复杂可能会导致sql拼接错误;而PreparedStatement
通过使用 ?
作为占位符来构建 SQL 语句,不易出错。
2.对于效率:
Statement
每次执行sql语句都会给数据库进行解析编译;而
PreparedStatement
第一次sql语句时被数据库解析编译,后续相同的sql语句会有预编译,速度会更快,提升性能。
3.对于安全:
拼接sql的方式,容易被恶意用户sql注入;而使用预编译也就是PreparedStatement
的方式,占位符 ?可以避免sql注入,因为数据库会将sql语句和参数信息分开处理,数据库会自动处理这些参数。