java岗面试考察你对servlet 以及jsp的理解

很多初学者包括我做Java开发一上来就是直接使用框架,当然框架的作用就是简化Java开发,尤其是现在最流行的springboot,大大简化了我们的工作量,我就是这样走过这一个坑,所以希望大家不要和我一样走弯路。基础真的很重要,如果你能明白spring容器的工作原理,它能解决什么问题,那么你熟练使用spring自然是水到渠成,所以大家在使用spring之前必须要明白servlet以及jsp的工作原理。 
servlet(servlet applet)全称Java servlet,是用Java 编写的服务器端程序,servlet是指任何实现了这个servlet接口的类。其主要功能在于交互式地浏览和修改数据,生成动态web内容,servlet运行于支持Java的应用服务器中。HttpServlet重写doGet和doPost方法或者你也可以重写service方法完成对get和post请求的相应。 
面试中经常会考察servlet的生命周期,我就简单说一下servlet的生命周期,在这里我要感谢英杰大哥,是他让我更好地理解了客户端与服务器之间是如何工作的。servlet拥有良好的生存期的定义,包括加载和实例化,初始化,处理请求以及服务结束,这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。servlet启动时,开始加载servlet生命周期,servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doGet和doPost方法等,当服务器决定将实例销毁的时候调用其destroy方法。 
接下来谈谈servletAPI中forward()和redirect()的区别,前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器(客户端)将会得到跳转的地址,并重新发送请求链接。forward还是原来的请求而redirect似乎重新发起请求。这样从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且这样也有助于隐藏实际的链接。在有些情况下需要跳转到另一个服务器上,则必须使用sendredirect()方法。简单的说,forward是服务器端的转向而redirect是客户端的跳转;使用forward浏览器的地址不会发生改变,而redirect会发生改变;forward是一次请求中完成,而redirect是重新发起请求;forward是在服务器端完成,而不用客户端重新发起请求,效率高。 
jsp和servlet有哪些相同点和不同点,它们之间的联系是什么? 
jsp是servlet技术的扩展,所有的jsp文件都会被翻译为一个继承HttpServlet的类,jsp最终也是一个servlet,这个servlet对外提供服务,servlet和jsp最主要的不同点在于,servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来,如果要实现html的功能,必须使用writer输出对应的html,而jsp的情况是Java和HTML可以组合成一个扩展名为.jsp的文件,做界面展示比较方便而嵌入逻辑比较复杂。jsp侧重于视图,servlet主要用于控制逻辑。

猜你喜欢

转载自blog.csdn.net/mojiezuo123/article/details/81128927