Java基础面试题
一、JavaWeb专题
1.HTTP响应码有哪些
1、1xx(临时响应)
2、2xx(成功)
3、3xx(重定向):表示要完成请求需要进一步操作
4、4xx(错误):表示请求可能出错,妨碍了服务器的处理
5、5xx(服务器错误):表示服务器在尝试处理请求时发生内部错误
举例:
200:成功,Web服务器成功处理了客户端的请求。
301:永久重定向,当客户端请求一个网址的时候,Web服务器会将当前请求重定向到另一个网址,搜索引擎会抓取重定向后网页的内容并且将旧的网址替换为重定向后的网址。
302:临时重定向,搜索引擎会抓取重定向后网页的内容而保留旧的网址,因为搜索引擎认为重定向后的网址是暂时的。
400:客户端请求错误,多为参数不合法导致Web服务器验参失败。
404:未找到,Web服务器找不到资源。
500:Web服务器错误,服务器处理客户端请求的时候发生错误。
503:服务不可用,服务器停机。
504:网关超时
2.Forward和Redirect的区别?
- 浏览器URL地址:Forward是服务器内部的重定向,服务器内部请求某个servlet,然后获取响应的内容,浏览器的URL地址是不会变化的;Redirect是客户端请求服务器,然后服务器给客户端返回了一个302状态码和新的location,客户端重新发起HTTP请求,服务器给客户端响应location对应的URL地址,浏览器的URL地址发生了变化。
- 数据的共享:Forward是服务器内部的重定向,request在整个重定向过程中是不变的,request中的信息在servlet间是共享的。Redirect发起了两次HTTP请求分别使用不同的request。
- 请求的次数:Forward只有一次请求;Redirect有两次请求。
3.Get和Post请求的区别
用途:
- get请求用来从服务器获取资源
- post请求用来向服务器提交数据
表单的提交方式:
- get请求直接将表单数据以name1=value1&name2=value2的形式拼接到URL上(http://www.baidu.com/action?name1=value1&name2=value2),多个参数参数值需要用&连接起来并且用?拼接到action后面;
- post请求将表单数据放到请求头或者请求的消息体中。
传输数据的大小限制:
- get请求传输的数据受到URL长度的限制,而URL长度是由浏览器决定的;
- post请求传输数据的大小理论上来说是没有限制的。
参数的编码:
- get请求的参数会在地址栏明文显示,使用URL编码的文本格式传递参数;
- post请求使用二进制数据多重编码传递参数。
缓存处理:
- get请求可以