• Servlet概述


    1.什么是Servlet

      servlet是Java Web的三大组件之一,它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要:

      *接收请求数据;

      *处理请求数据;

      *完成响应。

      例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,每个Servlet必须实现javax.servlet.Servlet接口。

    2.实现Servlet的方式(由我们自己来写!)

      实现Servlet有三种方式:

        *实现javax.servlet.Servlet接口;

        *继承javax.servlet.GenericServlet类;

        *继承javax.servlet.http.HttpServlet类;

      通常我们会继承HttpServlet类来完成我们的Servlet,但学习Servlet还要从javax.servlet.Servlet接口开始学习。

    Servlet.java---五个方法

     1 public interface Servlet{
     2  public void init(ServletConfig config)throws ServletException;
     3 
     4  public ServletConfig getServletConfig();
     5 
     6  public void service(ServletRequest req,ServletResponse res)
     7      throws ServletException,IOException;
     8 
     9  public String getServletInfo();
    10 
    11  public void destroy();  
    12 }

     批注:Servlet中的方法大多数不由我们来调用,而是由Tomcat来调用。并且Servlet的对象也不由我们来创建,由Tomcat来创建!

    自己写的Servlet源码

     1 package one.servlet;
     2 
     3 import java.io.IOException;
     4 
     5 import javax.servlet.Servlet;
     6 import javax.servlet.ServletConfig;
     7 import javax.servlet.ServletException;
     8 import javax.servlet.ServletRequest;
     9 import javax.servlet.ServletResponse;
    10 
    11 public class AServlet implements Servlet {
    12 
    13     /*
    14      * 它是生命周期方法--由Tomcat来调用
    15      * 它会在Servlet被销毁之前调用,并且它只会被调用一次!
    16      * */
    17     @Override
    18     public void destroy() {
    19         System.out.println("destory()...");
    20     }
    21 
    22     /*
    23      * 可以获取Servlet的配置信息
    24      * */
    25     @Override
    26     public ServletConfig getServletConfig() {
    27         System.out.println("getServletConfig()...");
    28         return null;
    29     }
    30 
    31     /*获取Servlet的信息*/
    32     @Override
    33     public String getServletInfo() {
    34         System.out.println("getServletInfo()...");
    35         return null;
    36     }
    37     /*
    38      * 它是生命周期方法--由Tomcat来调用
    39      * 它会在Servlet对象创建之后马上执行,并只执行一次!
    40      * 
    41      * 
    42      * */
    43     @Override
    44     public void init(ServletConfig servletConfig) throws ServletException {
    45         //第一个被Tomcat调用,然后会给它传参数ServletConfig
    46         System.out.println("init()...");
    47     }
    48 
    49     /*
    50      * 它是生命周期方法--由Tomcat来调用
    51      * 它会被调用多次!!
    52      * 每次处理请求都是在调用这个方法!
    53      * */
    54     @Override
    55     public void service(ServletRequest servletRequest, ServletResponse servletResponse)
    56             throws ServletException, IOException {
    57         System.out.println("service()...");
    58     }
    59 
    60 }

    浏览器访问Servlet:

    1.给Servlet指定一个Servlet路径!(让Servlet与一个路径绑定在一起)

     2.浏览器访问Servlet路径

        给Servlet配置Servlet路径!

        这需要在web.xml中对Servlet进行配置

    web.xml
    
    <servlet>
     <servlet-name>XXX</servlet-name>//随便写
     <servlet-class>com.one.Aservlet</servlet-class>//Servlet的全路径
    </servlet>
    
    
    <servlet-mapping>//mapping的英语意思:映射
     <servlet-name>XXX</servlet-name>//跟上面的名字一样
     <url-pattern>/xx.servlet</url-pattern>//必须以 “/” 开头,后面可以随便写,但是可以没有扩展名,或直接写  “/AServlet”
    </servlet-mapping>

    原理图:

    配置Servlet的路径

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     3         xmlns="http://java.sun.com/xml/ns/javaee" 
     4         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
     5         id="WebApp_ID" version="3.0">
     6       
     7       <servlet>
     8           <servlet-name>xxx</servlet-name>
     9           <servlet-class>one.servlet.AServlet</servlet-class>
    10       </servlet>
    11       
    12       <servlet-mapping>
    13           <servlet-name>xxx</servlet-name>
    14           <url-pattern>/AServlet</url-pattern><!-- url的模式,即以什么样来访问,最终浏览器访问 -->
    15       </servlet-mapping>
    16   
    17 </web-app>

    http://localhost:8080/XJS_Servlet1/Aservlet请求两次后控制台的结果:

     

    说明init()方法只在第一次请求时调用,也就是服务器给创建了它的对象

     当关闭服务器时,会执行destroy()方法(通俗地讲,就是servlet在第一次请求时生,在服务器关闭时死),且该servlet是单例的,只有一个对象。

     总结:

      生命周期方法:

        *void init(ServletConfig):出生之后(1次);

        *void service(ServletRequest request,ServletResponse response):每次处理请求时都会

        被调用

        *void destroy():临死之前(1次);

       特性:

        *单例,一个类只有一个对象;当然可能存在多个Servlet类!

        *线程不安全的,所以它的效率是高的!

      Servlet类由我们来写,但对象由服务器来创建,并且由服务器来调用相应的方法。

     

  • 相关阅读:
    在物理机上安装Ubuntu指南
    C语言程序设计-现代方法(笔记3)
    C语言程序设计-现代方法(笔记2)
    C语言程序设计-现代方法(笔记1)
    颠覆完美软件:软件测试必须知道的几件事(总结)
    颠覆完美软件:软件测试必须知道的几件事(读书笔记6)
    颠覆完美软件:软件测试必须知道的几件事(读书笔记5)
    颠覆完美软件:软件测试必须知道的几件事(读书笔记4)
    pycharm 引入虚环境
    性能测试之tsung
  • 原文地址:https://www.cnblogs.com/xjs1874704478/p/10757844.html
Copyright © 2020-2023  润新知