zoukankan      html  css  js  c++  java
  • JAVA WEB面试总结

    本文目录:

    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
  • 相关阅读:
    C语言寒假大作战04
    C语言寒假大作战03
    C语言寒假大作战01
    C语言寒假大作战02
    C语言I作业12—学期总结
    C语言I博客作业11
    C语言I博客作业10
    C语言I博客作业09
    C语言I博客作业08
    20199101 2019-2020-2 《网络攻防实践》综合实践
  • 原文地址:https://www.cnblogs.com/jiangds/p/11453668.html
Copyright © 2011-2022 走看看