一些面试题

目录

HTTP协议

1.请求报文和响应报文的结构

2.http请求方法有哪些?

3.GET和POST请求的区别

携带数据的位置和大小不同

JSP&Servlet

1.JSP和Servlet的区别

2.JSP的九大内置对象

3.JSP的四大作用域

四大作用域分别对应了4个内置对象

page作用域

request作用域

session作用域

application作用域

作用域大小:

用el表达式取数据的时候需要指定在哪个作用域中取

4.Servlet生命周期

1.初始化阶段

2.判断请求方式阶段

3.销毁阶段

 转发和重定向

1.发生的位置不同

2.请求次数不同

3.地址栏不同

4.是否共享request作用域        

5.跳转限制

拦截器技术

Cookie和Session的区别


HTTP协议

1.请求报文和响应报文的结构

一个HTTP请求报文由三个部分组成:请求行、请求头部、请求数据(请求体)

一个HTTP响应报文也由三部分组成:响应行、响应头、响应体

2.http请求方法有哪些?

get - 用于查询操作

post - 增

put - 改

delete - 删

1、GET方法;查

2、POST方法;增

3、HEAD方法;

4、PUT方法;改

5、DELETE方法;删

6、CONNECT方法;

7、OPTIONS方法;

8、TRACE方法。

3.GET和POST请求的区别

携带数据的位置和大小不同

get请求直接把数据用?拼接在url后面,大小上限时2KB-4KB

post请求把数据放在请求体里面,大小上限是15MB


第一层 GET和POST的行为区别

- GET参数通过URL传递,POST放在Request body中。
- GET请求在URL中传送的参数是有长度限制的,而POST没有。
- GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
- GET在浏览器回退时是无害的,而POST会再次提交请求。

- 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。


- GET请求会被浏览器主动cache缓存,而POST不会,除非手动设置。
- GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

JSP&Servlet

1.JSP和Servlet的区别

JSP和Servlet的主要作用的相同的,都是充当JavaWeb工程的中间层,接受HTTP客户端的请求,调用Model层后返回响应。

JSP全称是Java Servlet Page,JSP中可以写html, css, js代码,并且可以在<%%>中嵌入Java代码,当JSP第一次被请求时,会由Tomcat把JSP翻译为Java源代码文件,再编译为Class字节码文件,最终向HTTP客户端输出HTML格式的响应结果。因此JSP是运行在服务器端的。

由Tomcat把JSP翻译的Java源代码文件就是一个Servlet,因此JSP本质是就是Servlet

JSP可以充当MVC三层中的Controller控制器层和View视图表示层,但是这不是一种好的编程体验,也违反了程序设计的单一职责原则,因此我们将控制器和视图表示层分层,控制器层交给Servlet,视图层交给JSP。由控制器层Servlet接受HTTP客户端的请求,调用Model层拿到数据后再把数据转发给视图层JSP,JSP中通过jstl标签和el表达式把数据取出后生成动态的HTML,最终输出给HTTP客户端。

2.JSP的九大内置对象

request请求对象 封装了来自客户端、浏览器的各种信息。

response响应对象 封装了服务器的响应信息。

session会话对象 用来保存会话信息。也就是说,可以实现在同一用户的不同请求之间共享数据

page对象 指向了当前jsp程序本身。

application对象 代表了当前应用程序的上下文。可以在不同的用户之间共享信息。

pageContext对象 提供了对jsp页面所有对象以及命名空间的访问。

out对象 用于向客户端、浏览器输出数据。

exception对象 封装了jsp程序执行过程中发生的异常和错误信息。

config对象 封装了应用程序的配置信息。

3.JSP的四大作用域

四大作用域分别对应了4个内置对象

每个对象都有setAttibute()方法和getAttibute()方法

page作用域

在当前jsp中共享

request作用域

        在当前请求中共享

session作用域

        数据在session对象未失效前都能取到,(默认是30分钟失效)

        在当前客户端会话中共享

application作用域

        所有客户端共享

作用域大小:

page < request < session < application

用el表达式取数据的时候需要指定在哪个作用域中取

<div>${pageScope.name}</div>
<div>${requestScope.name}</div>
<div>${sessionScope.name}</div>
<div>${applicationScope.name}</div>

如果不指定作用域也可以,那么el表达式默认会从最低作用域开始依次找,直到找到为止

4.Servlet生命周期

1.初始化阶段

        当Servlet第一次被请求的时候,会初始化Servlet实例,重写init方法可以参与这个阶段

2.判断请求方式阶段

        当请求进来后,会调用Service方法判断当前请求方式,从而决定调用哪个处理请求的方法,如果是get请求就会调用doGet方法,如果是post请求就会调用doPost方法,其他几种请求也有相应的doXxx()方法

3.销毁阶段

        当Tomcat退出运行的时候,会先销毁Servlet实例,重写destory()可以参与这个阶段

 转发和重定向

1.发生的位置不同

        转发请求:发生在服务端                                                 

        定向请求:发生在客户端

2.请求次数不同

        转发请求:请求在后端转发多次,仍然属于同一次定向请求

        重定向请求:是两次定向请求

3.地址栏不同

        转发请求:不会改变浏览器的地址栏

        重定向请求:会改变浏览器的地址栏

4.是否共享request作用域        

        转发请求:可以共享request作用域中携带的数据

        重定向请求:不可以共享request作用域中携带的数据

5.跳转限制

        转发请求:只能发生在当前站点

        重定向请求:可以发生在当前站点内,也可以到外部的站点

拦截器技术

 

Cookie和Session的区别

Cookie和Session都是会话跟踪技术

HTTP协议是无状态的协议

Cookie存储在浏览器中

        每一次HTTP请求报文中都会自动把Cookie携带在请求头里面

Sesison存储在服务器中

        从请求头中取出JSEESIONID的Cookie

        查找有没有这个id对应的session对象,如果没有 会创建一个新的session对象

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值