【JavaWeb】Servlet 系列——请求和响应过程的角色和协议、模拟 Servlet 本质、开发第一个带有 Servlet 的 Webapp、关于 Java EE 的版本
05 动态 web 应用的一个请求和响应过程的角色和协议
5.1 有哪些角色(在整个 BS 结构的系统当中,有哪些人参与进去了)
浏览器软件的开发团队(浏览器软件太多了:谷歌浏览器、火狐浏览器、IE 浏览器....)
WEB Server 的开发团队(WEB Server 这个软件也是太多了:Tomcat、Jetty、WebLogic、JBOSS、WebSphere....)
DB Server 的开发团队(DB Server 这个软件也是太多了:Oracle、MySQL.....)
webapp 的开发团队(WEB 应用是我们做为 JavaWEB 程序员开发的)
5.2 角色和角色之间需要遵守哪些规范,哪些协议?
webapp 的开发团队 和 WEB Server 的开发团队 之间有一套规范: JavaEE 规范之一 Servlet 规范。
Servlet 规范的作用是什么?
WEB Server 和 webapp 解耦合。
Browser 和 WebServer 之间有一套传输协议:HTTP 协议。(超文本传输协议。)
webapp 开发团队 和 DB Server 的开发团队之间有一套规范:JDBC 规范。
5.3 Servlet 规范是一个什么规范?
遵循 Servlet 规范的 webapp,这个 webapp 就可以放在不同的 WEB 服务器中运行。(因为这个 webapp 是遵循 Servlet 规范的。)
Servlet 规范包括什么呢?
规范了哪些接口
规范了哪些类
规范了一个 web 应用中应该有哪些配置文件
规范了一个 web 应用中配置文件的名字
规范了一个 web 应用中配置文件存放的路径
规范了一个 web 应用中配置文件的内容
规范了一个合法有效的 web 应用它的目录结构应该是怎样的。
.....
06 模拟 Servlet 本质
6.1 充当 SUN 公司的角色,制定 Servlet 规范
javax.servlet.Servlet 接口
配置文件 web.properties
6.3 充当 Webapp 的开发者
BankServlet implements Servlet
UserLoginServlet implements Servlet
第六步:编写一个 Java 程序,这个小 Java 程序也不能随意开发,这个小 java 程序必须实现 Servlet 接口。
这个 Servlet 接口不在 JDK 当中。(因为 Servlet 不是 JavaSE 了。Servlet 属于 JavaEE,是另外的一套类库。)
Servlet 接口(Servlet.class 文件)是 Oracle 提供的。(最原始的是 sun 公司提供的。)
Servlet 接口是 JavaEE 的规范中的一员。
Tomcat 服务器实现了 Servlet 规范,所以 Tomcat 服务器也需要使用 Servlet 接口。Tomcat 服务器中应该有这个接口,Tomcat 服务器的 CATALINA_HOME\lib 目录下有一个 servlet-api.jar,解压这个 servlet-api.jar 之后,你会看到里面有一个 Servlet.class 文件。
重点:从 JakartaEE9 开始,Servlet 接口的全名变了:jakarta.servlet.Servlet
注意:编写这个 Java 小程序的时候,java 源代码你愿意在哪里就在哪里,位置无所谓,你只需要将 java 源代码编译之后的 class 文件放到 classes 目录下即可。
第七步:编译我们编写的 HelloServlet
重点:你怎么能让你的 HelloServlet 编译通过呢?配置环境变量 CLASSPATH
CLASSPATH=.;C:\dev\apache-tomcat-10.0.12\lib\servlet-api.jar
思考问题:以上配置的 CLASSPATH 和 Tomcat 服务器运行有没有关系?
没有任何关系,以上配置这个环境变量只是为了让你的 HelloServlet 能够正常编译生成 class 文件。
第八步:将以上编译之后的 HelloServlet.class 文件拷贝到 WEB-INF\classes 目录下。
第九步:在 web.xml 文件中编写配置信息,让“请求路径”和“Servlet 类名”关联在一起。
这一步用专业术语描述:在 web.xml 文件中注册 Servlet 类。
webapproot|------WEB-INF|------classes(存放字节码)|------lib(第三方 jar 包)|------web.xml(注册 Servlet)|------html|------css|------javascript|------image....
版权声明: 本文为 InfoQ 作者【胖虎不秃头】的原创文章。
原文链接:【http://xie.infoq.cn/article/8089c262b7ab98a9ac74db25e】。文章转载请联系作者。
评论