Servlet学习笔记(一)

Servlet的定义:

Servlet是在服务器上运行的小程序。一个Servlet就是一个java类,并且可以通过“请求-响应”编程模型来访问这个驻留在服务器中内存里的Servlet小程序。

Tomcat的容器等级:

Tomcat的容器分为四个等级,Servlet的容器管理Context容器,一个Context对应一个Web工程。

Servlet学习笔记(一)_第1张图片
Tomcat容器等级

编写第一个Servlet小程序:

  • 继承HttpServlet
  • 重写doGet()或者doPost()方法
  • 在web.xml中注册Servlet
Servlet学习笔记(一)_第2张图片
自定义servlet
  • 创建测试类HelloServlet.java,其继承抽象类HttpServlet
package com.zzw.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("处理Get()请求...");
        PrintWriter out = response.getWriter();
        //指定输出的文件类型
        response.setContentType("text/html;charset=utf-8");
        //向浏览器输出信息
        out.println("

Hello Servlet!


"); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("处理Post()请求..."); PrintWriter out = response.getWriter(); response.setContentType("text/html;charset=utf-8"); out.println("

Hi Welcome!


"); } }
  • 编写初始化页面index.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" %>


    

第一个Servlet

Hello World!

Get方式请求HelloServlet

  • 注册servlet实例,修改web.xml文件



    Archetype Created Web Application

    
    
        HelloServlet
        
        com.zzw.servlet.HelloServlet
    
    
    
    
        HelloServlet
    
        /servlet/HelloServlet
    

Servlet学习笔记(一)_第3张图片
Servlet执行流程

Servlet的生命周期

  • 该阶段包括初始化加载实例化服务销毁

1、初始化阶段,调用init()方法;
2、响应客户请求阶段,调用service()方法。由service()方法根据提交方式选择执行doGeT()或者doPost()方法;
3、终止阶段,调用destroy()方法。

Servlet学习笔记(一)_第4张图片
servlet的生命周期
  • 在下列时刻Servlet容器装载Servlet:
  1. Servlet容器启动时自动装载某些Servlet,实现它只需要在web.xml文件中的之间添加如下代码:1,数字越小表示优先级别越高;
  2. 在Servlet容器启动后,客户端首次向Servlet发送请求;
  3. Servlet类文件被更新后,Servlet容器将会重新装载Servlet;(tomcat服务器一启动,Servlet实例长期驻留在内存中)
  4. Servlet被装载后(类的构造函数先执行),Servlet容器创建一个Servlet实例时首先调用Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次。
  • 修改HelloServlet.java文件
package com.zzw.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends HttpServlet{

    public HelloServlet() {
        System.out.println("HelloServlet的构造方法被执行......");
    }

    @Override
    public void init() throws ServletException {
        super.init();
        System.out.println("HelloServlet的init方法被执行......");
    }

    @Override
    public void destroy() {
        System.out.println("HelloServlet的destroy方法被执行......");
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("HelloServlet中的doGet方法被执行...");
        PrintWriter out = response.getWriter();
        //指定输出的文件类型
        response.setContentType("text/html;charset=utf-8");
        //向浏览器输出信息
        out.println("

Hello Servlet!


"); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("HelloServlet中的doPost方法被执行..."); PrintWriter out = response.getWriter(); response.setContentType("text/html;charset=utf-8"); out.println("

Hi Welcome!


"); } }
  • 创建测试类TestServlet1.java,其继承抽象类HttpServlet
package com.zzw.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class TestServlet1 extends HttpServlet {

    public TestServlet1() {
        System.out.println("TestServlet1的构造方法被执行......");
    }

    @Override
    public void init() throws ServletException {
        super.init();
        System.out.println("TestServlet1的init方法被执行......");
    }

    @Override
    public void destroy() {
        System.out.println("TestServlet1的destroy方法被执行......");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("TestServlet1的doGet方法被执行......");
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter();
        out.println("

Hello!我是TestServlet1


"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("TestServlet1的doPost方法被执行......"); //设置响应文本类型 resp.setContentType("text/html;charset=utf-8"); PrintWriter out = resp.getWriter(); out.println("

Hi!Welcome!


"); } }
  • 修改初始化页面index.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" %>


    

第一个Servlet

Hello World!

Get方式请求HelloServlet

Servlet生命周期

以Get方式请求TestServlet1

  • 注册servlet实例,修改web.xml文件



    Archetype Created Web Application

    
    
        HelloServlet
        
        com.zzw.servlet.HelloServlet
        1
    

    
        TestServlet1
        com.zzw.servlet.TestServlet1
        2
    

    
    
        HelloServlet
    
        /servlet/HelloServlet
    

    
        TestServlet1
        /servlet/TestServlet1
    


Servlet学习笔记(一)_第5张图片
servlet容器自动装载servlet的执行结果
Servlet学习笔记(一)_第6张图片
servlet与九大内置对象

你可能感兴趣的:(Servlet学习笔记(一))