• Servlet是什么?怎么使用?


    目录

     前言必读

    一、概念

    1.什么是servlet?

    2.servlet体系结构

    3.servlet生命周期

    二、完整访问过程 

    1.http(敲门和递名片)

    敲门

    递名片 

    2.servlet(管家)

    情景理解:

    servlet的5个儿子(方法)

    三、升级版管家httpservlet(后续开发都用这个)

    四、怎么调用自己写的Servlet类?

    第一种注解的方式调用

     第二种xml配置的的方式调用


     前言必读

    读者手册(必读)_云边的快乐猫的博客-CSDN博客

    服务器里面资源分为动态资源和静态资源

    动态资源:Servlet、Jsp

    静态资源:HTML、CSS、JS 

    一、概念

    1.什么是servlet?

    本质上是一个接口,提供了规范。是java提供的一门动态的web资源开发技术。

    2.servlet体系结构

    Servlet(体系根接口)👉GenericServlet(抽象实现类)👉HttpServlet(对Http协议封装的实现类,后期开发基本用这个)

    3.servlet生命周期

    servlet运行在Servlet容器(web服务器)中, 生命周期由容器来管理,分为四个阶段

    1.加载实例化:默认情况下,当Servlet第一次被访问时,由容器创建servlet对象

    2.初始化:当Servlet实例化后,容器将调用servlet的init方法去初始化这个对象,完成一些加载配置文件、创建连接等初始化的工作,该方法只调用一次。

    3. 请求处理:每次请求处理时,servlet将调用service方法去处理这些请求

    4.服务终止:当需要释放内存或者容器关闭时,容器就会调用destroy方法完成资源的释放。然后该实例就会被java的垃圾回收器回收。

    二、完整访问过程 

    1.http(敲门和递名片)

    敲门

    浏览器去访问网页就是敲服务器家的门,有两种常见的敲门方法

    (1)get方式:超链接访问和form提交,不指定method都默认为get方式

    (2)post方式:form提交,指定method=post

    两种请求方式的区别:

    get向服务器获取信息post是提交信息(更安全)

    get请求通过URL提交数据,数据可以在URL看到post请求放在请求体中

    get请求提交的数据受限制(1kb左右)post请求不受限制

    递名片 

    那敲门请求的时候,要提交名片,让服务器认识你是谁啊。这里就有三种名片

    (1)请求行:包含http请求方式、请求资源名称、请求版本

    (2)请求头:包含主机请求地址、客户端环境信息、键值对形式传递

    (3)请求体:以键值对的post形式传递参数给服务器,服务器收到参数后再进行解析

    2.servlet(管家)

    作用 接收用户发来的请求---->调用其他程序来处理------->将处理结果返回到服务器里面

    情景理解:

    服务器收到请求名片后。服务器的管家是servlet。servlet管家给用户开门的。(接收用户发来的请求)

    servlet管家问你要干什么啊?

    用户:要来这里参观参观

    好嘞。于是管家先让儿子init(初始化的方法)去把房子打扫一遍

    然后管家又对用户说,你来这里想要吃什么或者干什么,直接叫我儿子service(servletRequest---请求,servletResponse---响应(文章超链接))去处理就好了

    等到用户走后,管家又让儿子destroy(关闭的方法)去关门

    servlet的5个儿子(方法)

    1.init(初始化服务器配置)

    2.getServletConfig(获取servlet本身信息的,了解就好)

    3.service(逻辑操作)

    4.getServletInfo(返回一个字符串信息,了解就好)

    5.destroy(释放资源)

    总结:servlet全程参与你的访问请求需求过程,但是有什么事情它直接叫儿子(方法)去干就好了。                                                                              

    三、升级版管家httpservlet(后续开发都用这个)

    解释:就是封装http协议并实现了servlet这个接口,根据接收过来的请求类型判断是get还是post,然后去使用对应的get或者post方法去完成对方的请求。后面使用这个servlet管家主要就是使用继承这个httpservlet,去重写实现他的两个儿子方法,分别是dogetdopost

    至于原来的servlet五个儿子方法都已经被封装到里面了,我们看不见而已,但是还是存在的

    四、怎么调用自己写的Servlet类?

    注意点:这两个调用方式只能用一个,不能同时用,要不然会报错的。强烈推荐注解!!!,方便又简洁 

    ps:如果输入时候没有HttpServlet包,可以这个导入jar包

    1. <dependency>
    2. <groupId>javax.servletgroupId>
    3. <artifactId>servlet-apiartifactId>
    4. <version>2.5version>
    5. <scope>providedscope>
    6. dependency>

    被测试的类

    1. package kk;
    2. import javax.servlet.ServletException;
    3. import javax.servlet.annotation.WebServlet;
    4. import javax.servlet.http.HttpServlet;
    5. import javax.servlet.http.HttpServletRequest;
    6. import javax.servlet.http.HttpServletResponse;
    7. import java.io.IOException;
    8. //@WebServlet("/one")//利用注解的方式调用
    9. public class HttpServletTest extends HttpServlet {
    10. @Override
    11. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    12. System.out.println("doGet");
    13. }
    14. @Override
    15. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    16. System.out.println("doPost");
    17. }
    18. }

    第一种注解的方式调用

    在调用该类的开头写上注解@WebServlet("/任意自定义名字")

    格式为:

    @WebServlet("/任意自定义名字")

     类

      如图所示:

     浏览器访问方式:https:localhost:8080/maven_java_war/one

     第二种xml配置的的方式调用

    在webapp-->WEB-INF---->web.xm这里面配置

    1. <servlet>
    2. <servlet-name>HttpServletTestservlet-name>
    3. <servlet-class>kk.HttpServletTestservlet-class>
    4. servlet>
    5. <servlet-mapping>
    6. <servlet-name>HttpServletTestservlet-name>
    7. <url-pattern>/oneurl-pattern>
    8. servlet-mapping>

    格式为:

    
        葫芦娃
        完整的包名,可以去那个类里面复制过来
    
    ​​​​​​​
    
        葫芦娃
        /映射的自定义名字
    

    如图所示:

     浏览器访问方式:https:localhost:8080/maven_java_war/one

  • 相关阅读:
    【无标题】
    【无标题】
    给出三个整数,判断大小
    每日一题 2651. 计算列车到站时间
    java计算机毕业设计网上图书销售系统源代码+数据库+系统+lw文档
    java word,excel,ppt转pdf
    【BUG】ServerHttpResponseDecorator失效
    Codeforces Round #909 (Div. 3)
    JVM常用工具
    luogu P1873 [COCI 2011/2012 #5] EKO / 砍树
  • 原文地址:https://blog.csdn.net/m0_52861000/article/details/127953024