浅析Servlet原理

首先再次了解接口的定义:

一、接口是什么?

        接口是抽象的抽象(抽象类是具体的抽象)。

        例如制作一款运动手表,接口就是产品需要实现的功能。我这款手表要实现与APP的结合,要实现来电的提醒,要实现闹铃的设置,要实现心率的实时监控,要实现步数的记录......  我不会告诉你任何具体的实现方法,我只会给你一个产品功能的框架,而如果你是我团队的一员,要来制作这款运动手表,那么你就一定要把我定义的内容全部实现。

       即“如果你是......, ,就必须......”

        这就是接口,在程序中,它就相当于是一个类的行为规范。 
————————————————
版权声明:以上为CSDN博主「葡萄籽PP」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
以上文字链接:https://blog.csdn.net/www_chinese_com/article/details/83472366

二、servlet UML关系图,通过图的关系清晰看到他们之间的联系:

从图中,可以看出:

1.抽象类HttpServlet继承抽象类GenericServlet,其有两个比较关键的方法,doGet()和doPost()

2.GenericServlet实现接口Servlet,ServletConfig,Serializable

3.MyServlet(用户自定义Servlet类)继承HttpServlet,重写抽象类HttpServlet的doGet()和doPost()方法

注:任何一个用户自定义Servlet,只需重写抽象类HttpServlet的doPost()和doGet()即可,如上图的MyServlet

三、servlet的执行过程

流程分析:

浏览器向服务器发送Get或Post请求
服务器上的容器接收HTTP请求,从而产生两个对象:HttpServletRequest和HttpServletResponse
加载servlet,实例化Servlet后,执行init()方法
调用Servlet中的Service()方法
service()方法根据请求类型调用doGet()或者doPos()方法
doGet()或者doPost()处理后,由web容器调用返回给浏览器
执行destroy(),销毁线程
————————————————
版权声明:本文为CSDN博主「酸柠檬淋上醋」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hhhhhaa444/article/details/112980618

 6.4、Mapping问题

1. 一个Servlet可以指定一个映射路径

   ```xml

       <servlet-mapping>

           <servlet-name>hello</servlet-name>

           <url-pattern>/hello</url-pattern>

       </servlet-mapping>

   ```

Localhost:8080/s1/hello

2. 一个Servlet可以指定多个映射路径

   ```xml

       <servlet-mapping>

           <servlet-name>hello</servlet-name>

           <url-pattern>/hello</url-pattern>

       </servlet-mapping>

       <servlet-mapping>

           <servlet-name>hello</servlet-name>

           <url-pattern>/hello2</url-pattern>

       </servlet-mapping>

       <servlet-mapping>

           <servlet-name>hello</servlet-name>

           <url-pattern>/hello3</url-pattern>

       </servlet-mapping>

       <servlet-mapping>

           <servlet-name>hello</servlet-name>

           <url-pattern>/hello4</url-pattern>

       </servlet-mapping>

       <servlet-mapping>

           <servlet-name>hello</servlet-name>

           <url-pattern>/hello5</url-pattern>

       </servlet-mapping>

   ```

3. 一个Servlet可以指定通用映射路径

   ```xml

       <servlet-mapping>

           <servlet-name>hello</servlet-name>

           <url-pattern>/hello/*</url-pattern>

       </servlet-mapping>

   ```

重启

4. 默认请求路径

   ```xml

       <!--默认请求路径-->

       <servlet-mapping>

           <servlet-name>hello</servlet-name>

           <url-pattern>/*</url-pattern>

       </servlet-mapping>

   ```

5. 指定一些后缀或者前缀等等….

   ```xml

   <!--可以自定义后缀实现请求映射

       注意点,*前面不能加项目映射的路径

       hello/sajdlkajda.qinjiang

       -->

   <servlet-mapping>

       <servlet-name>hello</servlet-name>

       <url-pattern>*.qinjiang</url-pattern>

   </servlet-mapping>

   ```

测试

6. 优先级问题

   指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求;

   ```xml

   <!--404-->

   <servlet>

       <servlet-name>error</servlet-name>

       <servlet-class>com.kuang.servlet.ErrorServlet</servlet-class>

   </servlet>

   <servlet-mapping>

       <servlet-name>error</servlet-name>

       <url-pattern>/*</url-pattern>

   </servlet-mapping>

   ```

启动

 
————————————————
版权声明:本文为CSDN博主「mumaren4682」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_23889885/article/details/106210916

猜你喜欢

转载自blog.csdn.net/qq_35207086/article/details/114306302