1、Servlet的作用

用于接收请求,处理逻辑,响应结果
一次创建,多次执行,一次销毁

2、Servlet的编写

servlet编写:

  1. public void init(ServletConfig servletConfig) throws ServletException {
  2. //servlet创建时执行该方法
  3. System.out.println("MyServlet创建了!!!");
  4. }
  5. public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
  6. //servlet每访问一次,就执行一次该方法,
  7. //该方法可接收所有的访问方式
  8. System.out.println("MyServlet被访问了!!!");
  9. }
  10. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  11. //当servlet被访问时的方法为post方式时执行该方法
  12. System.out.println("doPost执行了!!!!");
  13. }
  14. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  15. //当servlet被访问时的方法为get方式时执行该方法
  16. System.out.println("doGet执行了!!!!");
  17. }
  18. public void destroy() {
  19. //当servlet被销毁前执行该方法
  20. System.out.println("MyServlet销毁了..");
  21. }

web点xml编写:

  1. <!--配置servlet-->
  2. <servlet>
  3. <servlet-name>servlet实现类名</servlet-name>
  4. <servlet-class>servlet实现类名的项目路径</servlet-class>
  5. <init-param>
  6. <param-name>encode</param-name>
  7. <param-value>utf-8</param-value>
  8. </init-param>
  9. </servlet>
  10. <!--配置servlet的映射路径-->
  11. <servlet-mapping>
  12. <servlet-name>servlet实现类名</servlet-name>
  13. <url-pattern>/请求资源名称(servlet实现类名)</url-pattern>
  14. </servlet-mapping>

servlet的生命周期:

  1. 1init
  2. servlet对象创建时,调用此方法
  3. 2service
  4. 用户访问servlet时,调用此方法, 每访问一次,执行一次
  5. 3destroy
  6. servlet对象销毁前,调用此方法
  7. *:Servlet被销毁时执行。服务器关闭时,Servlet被销毁
  8. *:只有服务器正常关闭时,才会执行destroy方法。
  9. *:destroy方法在Servlet被销毁之前执行,一般用于释放资源

ServletConfig对象:

  1. Tomcatservlet对象创建时,执行init()方法,并创建一个ServletConfig配置对象
  2. 作用:
  3. 读取webxml配置文件Servlet中<init+param>信息,实现参数和代码的解耦
  4. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  5. public class ServletConfigServlet implements Servlet {
  6. // 定义成员变量
  7. private ServletConfig servletConfig;
  8. @Override
  9. public void init(ServletConfig servletConfig) throws ServletException {
  10. // 将init中的servletConfig对象,赋值给成员变量
  11. this.servletConfig = servletConfig;
  12. }
  13. @Override
  14. public ServletConfig getServletConfig() {
  15. // 获取全局的ServletConfig对象
  16. return servletConfig;
  17. }
  18. @Override
  19. public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
  20. // 获取web.xml文件中配置的编码
  21. String encode = getServletConfig().getInitParameter("encode");
  22. System.out.println(encode);
  23. }
  24. @Override
  25. public String getServletInfo() {
  26. return null;
  27. }
  28. @Override
  29. public void destroy() {
  30. }
  31. }

url的映射模式:

  1. 精确匹配(掌握)
  2. <url-pattern>/servletDemo</url-pattern>
  3. 目录匹配
  4. <url-pattern>/aa/*</url-pattern>
  5. 后缀匹配
  6. <url-pattern>*.xxx</url-pattern>

Servlet3.0的步骤:

  1. 1. 创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
  2. 2. 定义一个类,实现Servlet接口
  3. 3. 复写方法
  4. 4. 在类上使用@WebServlet注解,进行配置
  5. * @WebServlet("资源路径")
  6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  7. public @interface WebServlet {
  8. String name() default "";//相当于<Servlet-name>
  9. String[] value() default {};//代表urlPatterns()属性配置
  10. String[] urlPatterns() default {};//相当于<url-pattern>
  11. int loadOnStartup() default -1;//相当于<load-on-startup>
  12. }

@WebServlet注解和web.xml文件不能同时使用,会导致服务器启动失败!