avatar

web核心面试题

servlet什么时候创建

默认情况第一次访问创建,可以通过配置load-on-startup的值,让servlet的随着tomcat启动而创建,该值只要大于等于0即可。该值越小优先级越高

servlet生命周期的三个方法是什么

init servlet创建的时候执行
service servlet被访问的时候执行
destory servlet被销毁的时候执行

如何解决请求和响应乱码

request.setCharacterEncoding(“utf-8”)//解决POST乱码,并不能处理get请求乱码,TOMCAT8,自动处理了GET乱码
response.setContentType(“text/html;charset=utf-8”)

Session和cookie有什么区别?

Cookie是会话技术,将用户的信息保存到浏览器的对象. Session也是会话技术,将Session的信息保存到服务器的对象

1.cookie存在浏览器,session存在服务器
2.cookie不安全,session安全
3.cookie有大小数量限制,session没有。(数量和大小不同浏览器不一样)
4.session基于cookie

顺便可以说说session和cookie的原理

Jsp有哪些内置对象?作用分别是什么?

Page,pageContext,request,response,session,application,out,config,exception

Page 表示当前JSP页面

pageContext对象可以用来获得其他8个内置对象,还可以作为JSP的域范围对象使用.pageContext中存的值是当前的页面的作用范围

request代表的是请求对象,可以用于获得客户机的信息,也可以作为域对象来使用,使用request保存的数据在一次请求范围内有效。

session代表的是一次会话,可以用于保存用户的私有的信息,也可以作为域对象使用,使用session保存的数据在一次会话范围有效

application:代表整个应用范围,使用这个对象保存的数据在整个web应用中都有效。

response是响应对象,代表的是从服务器向浏览器响应数据.

out:JSPWriter是用于向页面输出内容的对象,先将数据保存到服务器的缓存中,最后再一次性将数据写给浏览器

config:指的是ServletConfig用于JSP翻译成Servlet后 获得Servlet的配置的对象.

exception:在页面中设置isErrorPage=”true”,即可使用,是Throwable的引用.用来获得页面的错误信息

JSP 4个作用域

pageContext,request,session,application

EL表达式中的4个作用域

pageScope,requestScope,sessionScope,applicationScope

JSP中的四个作用域和EL中的有什么区别

JSP中的四个作用域对象可以对域中的数据添加,获取,删除。而EL中的只能获取域对象中的数据

如何使用EL表达式获取虚拟路径

${pageContext.request.contextPath}

http 常见的状态码有哪些

200 服务器正常相应数据

302 重定向

304 访问缓存

403 服务器拒绝访问

404 服务器找不到请求的资源

405 服务器内部缺少doGet或者doPost方法

500 (服务器内部错误) 服务器遇到错误,无法完成请求。

503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。

http请求方式有几种?

请求方式 使用场景
GET 从服务器向客户端发送命名资源
PUT 将来自客户端的数据存储到一个命名的服务器资源中去
DELETE 从服务器中删除命名资源
POST 将客户端数据发送到一个服务器网关应用程

GET和POST区别

1、get重点在从服务器上获取资源,post重点在向服务器发送数据;
2、get传参通过URL,拼接方式?参数名=值&参数名=值
3、Get传输的数据量小,因为受URL长度限制,但效率较高;Post可以传输大量数据,所以上传文件时只能用Post方式
4、get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;post较get安全性较高
5、get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码;post支持标准字符集,可以正确传递中文字符。

实在记不住,一句话,post相对于get更加安全,并且没有大小限制。

HTTP请求报文与响应报文格式

请求报文包含三部分

a、请求行:包含请求方法、URI、HTTP版本信息
b、请求头
c、请求内容实体

响应报文包含三部分:

a、状态行:包含HTTP版本、状态码、状态码的原因短语
b、响应头
c、响应内容实体

session工作原理

浏览器第一次访问服务器,服务器创建Session对象,同时生成一个Session id,并将ID的值通过JSESSIONID存储浏览器cookie中。

以后客户端浏览器每次访问服务器时会将JSESSION发送给服务器,服务器根据ID值找到对应的SESSION并使用

Servlet是线程安全的吗

不安全,所以不建议在servlet中定义成员变量

每次访问同一个JSP页面都会重新编译成Servlet吗

只有第一次或者JSP发生变化才会重新编译

jsp中有哪些脚本作用是什么

脚本的作用嵌套JAVA代码

<% 任意java代码%>

<%=表达式%> 在页面输出数据

<%!定义成员变量,不推荐,因为SERVLET是线程不安全的,不建议使用成员变量%>

ServletContext有几个功能

获取MIME类型

作为域对象存储数据

获取web目录下的资源

获取web.xml中的配置信息

cookie的数量限制

不同浏览器cookie的数量限制不同

​ Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie。

​ Firefox每个域名cookie限制为50个。

​ Opera每个域名cookie限制为30个。

​ Safari/WebKit貌似没有cookie限制。但是如果cookie很多,则会使header大小超过服务器的处理的限制,会导致错误发生。

注:“每个域名cookie限制为20个”将不再正确!

cookie的大小限制

不同浏览器间cookie总大小也不同:

  Firefox和Safari允许cookie多达4097个字节,包括名(name)、值(value)和等号。

  Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号。

  InternetExplorer允许cookie多达4095个字节,包括:名(name)、值(value)和等号。

注:多字节字符计算为两个字节。在所有浏览器中,任何cookie大小超过限制都被忽略,且永远不会被设置。

浏览器关闭session就销毁了,这句话对吗

不对,浏览器关闭,session不会立刻销毁,默认30分钟以后销毁。可以通过修改tomcat中web.xml配置,修改默认存活时间

浏览器关闭了,重新打开,还是之前的session吗

默认情况不是,JSESSIONID存在cookie中,默认浏览器关闭就消失,所以下次打开浏览器会重新生成一个JSESSIONID,使用的session也肯定不是同一个了

可以通过修改JSESSIONID的存活时间,这样重新打开浏览器,访问的还是之前的session

服务器重启后原来的sesssion还在吗?

存在,服务器正常关闭会将SESSION 序列化(钝化,写入)到硬盘,下次启动会将数据读取(活化、反序列化)到内存

如何销毁session

默认情况30分钟浏览器和服务器没有交互自动销毁,可以修改默认配置apache-tomcat-8.5.31\conf\web.xml 。改名默认存活时间,或者手动调用session对象的invalidate()方法销毁session

说说session的应用场景

验证码、购物车、用户登录信息

重定向和转发的区别

发送了几次请求(转发一次,重定向2次)
浏览器地址栏有没有发生变化(转发不变,重定向变)
能不能使用request作用域(转发可以,重定向不可以)

文章作者: 微信:hao_yongliang
文章链接: https://haoyongliang.gitee.io/2020/03/18/%E9%9D%A2%E8%AF%95%E9%A2%98/web%E6%A0%B8%E5%BF%83%E9%9D%A2%E8%AF%95%E9%A2%98/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 郝永亮的主页
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论