• 我的第一个Servlet程序,并理解浏览器和代码如何关联在一起


    目录

    Servlet

    第一个Servlet程序

    1.创建项目

    maven是什么

    如何创建maven项目

    2.引入Servlet依赖

    找到库中maven代码

    3.创建目录结构

    4.编写代码

    理解注解@Webserlet

    5.打包程序

    生成war包

    6.部署程序

    7.验证程序

    二.理解浏览器发的请求是怎么和自己写的代码建立联系的

    1.匹配Context path的第一级路径

    2.匹配Servlet Path第二级路径

    3.匹配http方法


    1.静态页面 vs动态页面

    静态页面 直接拷贝到webapps就行

    动态页面:基于servlet api进行代码实现了

    Servlet

    Servlet 是一组 Tomcat 提供的 API, 让程序猿自己写的代码能很好的和 Tomcat 配合起来, 从
    而更简单的实现一个 web app.
     

    第一个Servlet程序

    写一个Servlet的 hello world(和jdbc差不多,都是固定的套路)

    7个步骤:

    1.创建项目

    需要创建的是一个meven项目

    maven是什么

     maven实际上就是一个构造工具

    包括不限于,编译,打包,部署功能....

    实际上程序都有很多模块,模块之前都有相互依赖关系,你想编译运行a,就得先b,想b就c,一个一个写就比较麻烦

    构建工具就是解决这个问题,使我们在开发比较复杂的项目的时候,也是可以比较方便进行打包

    和编译工作的

    如何创建maven项目

    咱们使用mavem主要就是借助 maven 进行编译,打包,管理依赖

    2.引入Servlet依赖

    Servlet 不是 java 标准库自带的,要想使用, 就需要额外的下载安装,并引入到项目中,maven的一个核心功能,就是能够自动的管理依赖,就会把咱们使用的库里依赖的东西,自动从中央仓库里下载下来

    找到库中maven代码

     中央仓库地址https://mvnrepository.com​​​​​​​​​​​

     搜索Servlet并选择maven

    复制下列代码引入到idea中,并加入depencies

    复制完成后,代码爆红,这时候要点击maven自动下载依赖

    (maven的一个核心功能,就是能够自动的管理依赖)

     

    3.创建目录结构

    虽然maven已经帮我们创建出一些目录了,但是还不够,咱们需要搞的是一个符合tomcat要求的目录

     注意这里的位置,名字层次都必须严格一致,在web.xml写如下代码

    然后 web.xml上写点东西(直接复制粘贴这段代码)

    1. web-app PUBLIC
    2. "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    3. "http://java.sun.com/dtd/web-app_2_3.dtd" >
    4. <web-app>
    5. <display-name>Archetype Created Web Applicationdisplay-name>
    6. web-app>

    4.编写代码

    1. @WebServlet("/hello")
    2. public class HelloServlet extends HttpServlet {
    3. @Override
    4. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    5. // super.doGet(req, resp);
    6. System.out.println("hello");
    7. resp.getWriter().write("hello");
    8. }
    9. }

    doget表示Tomcat在收到某些get请求时,调用doget方法(根据请求计算响应),俩个参数分别是请求和响应,响应是输出型参数,再进一步tomcat就把resp通过doget生成的对象,转换成一个http请求报文(把响应结果返回给客户端)

    理解注解@Webserlet

     

    5.打包程序

    把写好的代码通过Servlet打包 + 部署,在Tomcat上运行(Servlet比作火车车节,箱,Tomcat就是火车头带动跑,需要格式一致)

    生成war包

    在pom.xml中输入下列代码

    1. <packaging>warpackaging>
    2. <build>
    3. <finalName>servletHelloWorldfinalName>
    4. <plugins>
    5. <plugin>
    6. <groupId>org.apache.maven.pluginsgroupId>
    7. <artifactId>maven-war-pluginartifactId>
    8. <version>3.3.1version>
    9. plugin>
    10. plugins>
    11. build>

    6.部署程序

    把war包 拷贝到tomcat的webapp中

     红色就是拷贝过来的程序,在经过tmocat部署生成servletHelloWorld文件

    7.验证程序

    通过浏览器构造一个HTTP请求来验证

     

    二.理解浏览器发的请求是怎么和自己写的代码建立联系的

    1.匹配Context path的第一级路径

     

    获取到 url 中的第一级路径,servletHelloWorld,也就是我们new project内容,确定一个webapp

    2.匹配Servlet Path第二级路径

    TomCat找到servletHelloWorld 目录之后,就会加载里面的类,尤其是重点去识别 @WebServlet注解修饰的类

    就会取出 url的第二级路径 /hello 这个也叫做Servlet path

    然后就在@WebServlet 注解中,找到名字为/hello的类,找到类之后,创建实例(只会创造一次,如果之前创建过了,就会复用上次的实例

    3.匹配http方法

    再解析出Http请求方法get,取出get之后,就可以根据http方法来调用对应的servlet中的方法

    get请求使用doget方法

    post请求使用 dopost方法

    put请求调用doput方法

    delete使用dodelete方法

    ......

    同时Tomcat还会构造出HttpServletRequest对象和HttpServletResponse对象

  • 相关阅读:
    Gitee 图床被屏蔽后,我搭建了一个文件系统并封装成轮子开源
    U-Net: Convolutional Networks for Biomedical Image Segmentation
    特殊SQL的执行——模糊查询、批量删除等
    Java实现堆算法
    查看当前数据库存储引擎
    三种win10任务栏频繁卡死的解决方法
    优化故事: BLOOM 模型推理
    有效的网络带宽监控策略
    [Java]_[中级]_[使用okhttp3和HttpClient代理访问外部网络]
    ROS-TCP-Connector and ROS-TCP-Endpoint
  • 原文地址:https://blog.csdn.net/panpanaa/article/details/128065292