1.Servlet是什么?
Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
2.Servlet生命周期?
Servlet是在服务器(我们这里是Tomcat)启动时强制加载和初始化的。
Servlet首先创建一个Servlet的实例(new()),然后调用Init()方法,客户端请求达到Server,Servlet创建HttpRequst对象和HttpResponse对象,然后调用Servlet的Service()方法(这里doGet()或者doPost()),Servlet执行完毕后,调用Destroy()方法销毁对象。
这里需要说明的是,Servlet是单实例,多线程的,只是在系统第一次调用时,调用Servlet的Init()方法,以后每次都是调用Service()方法中的doGet()或者doPost()方法,因此它可以产生多个Service对象,所以它存在线程安全问题。
解决线程安全的问题是在Service()方法中的doGet()或者doPost()方法中使用synchronized方法加锁吗?不是的,这样的话,虽然可以保证每次只有一个对象可以被调用,但是当多用户访问时就会大大降低程序的运行效率,解决的方案就是在业务逻辑层使用事务。由于篇幅问题,这里不做过多介绍。
3.Servlet的执行过程?
4. HttpServletRequest
包装了客户端提交过来的所有数据(客户端的IP地址,客户端的表单数据,Cookies信息)
HttpServletResponse包装了向客户端输出的数据(文字,图片等)