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 特点
- 各个线程的session隔离;
- 浏览器第一次访问时创建保存在服务端;静态地址访问不会创建session;
- 同一个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.拦截器与过滤器的区别
区别:
l Filter基于servlet,拦截器基于spring框架。拦截器可以访问spring里的事务、server对象等,过滤器不能
l 拦截器是基于java的反射机制的,而过滤器是基于函数回调。
l 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
l 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
l 深度不同:拦截器能够深入到方法前后、异常抛出前后,弹性更好,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服务器利用会话密钥加密与客户端之间的通信。
加密算法:
- 单向散列:对信息进行散列加密,得到固定长度的密文,包括:MD5/SHA;
- 对称加密:加密、解密使用同一个秘钥,包括:DES/RC
- 非对称加密:分为公钥、私钥,私钥保存在服务器端,公钥加密的只有私钥能解,反之也是,包括:RSA
JAVA WEB面试总结的更多相关文章
- java web面试技巧,数据库面试,java web轻量级开发面试教程
我最近看到一本比较好的讲java web方面面试的书,java web轻量级开发面试教程. 其中不仅用案例和视频讲述了Spring MVC,Hibernate, ORM等方面的技巧,而且还实际讲到了面 ...
- 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% ...
- java web面试
1. session和cookie的区别和联系,session的生命周期,多个服务部署时session管理. 原博http://blog.csdn.net/shuaishenkkk/article/d ...
- JAVA面试精选【Java web部分一】
Java的基础知识点就太多了,要说也不能穷尽,这个主要是靠自己在平时的积累和项目的开发经验,外边考的多的一般是继承,多态,线程,集合等等,但是笔试或者是面试中很有可能问许多集体的内容,比如hashMa ...
- Java Web架构知识整理——记一次阿里面试经历
惭愧,从一次电面说起.我个人在某国企做一名软件设计师,国企大家都懂的,待遇一般而且没啥意思,做的方向基本都是操作系统.驱动和工具软件的开发,语言基本都是C/C++.最近也想跳槽,刚好有幸得到了一次阿里 ...
- 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 ...
- java web轻量级开发面试教程内容精粹:哪些简历得不到面试机会
看到一本较好的实践性比较强的书,java web轻量级开发面试教程,里面的一些内容很有实践意义. 问题点 很难获得面试机会的原因 学历不符,比如要求是本科以上,但学历是大专 学历是硬指标,所以达不到学 ...
- Java web轻量级开发面试教程读书笔记:数据库方面,如何准备面试
如果在面试或与资深人事交流的过程中,你能有效合理地展示出本章所给出的一些知识点,那么对你的评价就会是"对数据库有深入了解",甚至能加上"有设计数据表的经验",即 ...
- java web轻量级开发面试教程读书笔记:建索引时我们需要权衡的因素
场景一,数据表规模不大,就几千行,即使不建索引,查询语句的返回时间也不长,这时建索引的意义就不大.当然,若就几千行,索引所占的空间也不多,所以这种情况下,顶多属于"性价比"不高. ...
随机推荐
- Odoo配置文件
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189223.html
- 关于DFS的理解
DFS(深度优先搜索)相当于暴力寻找有效解的过程 如果把多种情况写成一个树的方式 那么DFS的实质就是遍历所有分枝来寻找最优解 而DFS中遍历所有解的方式采用了我们称之为回溯法的东西 如图所示 图中的 ...
- 8-剑指offer: 替换空格
题目描述 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 代码: c ...
- Mybatis-plus使用分页进行分页查询
首先先配置配置文件 @Configuration public class MybatisPlusConfig { @Bean public PaginationInterceptor paginat ...
- 201871010102-常龙龙《面向对象程序设计(java)》第十七周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- Lp距离, L1范数, 和L2范数(转载)
范式可以理解成距离 转载自: https://blog.csdn.net/hanhuili/article/details/52079590 内容如下: 由此可见,L2其实就是欧式距离.工程上,往往不 ...
- c语言命名规范图
来自armbbs
- Linux学习笔记-第1天(补发)- 新的开始
本来不打算补发第一天的笔记,第一天讲的内容并不多,且大部分内容都是书本上已有的,就没有写多少笔记. 其实在学习的过程中我挺好奇其它同学各种千奇百怪的问题.想法是怎么来的,我怎么想不出来这些.或许这就是 ...
- 编码-转义2-mark
文本编辑器utf8 "一".encode("gbk") 保存:"一"+utf8 保存为16进制的\xe4\xb8\x80,\x标识了 ...
- [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. ...