一.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对象。那么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的注解开发
注解开发实例:
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 * @博客:https://blog.csdn.net/MacWx */ @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); } } }
五.乱码问题