目录从本文开始,将细致的理解和熟练掌握JavaWeb相关知识。谈到Javaweb,总会提到servlet,本文将利用一个案例告诉大家为servlet为何是JavaWeb不可或缺的一部分。
- 一 servlet在JavaWeb的作用
- 二 模拟servlet
- 三 总结
打开电脑的浏览器,我们输入一个网址 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
二 模拟servlet那么浏览器有火狐,Edge,谷歌…这些浏览器连接Tomcat总得按照一定的规范,产生了HTTP规范。
我们的webapp应用不仅仅可以使用Tomcat服务器,WEBSever这个软件有很多:Tomcat,Jetty,JBOSS…,为了能适应所有WEB Sever软件,WEBSever和Webapp也都得按照Servlet规范。
数据库有mysql,oracle…,我们程序员写的webapp应用就得按照JDBC标准,才可以随意连接任何一家数据库
现在我们知道了要访问一个网址,涉及到的角色有上述四个开发团队,接下来我们模拟一下。看看这是个团队具体在干什么
预览:一共我们需要创建这5个文件才可以完成模拟servlet
现在开始
-
充当SUN公司的角色,制定servlet规范
- Servlet接口
-
充当Webapp开发者
- App1Servlet implements Servlet
- App2Servlet implements Servlet
![在这里插入图片描述](http://www.kaotop.com/file/tupian/20220429/d56fa8fc5cb24a1a875f0abb4edd0f5e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAV3lhdHRfemhhaQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
-
充当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才可以解耦合。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)