JavaWeb面试题总结

1.转发和重定向的区别?

  • 转发: 转发地址栏路径不变、 转发只能访问当前服务器下的资源、转发是一次请求,可以使用request对象来共享数据。
  • 重定向:地址栏发生变化、重定向可以访问其他站点(服务器)的资源、重定向是两次请求(告诉客户端去访问其他地址),不能使用request对象来共享数据。

2.Cookie的特点

  • Cookie是客户端会话技术,将数据保存到客户端。
  • 浏览器对于单个cookie 的大小有限制(4kb) 以及对同一个域名下的总cookie数量也有限制(20个),cookie一般用于存出少量的不太敏感的数据,在不登录的情况下,完成服务器对客户端的身份识别。

3.Cookie的生命周期

  • 默认情况下,当浏览器关闭后,Cookie数据被销毁
  • 如果想要持久化存储,可以使用setMaxAge(int seconds)。正数:将Cookie数据写到硬盘的文件中,持久化存储,并指定cookie存活时间,时间到后,cookie文件自动失效。负数:默认值。零:删除cookie信息。

4.Cookie可以存储中文数据吗?

  • 在tomcat 8 之前cookie中不能直接存储中文数据,需要将中文数据转码—一般采用URL编码(%E3)。
  • 在tomcat 8 之后,cookie支持中文数据,特殊字符还是不支持,建议使用URL编码存储,URL解码解析。

5.Cookie的共享范围是什么?

  • 假设在一个tomcat服务器中,部署了多个web项目,那么在这些web项目中cookie默认情况下不能共享。通过setPath(String path)设置cookie的获取范围,默认情况下,设置为当前的虚拟目录,如果要共享,则可以将path设置为/。
  • 不同的tomcat服务器间cookie共享问题:通过setDomain(String path)设置一级域名,如果一级域名相同,那么多个服务器之间cookie可以共享。例如setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com中cookie可以共享。(不建议这么设置!)

6.Session

  • Session是服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。
  • Session的实现是依赖于Cookie的,服务器是通过cookie中的JESSIONID判断session是否是同一个的。

7.Session的生命周期?当客户端关闭后,服务器不关闭,两次获取session是否为同一个?客户端不关闭,服务器关闭后,两次获取的session是同一个吗?

  • 服务器关闭、session对象调用invalidate() 时销毁,session默认失效时间 30分钟。
  • 在默认情况下,当客户端关闭服务端不关闭时,两次获取session值不是同一个。
  • 如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。(JESSIONID的默认时效是当前会话)
  • 客户端不关闭,服务端关闭,两次获取的session值也不是同一个。但是要确保数据不丢失。tomcat自动完成以下工作。session的钝化: 在服务器正常关闭之前,将session对象序列化到硬盘上。session的活化: 在服务器启动后,将session文件转化为内存中的session对象即可。但是IDEA不支持这种操作,因为每次用IDEA重启tomcat时会自动删除catalina_base中work目录(程序动态生成的文件),这样在关闭tomcat时生成的session序列化文件也会被删除。

8.Session的特点,和Cookie有什么区别?

  • Session用于存储一次会话的多次请求的数据,存在服务器端。session可以存储任意类型,任意大小的数据。
  • Session存储数据在服务器端,Cookie存储数据在客户端。
  • Session没有存储数据的大小限制,Cookie有数据大小限制。
  • Session存储数据是安全的,使用Cookie存储数据相对于使用Session来说不安全。

9.过滤器和拦截器的区别

在这里插入图片描述
在这里插入图片描述

10.JSP四大作用域

application:在所有应用程序中有效,即只要这个网站运行着,这个作用域就有效,这个指的程序的运行过程。

session:在当前会话中有效,即从浏览器访问服务器开始,这个指的是用户的一个访问过程,即这次会话的开始到结束

request:在当前请求中有效,负责多个servlet之间的信息共享,即将信息放入到request中,在整个请求阶段都是有效的,即用户访问的这个阶段都可以获取到这个数据

page:在当前页面有效,即在一个jsp页面上是有效的。

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页