Servlet
是一种独立于操作系统平台和网络传输协议的服务器端的Java应用程序,它用来扩展服务器的功能,可以生成动态的Web页面。最大的用途是通过动态响应客户机请求来扩展服务器功能。Servlet不是从命令行启动的,而是由包含Java虚拟机的Web服务器进行加载协议请求和响应服务类
Servlet可以做什么
可以产生纯文本信息(这个功能不常用)
它可以读取客户端发送来的显式数据,比如表单数据
可以读取客户端发送来的隐式数据,比如请求报头
生成相应结果
发送显式数据给客户(HTML;XML)
发送隐式数据给客户(状态代码;响应报头)
工作原理
- 运行在web服务器上的web容器里。
- 客户机将请求发送到服务器。
- 服务器上的Web容器实例化(装入)Servlet
- Web容器将请求信息发送到 Servlet。
- Servlet 创建一个响应,并将其返回到Web容器。
- Web容器将响应发回客户机。
- 服务器关闭或Servlet空闲时间超过一定限度时,调用destory()方法退出。
从这里可以看到客户机与Servlet间没有直接的交互。无论客户机对Servlet的请求还是Servlet对客户端的响应,都是通过Web服务器来实现的,这就大大提高了Servlet组件的可移植性.
基本的架构图
生命周期
实例化,初始化,就绪,销毁,回收
创建servlet
涉及以下四个步骤
1扩展httpservlet抽象类
所有的servlet必须直接或间接地实现servlet.servlet接口
必须扩展http.httpservlet类
2重载适当的方法,主要是重写doget或gopost方法
3 http请求,获取该信息
4生成http响应,httpservletresponse对象生成响应,并将它返回到发出请求的客户机上
在web应用的web-inf\classes下,并在部署描述文件web.xml中注册
部署
部署Servlet主要是使得Web容器能够加载Servlet。
web.xml文件配置servlet
web.xml部署描述文件中注册和配置生命以及映射一个servlet示例
实例:
1<!--第一个servlet程序配置 --> 2<servlet> 3<servlet-name>firstServlet</servlet-name> 4<servlet-class>HelloClientServlet的包路径</servlet-class> 5</servlet> 6<!--第一个servlet程序映射 --> 7<servlet-mapping> 8<servlet-name>firstServlet</servlet-name><!--必须与配置中的servlet-name相同 --> 9<url-pattern>/first.do</url-pattern> 10</servlet-mapping>
小结:
servlet更倾向于服务的请求和应答,符合业务层。若利用servlet输出HTML语句来实现动态网页的,如果用它来开发整个网站,动态部分和静态页面的整合过程将变得无法想象。因此JSP出现了。