Servlet的API:

HttpServletResponse:是对响应信息的封装。

HttpServletRequest:是对请求信息的封装。

Servlet(接口)
|-GenericServlet(抽象类)
|-HttpServlet(抽象类)
|-FirstServlet(自定义的servlet)

我们自定义的类是否实现了servlet接口,是我们判断该类是否是servlet的唯一标准。

Servlet类的生命周期:

一个servlet对象从创建到销毁的整个过程。

Servlet接口方法:

Init()方法

Destroy()方法

Service()方法。


  • 1.当客户端有请求过来时,都会去执行service方法。每一个请求都会去调用servlet的service方法。
  • 2.当servlet对象被创建出来时,servlet对象会自动执行init方法。当第一次请求过来时,servlet容器会实例化出servlet对象。Servlet对象是单实例的。所有的客户端请求都会使用第一次请求创建的servlet对象。
  • 3.当tomcat停止服务时。Servlet会被销毁掉。销毁前,servlet会调用destroy方法。
    Servlet入门案例(三)Servlet的生命周期、api和请求方式、工作原理、注解开发_乱码问题
    因此得出结论:
    Servlet是单实例的,所有的请求公用一个servlet对象。那么servlet对象不要定义属性。

面试常见servlet生命周期的问题:


  • 1.谁创建了servlet。
  • 2.创建servlet的时机。
  • 3.三个方法的调用时机。
  • 4.什么时候servlet被销毁。

Servlet的请求方式


  • 1.在浏览器里面直接输入url可以请求servlet
  • 2.使用超链接 <a / href=”/appName/url-pattern”>点我
  • 3.form提交的方式请求servlet Form的action=”/appName/url-pattern”

让form表单和servlet结合起来,收参

Servlet入门案例(三)Servlet的生命周期、api和请求方式、工作原理、注解开发_乱码问题_02

三.Servlet的工作原理

Servlet入门案例(三)Servlet的生命周期、api和请求方式、工作原理、注解开发_注解开发_03

四.Servlet的注解开发

Servlet入门案例(三)Servlet的生命周期、api和请求方式、工作原理、注解开发_servlet工作原理_04

注解开发实例:

package com.macw.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.macw.services.UserServices;
import com.macw.services.impl.UserServiceImpl;

/**
* @author 超伟
* @2019年6月5日 下午9:30:52
*/
@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
public void service(HttpServletRequest req,HttpServletResponse resp)
throws IOException,ServletException{
String name = req.getParameter("username");
String pwd = req.getParameter("password");
System.out.println("username="+name+"\tpwd="+pwd);
UserServices service = new UserServiceImpl();
boolean register = service.Register(name,pwd);
if (register) {
req.getRequestDispatcher("/login.jsp").forward(req, resp);
}else{
req.setAttribute("error", "注册失败,请重新注册!");
req.getRequestDispatcher("/register.jsp").forward(req, resp);
}
}
}

五.乱码问题

Servlet入门案例(三)Servlet的生命周期、api和请求方式、工作原理、注解开发_servlet生命周期_05