早期的web应用主要用于浏览新闻等静态页面,用户通过HTTP协议请求服务 器上的静态页面,服务器上的web服务器软件接收到请求后,读取URI标示的资源,再加上消息报头发送给客户端浏览器,浏览器负责解析HTML,将结果呈现出来
后来用户需要一些交互操作,获取一些动态结果。如果基于HTTP协议实现服务器端软件增强功能太过复杂,所以需要一些扩展机制来实现用户想要的功能。早期使用的Web服务器扩展机制是CGI(Common Gateway Interface,公共网关接口)。使用这种方法,用户单击某个链接或输入网址来访问CGI程序,web服务器收到请求后,运行该CGI程序,对用户请求进行处理,紧接着将处理结果并产生一个响应,该响应被返回给web服务器,web服务器对响应进行包装,以HTTP响应的方式返回给浏览器。
CGI程序在一定程度上解决了用户需求。不过还存在一些不足之处,如CGI程序编写困难,响应时间较长,以进程方式运行导致性能受限。于是1997年,sun公司推出了Servlet技术,作为java阵营的CGI解决方案。
Tomcat将http请求接收并解析为HttpServletRequest对象,发送给Servlet
Tomcat将HttpServletResponse对象变成http响应,发送给浏览器
Servlet是一个基于Java技术的Web组件,运行在服务器端。
它由Servlet容器所管理,用于生成动态的内容。
Servlet是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet规范编写一个Java类。
Servlet容器也叫做Servlet引擎,是Web服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于MIME的请求,格式化基于MIME的响应。
常用的MIME类型:text/html,application/pdf,video/quicktime,application /java,image/jpeg,application/jar,application/octet-stream,application/x- zip)
使用servlet容器来管理和运行servlet的原因:
- 通信支持: 利用容器提供的方法,你能轻松的让servlet与web服务器对话,而不用自己建立serversocket、监听某个端口、创建流等
- 多线程支持:容器会自动为它所接收的每个servlet请求创建一个新的java线程。
- 声明方式实现安全:利用servlet容器,你可以使用xml部署描述文件来配置和修改安全性,而不必将其硬编码写到servlet类代码中。
- JSP支持:servlet容器负责将jsp代码翻译为真正的java代码。
Java Servlet是运行在带有支持Java Servlet规范的解释器的web服务器上的Java类。
使用javax.servlet
和javax.servlet.http
包创建 Java Servlet 就像任何其他的 Java 类一样已经被创建和编译。