所属专栏:《Vue实战系列》

JAVA WEB面试总结

温馨提示:
本文最后更新于 2022年04月18日,距今已超过 165 天。若文章内容失效或有不良信息,请举报或直接联系官方

本文目录:

1. 什么是cookie

2. 什么是session

3.什么是Servlet,Servlet生命周期方法

4.JSP隐含对象

5.JSP的四个域对象的作用范围

6.转发和重定向的区别

7.Post和Get请求的区别

8.拦截器与过滤器的区别

9.https与http区别

 

1. 什么是cookie

Cookie意为“甜饼”,是W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie。

由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理.

  1.1 Cookie特点:

    a.     修改跟删除只能覆盖更新;

    b.     不能跨域;

    c.     保存在浏览器端;

    d.     使用key-value保存。

  1.2 工作流程:

    

 

  1.3 cookie api

    

2. 什么是session

  Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以.

  如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。

  2.1 session 特点

    1. 各个线程的session隔离;
    2. 浏览器第一次访问时创建保存在服务端;静态地址访问不会创建session;
    3. 同一个session多次访问时记录最后访问时间。

  2.2 session api

//获取Session对象

request.getSession()

request.getSession(boolean create)

//获取SessionId

getId()

//获取当前session对象的创建时间

getCreationTime()

//获取最后一次访问该session对象的时间

getLastAccessedTime()

//设置Session最大时效

setMaxInactiveInterval()

//获取Session最大时效

getMaxInactiveInterval()

//判断当前Session对象是不是新建的

/**

如果客户端请求消息中返回了一个与Servlet程序当前获得的HttpSession对象的会话标识号相同的会话标识号,则认为这个HttpSession对象不是新建的。

*/

isNew()

//销毁当前Session对象

invalidate()

//属性相关

setAttribute()

 

3.什么是Servlet,Servlet生命周期方法

  用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容, Servlet 可以用 javax.servlet 和 javax.servlet.http 包创建。

  生命周期:

    • Servlet 通过调用 init () 方法进行初始化。只会执行一次
    • Servlet 调用 service() 方法来处理客户端的请求。每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法
    • Servlet 通过调用 destroy() 方法终止(结束)。
    • 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

4.JSP隐含对象

  

隐含对象

所属的类

说明

request

javax.servlet.http.HttpServletRequest

客户端的请求信息

response

javax.servlet.http.HttpServletResponse

网页传回客户端的响应

session

javax.servlet.http.HttpSession

与请求有关的会话

out

javax.servlet.jsp.JSPWriter

向客户端浏览器输出数据的数据流

application

javax.servlet.ServletContext

提供全局的数据,一旦创建就保持到服务器关闭

pageContext

javax.servlet.jsp.PageContext

JSP页面的上下文,用于访问页面属性

page

java.lang.Object

同Java中的this,即JSP页面本身

config

javax.servlet.servletConfig

Servlet的配置对象

exception

java.lang.Throwable

针对错误网页,捕捉一般网页中未捕捉的异常

  

对象名称

API

Request

setAttribute/getAttribute/getParameter

/getRequestURI/getRemotePort

response

addCookie/encodeRedirectURL/sendError

out

clear

session

getMaxInactiveInterval/invalidate/getId/

getCreationTime

application

getServerInfo/getContext

pageContext

getRequest/getResponse/getServletContext/

getSession/setAttribute

exception

getMessage

config 

getInitParameter/getServletName

page

代表jsp编译后的servlet,能调用servlet里的方法

5.JSP的四个域对象的作用范围

  

作用范围

PageContext域

当前JSP页面范围

request域

一次请求

session域

一次会话

application域

整个web应用

6.转发和重定向的区别

名称

请求次数

url地址是否改变

共享数据

新地址要求

转发

1

同一个应用下的地址

重定向

2

任意地址

7.Post和Get请求的区别

  

从传输的角度看,post和get都是不安全的,只有https是安全的。

get的最大长度限制是因为浏览器和web服务器限制了URL的长度。

POST 方法会产生两个 TCP 数据包?

答:HTTP 协议中没有明确说明 POST 会产生两个 TCP 数据包,而且实际测试(Chrome)发现,header 和 body 不会分开发送,不是必然行为。

8.拦截器与过滤器的区别

  区别:

Filter基于servlet,拦截器基于spring框架。拦截器可以访问spring里的事务、server对象等,过滤器不能

拦截器是基于java的反射机制的,而过滤器是基于函数回调。

l  拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

l  在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

深度不同:拦截器能够深入到方法前后、异常抛出前后,弹性更好,filter只在serlvet前后起作用。

 

  下面通过分析springmvc中拦截器、过滤器service()方法(分发不同的servlet给不同的controller),dispatc()的执行顺序来加深理解,如下图:

     

  总结:优先使用拦截器

9.https与http区别

  总结:

名称

传输方式

ca证书?

有无状态

http1.0

超文本明文传输

https

Ssl加密传输

http2.0

超文本明文传输

有(新增了有状态的组件)

   

http工作流程:

第一步:建立TCP/IP连接,客户端与服务器通过Socket三次握手进行连接

第二步:客户端向服务端发起HTTP请求(例如:POST/login.html http/1.1)

第三步:客户端发送请求头信息,请求内容,最后会发送一空白行,标示客户端请求完毕

第四步:服务器做出应答,表示对于客户端请求的应答,例如:HTTP/1.1 200 OK

第五步:服务器向客户端发送应答头信息

第六步:服务器向客户端发送请求头信息后,也会发送一空白行,标示应答头信息发送完毕,接着就以Content-type要求的数据格式发送数据给客户端

第七步:服务端关闭TCP连接,如果服务器或者客户端增Connection:keep-alive就表示客户端与服务器端继续保存连接,在下次请求时可以继续使用这次的连接

 

为了提高安全性和效率HTTPS结合了对称和非对称两种加密方式

https工作流程:

第一步:客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。

第二步:Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

第三步:客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。

第四步:客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

第五步:Web服务器利用自己的私钥解密出会话密钥。

第六步:Web服务器利用会话密钥加密与客户端之间的通信。

加密算法:

    1. 单向散列:对信息进行散列加密,得到固定长度的密文,包括:MD5/SHA;
    2. 对称加密:加密、解密使用同一个秘钥,包括:DES/RC
    3. 非对称加密:分为公钥、私钥,私钥保存在服务器端,公钥加密的只有私钥能解,反之也是,包括:RSA
正文结束了
本文目录