面试直击之javaWeb基础复习

  • http的长连接和短连接

Http协议有HTTP/1.0版本和HTTP/1.1版本。HTTP1.1默认保持长连接,数据传输完了保持TCP连接不断开(不发RST包,不四次握手),等待在同域名下继续使用这个通道传输数据,相反的就是短连接。

在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束后就终端连接。从HTTP/1.1起,默认使用的就是长连接,用以保持连接特性。

  •  http get和post请求的区别

GET和POST请求都是http的请求方式,用户通过不同的http的请求方式对资源(URL)的操作,GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删四个操作,具体来讲GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。Get 是向服务器发索取数据的一种请求,而 Post 是向服务器提交数据的一种请求。

两者区别:

①Get请求提交的数据会在地址栏显示出来,而post请求不会在地址栏显示出来

GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议中),以"?"分割URL和传输数据,多个参数用&连接;POST提交,把提交的数据放置在http包的包体中。因此GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变。

② 传输数据的大小

http GET请求由于浏览器对地址长度的限制而导致传输的数据有限制。而POST请求不会因为地址长度限制导致传输数据限制。

③安全性,POST的安全性要比GET的安全性高

由于数据是会在地址中呈现,所以可以通过历史记录找到密码等关键信息。

  • Servlet是什么?说一下你对Servlet的理解 

Servlet(Server Applet),全称Java Servlet,是用Java编写的服务器端程序,Servlet是指任何实现了这个Servlet接口的类。

其主要功能在于交互式的浏览和修改数据,生成动态的Web内容。Servlet运行于支持Java的应用服务器中。HttpServlet重写了doGet和doPost方法或者也可以重写service方法完成对get和post请求的响应。

  • 说一下Servlet的生命周期 

 Servlet有良好的生存期的定义,包括加载和实例化,初始化,处理请求以及服务器结束,这个生存期由javax.servler.Servet接口的init,service,destory方法表达。

Servlet启动时,开始加载,生命周期开始,Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,servlce方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定要将实例摧毁的时候调用destory方法。

加载Servlet的class——>实例化Sefvlet——>调用Servlet的init完成初始化——>响应请求(Servlet的service方法)——>Servlet容器关闭时(Servlet的destroy方法 )

  • Servlet API中的forword()与redirect()的区别 

 转发和重定向都是实现页面跳转的方式 ,两者的区别:

转发:request.getRequestDispatcher("new.jsp").forword(request,response)      //转发到new.jsp

重定向:response.sendRedirect("new.jsp")      //重定向到new.jsp

本质区别:转发是服务器端行为,重定向是客户端行为。

①转发是在服务器端完成的,重定向是在客户端完成的

②转发的速度快,重定向速度慢

③转发的是同一次请求;重定向是两次不同的请求

④转发地址栏没有发生变化,重定向地址栏有变化

⑤转发必须是在同一台服务器下完成的,访问的是自己本身的web资源;重定向可以在不同的服务器下完成,可以访问自己web之外的资源。 

转发过程:客户浏览器发送http请求,web服务器接受此请求,调用内部的一个方法在容器内部完成请求处理和转发动作,将目标资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。


重定向过程:客户浏览器发送http请求,web服务器接受后发送302状态码响应及对应新的location给客户浏览器,客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址,服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。
即重定向,其实是两次request
第一次,客户端request
A服务器响应,并response回来,告诉浏览器,你应该去B。这个时候IE可以看到地址变了,而且历史的回退按钮也亮了。重定向可以访问自己web应用以外的资源。在重定向的过程中,传输的信息会被丢失。

  •  http常见状态码
200     OK //客户端请求成功
 
404     Not Found //请求资源不存在,eg:输入了错误的 URL
 
301     Moved Permanently(永久移除),请求的 URL 已移走。Response 中应该包含一个 Location URL, 说明资
源现在所处的位置
 
302     found 重定向
 
400     Bad Request //客户端请求有语法错误,不能被服务器所理解
 
401     Unauthorized //请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
 
403     Forbidden //服务器收到请求,但是拒绝提供服务
 
500     Internal Server Error //服务器发生不可预期的错误
 
503     Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
 
  • Cookie和Session

 1.Cookie和Session的概念

Cookie是web服务器发送给浏览器的一块信息,浏览器会在本地一个文件中给每个web服务器存储cookie。以后浏览器再给特定的web服务器发送请求时,同时会发送所有为该服务器存储的cookie。

Session是存储在服务器端的一块信息,session对象存储特定用户会话所需的属性及配置信息。当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存下去。

2.Cookie和session的区别

①无论客户端做怎样的设置,session都能够正常工作。而当客户端禁用cookie时将无法使用cookie

②在存储的数据量方面:session能够存储任意的Java对象,而cookie只能存储String类型的对象。

3..在单点登录中,如果cookie被禁用了怎么办?

单点登陆的原理是后端生成一个session ID,然后设置到cookie,后面的所有请求浏览器都会带上cookie,然后服务器端从cookie里获取session ID,再查询到用户信息。所以保持登录的关键不是cookie,而是通过cookie保存和传输的session ID,其本质是能获取用户信息的数据,若cookie被禁用了,还通常使用HTTP请求头来传输,但是这个请求头浏览器不会像cookie一样自动携带,需要手工处理。

你可能感兴趣的:(面试直击之javaWeb基础复习)