java岗面试考察你对servlet 以及jsp的理解
2018-01-14 12:37
323 查看
很多初学者包括我做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主要用于控制逻辑。
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主要用于控制逻辑。
相关文章推荐
- JAVA面试-Servlet和jsp基础篇
- Java面试题精选(三) JSP/Servlet Java面试逻辑题
- java面试之Servlet/JSP面试题
- 用于 Java 程序(J2SE, JSP/Servlet) 的可直接返回连接以及定时关闭超时连接的连接池程序
- Jsp+Servlet+JavaBean经典MVC模式理解
- Jsp+Servlet+JavaBean经典MVC模式理解
- Java面试题精选(三) JSP/Servlet Java面试逻辑题
- Jsp+Servlet+JavaBean经典MVC模式理解
- Jsp+Servlet+JavaBean经典MVC模式理解
- 报错:java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config
- Java Servlet/JSP容器配置 session id
- 登录注册 (java jdbc servlet jsp)
- java开发web工程有 servlet/ jsp/ spring mvc等技术框架,那其他语言呢?
- 面试 谈一谈对java io的理解
- [Java面试五]Spring总结以及在面试中的一些问题.
- JSP+Servlet+JavaBean实现MVC 的缺陷
- 【Head First Servlets and JSP】笔记20:EL以及<jsp:useBean ....>的补充
- JSP+Servlet+JavaBean+Dao模式介绍
- jsp和servlet的问题收集.... 答案有部分是自己理解的,可能有点差异
- Java方法的重载以及构造函数的理解