Web相关面试题

问题1:Servlet生命周期

Web容器加载Servlet类并实例化(默认延迟,一次)(在什么时候加载不知道,若配置了<load-on-startup>1</load-on-startup>,会在启动时加载)
运行init方法进行初始化(一次)
用户请求该Servlet,请求到达服务器时,运行其service方法(每次)
service方法运行与请求对应的doXXX(每次)
销毁实例时调用destroy方法(一次)

问题2:转发和重定向

转发是容器控制的跳转,服务器直接访问目标地址,把目标地址响应的内容读取出来,直接发送给浏览器,浏览器不知道请求从哪里来,浏览器地址不变
重定向是服务器收到请求后,返回一个状态码给浏览器,浏览器请求新地址,地址栏改变 ,转发效率更高,尽量用转发,但转发不能跳转到其他服务器上,重定向可以跳转到其他服务器

问题3:数据库连接池

服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接
客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其标记为忙
如果当前没有控线连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定
当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接

问题4:Jsp内置对象

Request:向客户端请求数据
Response:封装了Jsp产生的响应,然后被发送到客户端以响应客户请求
pageContext:为Jsp页面包装页面的上下文,管理对属于Jsp中特殊可见部分中已经命名对象的该问
session:用来保存每个用户的信息,以便跟踪每个用户的操作状态
application:应用程序对象
out:向客户端输出数据
config:表示servlet的配置,当一个Servlet初始化时,容器把某些信息通过此对象传递个这个servlet
page:Jsp实现类的实例,它是Jsp本身,通过这个可以对它进行访问
exception:反映运行的异常

问题5:Jsp四个域对象

pageContext:是代表与一个页面相关的对象和属性
request:是代表与Web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web组件(由于forward指令和include动作的关系)
session:是代表与用于某个Web客户机的一个用户体验相关的对象和属性。一个Web会话可以也经常会跨域多个客户机请求
application:是代表与整个web应用程序相关的对象和属性。这实质上是跨越了整个Web应用程序,包括多个页面,请求和会话的一个全局作用域

问题6:Get和Post区别

Get将表单中数据按照param=value的形式,添加到action所指的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值对应的方式,传递到action所指的URL;
Get是不安全的,因为在传输过程中,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的;
Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以文件上传只能用post;
Get限制Form表单的数据集必须为ASCLL字符,而Post支持整个 IS010646字符集

问题7:MVC设置思想

基于Java的Web应用程序采用MVC架构模式,即model(模型)、view(视图)、controller(控制器)分离设置
Model:即处理业务逻辑的模块,每一种处理一个模块
View:负责页面显示,显示Model处理结果给用户,主要实现数据到页面转换过程
Controller:负责每个请求的分发,把FORM数据传递给MODEL处理,把结果的数据传递给View

问题8:Session和Cookie的区别

session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息
session中保存的是对象,cookie保存的是字符串
session不能区别路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的
session需要借助cookie才能正常。如果客户端完全禁止cookie,session将失效