我们已经知道服务器可以处理静态页面和动态页面了下面是如何实现动态页面即如何实现处理请求的应用程序servlet
Servlet
servlet是一个在web服务器或者应用服务器端运行的java程序,主要用于在服务器端产生动态内容
web容器(servlet容器)
存放servlet程序,提供servlet程序运行环境
web容器对servlet的支持包括
1. 通信支持 利用容器提供的方法我们能直接实现servlet和web服务器对话,我们只需要实现具体逻辑
2. 声明周期管理 容器负责控制servlet的生死,他会负责加载类,实例化,初始化servlet,调用servlet方法,以及使这个示例能被垃圾回收
3. 多线程支持 容器会为每一个接受的servlet创建一个新线程
4. jsp支持
5. 处理安全性
web服务器和web容器的区别
web服务器包括了web容器
web服务器只能接受请求/响应静态页面
web容器中的servlet程序动态生成页面返回给web服务器,服务器再响应页面
web容器和servlet对请求和响应的处理
1. 浏览器向服务器发送请求
2. 服务器接受请求,如果请求访问静态页面,则有web服务器响应静态页面给浏览器,如果请求javaweb组件,则把这个请求移交给web容器
3. web容器根据servlet的配置文件确定具体调用哪个类,并把request和response对象传给他
4. servlet通过request对象处理完业务把返回信息放在response对象中返回给浏览器
5. servlet完成请求处理,web服务器刷新response,把控制权交回给web服务器
servlet规范的组成
1. web应用程序 servlet被规定成一个web应用程序的大型项目中的一部分,web项目可以有零个或者一个或者多个servlet
2. servlet和httpservlet
3. 过滤器
4. 安全
5. 国际化
servletAPI
一个servlet程序就是一个在服务器端调用servletAPI的java类
这个类必须实现一个servlet接口
在这个API中提供了GenericServlet类实现了servlet和servletConfig接口
同时还有一个HtttpServlet类继承了GenericServlet类
所以我们要实现在万维网运行的java程序则需要自己写servlet类继承HttpServlet类
我们要做什么
1. 继承HttpServlet类
2. 重写方法
3. 配置文件
配置文件的规范
1. servlet元素中的servlet-name必须和servlet-mapping中的servlet-name保持一致
2. servlet-mapping元素中的url-pattern必须以/开头
servlet生命周期
1. 创建对象
2. 初始化 init方法初始化
3. 提供服务 service方法处理请求产生响应
4. 销毁 destroy方法销毁
5. GC回收对象
正常情况创建,初始化,销毁一次,提供多次服务
如果长时间没有发请求给这个servlet,这个servlet会自动销毁掉,当下一次请求在发过来的时候,这个servlet会重新创建初始化