21 days 掌握JavaWeb- 入门到源码(口语化解读servlet的必要性)1

从本文开始,将细致的理解和熟练掌握JavaWeb相关知识。谈到Javaweb,总会提到servlet,本文将利用一个案例告诉大家为servlet为何是JavaWeb不可或缺的一部分。

一 servlet在JavaWeb的作用

打开电脑的浏览器,我们输入一个网址 http:127.0.0.1:8080/oa/index.xml,想要访问这个网页的内容。
先从上帝视角看一下整个网络世界背后是怎么处理的这个请求
在这里插入图片描述
一个电脑请求访问oa(办公系统)的index.xml界面。

  • 127.0.0.1:是一个本机的 IP 地址
  • 8080端口:要求使用Tomcat程序
  • /oa/index.xml:Tomcat根目录下有个oa目录,oa目录有个index.xml文件

oa目录是我们手写的东西,行业内把我们手写的统称为webapp
oa属于webapp,crm属于webapp,创建的其他应用也属于webapp

那么浏览器有火狐,Edge,谷歌…这些浏览器连接Tomcat总得按照一定的规范,产生了HTTP规范。


我们的webapp应用不仅仅可以使用Tomcat服务器,WEBSever这个软件有很多:Tomcat,Jetty,JBOSS…,为了能适应所有WEB Sever软件,WEBSever和Webapp也都得按照Servlet规范。


数据库有mysql,oracle…,我们程序员写的webapp应用就得按照JDBC标准,才可以随意连接任何一家数据库

在这里插入图片描述

二 模拟servlet

现在我们知道了要访问一个网址,涉及到的角色有上述四个开发团队,接下来我们模拟一下。看看这是个团队具体在干什么

预览:一共我们需要创建这5个文件才可以完成模拟servlet
在这里插入图片描述
现在开始

  1. 充当SUN公司的角色,制定servlet规范
    - Servlet接口
    在这里插入图片描述

  2. 充当Webapp开发者
    - App1Servlet implements Servlet
    - App2Servlet implements Servlet
    在这里插入图片描述

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/d56fa8fc5cb24a1a875f0abb4edd0f5e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAV3lhdHRfemhhaQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
    
  3. 充当Tomcat开发者
    在这里插入图片描述
    编译运行一下我们自己写的的Tomcat.java,看看还没写啥关键代码时候有没有bug,边写代码边调试嘛
    在这里插入图片描述
    ok,我们的Tomcat.java可以编译成功并且运行成功。
    那我们继续,看看核心代码怎么写

到这一步,我们想要的结果是
输入/aaa,就可以匹配到http:127.0.0.1:8080/App1Servlet.java,然后调用App1Servlet.java程序,最后输出重写的方法service();
输入/bbb,就可以匹配到http:127.0.0.1:8080/App2Servlet.java,然后调用App2Servlet.java程序,最后输出重写的方法service();

/aaa和http:127.0.0.1:8080/App1Servlet.java如何匹配呢?-----我们程序员需要借助配置文件手动定义。创建一个文件命名为web.properties
在这里插入图片描述
本质上这是利用的HashMap的数据结构进行存储,所以我们才可以设置配置文件的匹配信息,并且利用代码读取。
在这里插入图片描述
这里稍微解释一下为何使用代理和反射。
正常情况下,我们需要调用App1Servlet和App2Servlet这两个类,然后调用其中重写的service()方法。但是现在我们还不知道有哪些类需要调用,我们唯一知道的信息就是有一个Servlet接口。
借助代理,就可以在不知道实现类的情况下可以神奇的灵活的调用该类的方法。

具体的原理参考我的系列文章:
Java深渊处的秘密(第二遍总结:通俗解释反射原理).
Spring入门理解(八)静态代理模式和动态代理模式详解.
在这里插入图片描述
编译运行一下
输入/aaa,看看结果
输入/bbb,看看结果
在这里插入图片描述

三 总结

回顾这5个文件

Servlet.java 是SUN公司指定的规范,规范了一些接口。

App1Servlet.java 是我们程序员调用接口写的具体功能

App2Servlet.java 也是我们程序员调用接口写的具体的功能

web.properties 是我们程序员写的路径和网址的匹配关系

Tomcat.java是SUN公司提供的服务器,在里面会加载我们写的配置文件的信息。需要强调的是:配置文件的名字是固定的,只能叫做web.properties,配置文件的位置(即配置文件的路径)也是固定的,Tomcat根据固定的路径,找到固定的名字,直接读取里面的信息。我们程序员仅仅需要把信息写进去就可以了。其他的遵守规范。

Servlet规范中规定了

  • 一个合格的webapp应该是怎样一个目录结构
  • 一个合格的webapp应该是怎样一个配置文件
  • 一个合格的webapp配置文件路径放在哪里
  • 一个合格的webapp中java程序放在哪里

Tomcat服务器需要遵守Servlet规范,webapp也要遵守Servlet规范,这样的Tomcat服务器和webapp才可以解耦合。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值