Servlet容器

1 容器

如果Web服务器应用得到一个指向servlet的请求,此时服务器不是把请求交给servlet本身,而是交给部署该servlet的容器。要由容器想servlet提供HTTP请求和相应,而且要由容器调用servlet的方法,如doPost()或doGet()。

1.1 容器提供什么
  • 通信支持
    无需自己建立ServerSocket、监听端口、创建流等。
  • 生命周期管理
  • 多线程支持
    容器会自动为它接受的每个servlet请求创建一个新的java线程。
  • 声明方式实现安全
    利用容器,可以使用XML部署描述文件来配置和修改安全性,而不必将其硬编码写到servlet或其他类代码中。
  • JSP支持
    容器负责把jsp代码翻译成真正的Java
1.2 容器如何处理请求
  1. 用户点击一个链接,其URL指向一个servlet。
  2. 容器创建请求和响应对象:HttpServletResponse、HttpServletRequest。
  3. 容器根据请求中的URL找到正确的servlet,为这个请求创建或分配一个线程,并把请求和响应对象传递给这个servlet线程。
  4. 容器调用servlet的service()方法。根据请求的类型,service()方法会调用doGet()或doPost()方法。
  5. 以Http GET请求为例: doGet()方法生成动态页面,并把这个页面填入响应对象。
  6. 线程结束,容器吧响应对象转换为一个HTTP响应,把它发回给客户,然后删除请求和响应对象。
    /**
     * 一个servlet例子
     */
    public class ServletEXP extend HttpServlet {
        public void doGet(HttpServletRequest reque, HttpServletResponse response) throws IOException{
            // 在servlet从容器得到的响应对象中,可以拿到一个PrintWriter。
            // 使用这个PrintWriter能够将HTML文本输出到响应对象。
            PrintWriter out = response.getWriter();
            Date today = new Data();
            out.println(" " + "" 
                        + "

DanDan's ServletEXP

" + today + "") } }

你可能感兴趣的:(Servlet容器)