Servlet的生命周期,以及Servlet和CGI的区别
Servlet的生命周期:
- Web容器加载Servlet并将其实例化后,Servlet生命周期开始.
- 容器运行其init()办法进行Servlet的初始化.
- 申请达到时调用Servlet的service办法,service办法会调用与申请对应的doGet或doPost等办法.
- 当服务器敞开会我的项目被卸载时服务器会将Servlet实例销毁.此时会调用Servlet的destroy办法.
CGI:
CGI(Common Gateway Interface)通用网关接口.
通过CGI接口,Web服务器就可能获取客户端传递的数据,并转交给服务器端的CGI程序处理,而后返回后果给客户端(CGI程序是实现了CGI接口标准的程序).
Web服务器接管到动静脚本申请,Web服务器主过程就会创立出一个新的过程来启动CGI程序,也就是将动静脚本交给CGI程序来解决.当CGI程序启动后会去解析动静脚本,而后将后果返回给Web服务器,最初由Web服务器将后果返回给客户端,之前创立进去的过程也随之敞开.
(转自:https://www.jianshu.com/p/c4dc22699a42)
Servlet与CGI的区别:
在于Servlet处于服务器过程中,它通过多线程形式运行其service办法,一个实例能够服务于多个申请,并且其实例个别不会销毁.
CGI对每个申请都产生新的过程,服务实现后就销毁,所以效率上低于Servlet.随着Fast CGI解决CGI效率上的问题,二者在效率长差异不是很大.
转发(forward)和重定向(redirect)的区别
forward是容器中控制权的转向,是服务器申请资源,服务器间接拜访指标地址的URL,把那个URL的响应内容读取过去,而后把这些内容再发给浏览器.浏览器基本不晓得服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址.
redirect就是服务器端依据逻辑,发送一个状态码,通知浏览器从新去申请那个地址,因而从浏览器的地址栏中能够看到跳转后的链接地址.
前者更加高效,在前者能够满足需要时,尽量应用转发.(通过RequestDispatcher对象的forward办法.RequestDispatcher对象能够通过ServletRequest对象的getRequestDispatcher办法取得),并且,这样也有助于暗藏理论的链接.
在有些状况下,比方,须要跳转到一个其它服务器上的资源,则必须应用重定向(通过HttpServletResponse对象调用其sendRedirect办法)
JSP的内置对象及其作用
- request:封装客户端的申请,其中蕴含来自GET或POST申请的参数.
- response:封装服务器对客户端的响应.
- pageContext:通过该对象能够获取其余对象.
- session:封装用户会话的对象.
- application:封装服务器运行环境的对象.
- out:输入服务器响应的输入流对象.
- config:Web利用的配置对象.
- page:JSP页面自身(相当于Java程序中的this).
- exception:封装页面抛出异样的对象.
get和post申请的区别
- get申请用来从服务器上取得资源,而post是用来向服务器提交数据.
- get将表单中数据依照name=value的模式,增加到action所指向的URL前面.并且两者应用“?”连贯,而各个变量之间应用“&”连贯.post是将表单中的数据放在HTML头部(header),传递到action所指向URL.
- get传输的数据要受到URL长度限度(1024字节).而post能够传输大量的数据,上传文件只能应用post形式
- 应用get时参数会显示在地址栏上,如果这些数据不是敏感数据,那么能够应用get.对于敏感数据还是利用应用post.
JSP和Servlet的关系
Servlet是一个非凡的Java程序,它运行于服务器的JVM中,可能依附服务器的反对向浏览器提供显示内容.
JSP实质上是Servlet的一种繁难模式,JSP会被服务器解决成一个相似于Servlet的Java程序,能够简化页面内容的生成.
Servlet和JSP最次要的不同点在于:
- Servlet的应用逻辑是在Java文件中,并且齐全从表示层中的HTML拆散开来.
- JSP是将Java和HTML能够组合成jsp文件.
- JSP侧重于视图,Servlet更侧重于管制逻辑,在MVC架构模式中,JSP适宜充当视图(view)而Servlet适宜充当控制器(controller).
JSP中的四种作用域
- page:代表与一个页面相干的对象和属性.
- request:代表与Web客户机收回的一个申请相干的对象和属性.一个申请可能逾越多个页面,波及多个Web组件;须要在页面显示的长期数据能够置于此作用域.
- session:代表与某个用户与服务器建设的一次会话相干的对象和属性.跟某个用户相干的数据应该放在用户本人的session中.
- application:代表与整个Web应用程序相干的对象和属性,它本质上是逾越整个Web应用程序,包含多个页面,申请和会话的一个全局作用域.