本文目录:

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

JAVA WEB面试总结的更多相关文章

  1. java web面试技巧,数据库面试,java web轻量级开发面试教程

    我最近看到一本比较好的讲java web方面面试的书,java web轻量级开发面试教程. 其中不仅用案例和视频讲述了Spring MVC,Hibernate, ORM等方面的技巧,而且还实际讲到了面 ...

  2. java web轻量级开发面试教程摘录,java web面试技巧汇总,如何准备Spring MVC方面的面试

    本内容摘自 java web轻量级开发面试教程 https://baike.baidu.com/item/Java%20Web%E8%BD%BB%E9%87%8F%E7%BA%A7%E5%BC%80% ...

  3. java web面试

    1. session和cookie的区别和联系,session的生命周期,多个服务部署时session管理. 原博http://blog.csdn.net/shuaishenkkk/article/d ...

  4. JAVA面试精选【Java web部分一】

    Java的基础知识点就太多了,要说也不能穷尽,这个主要是靠自己在平时的积累和项目的开发经验,外边考的多的一般是继承,多态,线程,集合等等,但是笔试或者是面试中很有可能问许多集体的内容,比如hashMa ...

  5. Java Web架构知识整理——记一次阿里面试经历

    惭愧,从一次电面说起.我个人在某国企做一名软件设计师,国企大家都懂的,待遇一般而且没啥意思,做的方向基本都是操作系统.驱动和工具软件的开发,语言基本都是C/C++.最近也想跳槽,刚好有幸得到了一次阿里 ...

  6. java web方面的面试问题,Spring MVC方面的面试问题,摘自java web轻量级开发面试教程

    本文摘自java web轻量级开发面试教程: https://baike.baidu.com/item/Java%20Web%E8%BD%BB%E9%87%8F%E7%BA%A7%E5%BC%80%E ...

  7. java web轻量级开发面试教程内容精粹:哪些简历得不到面试机会

    看到一本较好的实践性比较强的书,java web轻量级开发面试教程,里面的一些内容很有实践意义. 问题点 很难获得面试机会的原因 学历不符,比如要求是本科以上,但学历是大专 学历是硬指标,所以达不到学 ...

  8. Java web轻量级开发面试教程读书笔记:数据库方面,如何准备面试

    如果在面试或与资深人事交流的过程中,你能有效合理地展示出本章所给出的一些知识点,那么对你的评价就会是"对数据库有深入了解",甚至能加上"有设计数据表的经验",即 ...

  9. java web轻量级开发面试教程读书笔记:建索引时我们需要权衡的因素

    场景一,数据表规模不大,就几千行,即使不建索引,查询语句的返回时间也不长,这时建索引的意义就不大.当然,若就几千行,索引所占的空间也不多,所以这种情况下,顶多属于"性价比"不高. ...

随机推荐

  1. Odoo配置文件

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189223.html

  2. 关于DFS的理解

    DFS(深度优先搜索)相当于暴力寻找有效解的过程 如果把多种情况写成一个树的方式 那么DFS的实质就是遍历所有分枝来寻找最优解 而DFS中遍历所有解的方式采用了我们称之为回溯法的东西 如图所示 图中的 ...

  3. 8-剑指offer: 替换空格

    题目描述 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 代码: c ...

  4. Mybatis-plus使用分页进行分页查询

    首先先配置配置文件 @Configuration public class MybatisPlusConfig { @Bean public PaginationInterceptor paginat ...

  5. 201871010102-常龙龙《面向对象程序设计(java)》第十七周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  6. Lp距离, L1范数, 和L2范数(转载)

    范式可以理解成距离 转载自: https://blog.csdn.net/hanhuili/article/details/52079590 内容如下: 由此可见,L2其实就是欧式距离.工程上,往往不 ...

  7. c语言命名规范图

    来自armbbs

  8. Linux学习笔记-第1天(补发)- 新的开始

    本来不打算补发第一天的笔记,第一天讲的内容并不多,且大部分内容都是书本上已有的,就没有写多少笔记. 其实在学习的过程中我挺好奇其它同学各种千奇百怪的问题.想法是怎么来的,我怎么想不出来这些.或许这就是 ...

  9. 编码-转义2-mark

    文本编辑器utf8 "一".encode("gbk") 保存:"一"+utf8     保存为16进制的\xe4\xb8\x80,\x标识了 ...

  10. [LeetCode] 364. Nested List Weight Sum II 嵌套链表权重和之二

    Given a nested list of integers, return the sum of all integers in the list weighted by their depth. ...