JavaWeb常见面试题
get和post的区别?
1.get请求数据只能放在url的queryString中(URL问号后边紧跟的)
post请求数据既可以放在queryString中,又可以放在body中。
2.get请求数据的长度有限,并且是ascii字符,对方要以同样的编码格式进行解码。
post数据放在body中相对于get更加安全。
3.get请求一般设计为幂等的,post一般为非幂等
(幂等:不论操作多少次效果完全一样,比如说刷新页面,修改操作一般不是幂等的)
4.get请求一般可以被缓存,将资源缓存起来,免得 下次还要获取。
post请求一般不可被缓存。
Content-type:请求头和响应头有什么作用?
HTTP协议,可以在body中传输任何类型的数据(网页、文本、图片、音频,视频、css、表单格式等)
此时,需要标识body的数据类型,需要使用Content-Type来标识body的数据类型。
响应状态码405含义:
请求方法不支持:服务方法中不包含(不支持)请求的方法。
类似于参观提供用餐服务(http服务),只提供线下就餐,客户端要求线上订餐,此时餐厅就会说服务方法不支持。
重定向和转发的区别
转发:一次请求和响应,url路径不变,原理是该路径在该次请求时,直接返回需要转发的资源在body中。
重定向:两次请求,url要变,原理是一次请求,相应301/302/307重定向状态码,以及location响应头,值为
重定向的路径,浏览器接收到该响应之后,发起第二次请求,跳转到location指定的路径。
Session和cookie的区别:
作用:http协议本身属于一个无状态的协议(没有保存用户的一个状态,下一次请求来的时候不知道是不是同一个用户了,因为http是短连接)可以通过Session和Cookie来实现保持用户会话状态。
区别:Session数据是保存在服务器端,Cookie数据是保存在客户端
具体的,服务端是登录成功是,保存我sessionId和Session对象,并相应SetCookie头,值为isessionid(客户端保存该Cookie信息,然后每次请求都携带该Cookie信息。然后服务端就根据SessionId遮掩打个键查找到对应的Session对象)
谈谈对Ajax的理解:
关键词:异步回调(异步表示不影响当前url,即url不会变,回调表示如果客户端接收到相应,再执行回调函数)