Servlet入门学习笔记(上)

简介: Servlet入门学习笔记(上)

一、前置知识:Maven

🍎初识Maven

Maven,这是我们在编写Servlet代码的时候,要用到的一个常见的工具


Maven, 是Java 世界中的一个非常知名的 “工程管理工具 / 构建工具”。

它的核心功能:


1、管理依赖

2、构建 / 编译

3、打包 

有的人可能会产生疑问:编译,不是编译器的工作吗?

和 Maven 有什么关系呢?

其实 Maven 的 构建 / 编译,也是在调用 JDK 来去进行 编译 和 打包 的工作。

但是呢,如果你光用 JDK ,就好像是:

执行这个操作,你去进行编译。

执行下一个操作,你去进行打包。

........

........


但是,现在 Maven 把 这一系列的操作,都给你串起来了。

用一个成语来形容:一气呵成

因此,Maven 存在的意义:

就是能够直接把这些操作(管理依赖,构建 / 编译,打包)串起来。(一气呵成)


尤其是一些比较大的程序,它里面有很多模块。

你要是每一个模块,都去手动去敲一个命令去编译;或者每一个模块,都去点一下进行打包,这就很麻烦了。


但是,我们如果使用 Maven,就可以一键式的来帮我们把这里的这些操作,全部完成。


对于上面说到的构建/编译,我还知道。可是这个打包和依赖是什么意思

打包:就是把Java代码给构造成jar包,或者是war包。


jar包:其实就是一个特殊的压缩包,类似于 rar。里面就是把 各种 .class 文件,放到一起来。然后,进行压缩得到的包,就是 jar 包。

war包,也是同理。只是与 jar 包,在细节上存在差别。


另外,打包,也是 Maven 调用 JDK 里面的功能来实现的。(强调一下)

 

🌰举个栗子:

要想有老婆,就必须先要有结婚的对象。

要想有结婚的对象,就必须先要有 女朋友。

要想有女朋友,就必须要有自己中意的对象。

其中 结婚的对象,女朋友,中意的对象,都是进行前者操作的必要条件。
两者之间的关系,就被称为 “依赖”。


咱们写代码的时候,也是有很多依赖的。

只是当前阶段,依赖的东西不多。


1、经常会依赖标准库(集合类:Scanner,顺序表,链表等等…)

但是,更严格来说:标准库并不算是依赖。

因为,你只有安装了JDK,这些东西就都会有。【自带的】

但是,要想执行 Java 程序,肯定是需要依赖 JDK 的。

因此,Java 程序 和 JDK 是属于 依赖关系,

但java程序和标准库之间的依赖关系,太勉强了。


2、经常依赖第三方库

第三方库:就是我们写代码的时候,需要引入的一些其它的jar包。

就像前面讲 JDBC编程 的时候,当时就下载了一个 mysql 的驱动包。

当时,我们要想进行 JDBC 编程,这个 驱动包 是必不可少的!

这也就属于依赖。


其实写代码的时候,有时候的依赖也会非常复杂。

你引入了一个第三方库A,而这个 A 又依赖于 库 B,B 由依赖于 C,C又依赖于D,

类似这样的套娃操作,我们要想使用 A,就必要把它前面所依赖的库,全部引入。


如果我们是手动去管理这个依赖,那就会相当的麻烦!!

不光你得研究清楚,每个库都依赖哪些其他库。

而且,还得要研究清楚,这些依赖之间的版本是否匹配的问题。

如果版本不匹配,搭配起来使用,就会有很多莫名其妙的bug存在。


为了解决上述的依赖问题,很多编程员都引入了自己的包管理工具(自动解决依赖)。

Java:Maven,Gradle

Python:pip

JS:npm

各种语言都有着自己的包管理工具。

除了 C++。。。

这就是一个比较悲伤的故事了。

目前为止,C++官方还没有提供这样的一个包管理工具。

第三方的包管理工具是有,但是问题多。

就没有一个像 Maven 这种这么成熟的工具。


————————————————


🍎Maven的使用

对于Maven来说,我们不用下载,因为idea中内置了线程的Maven,我们之间拿来用就好。

下面我们主要介绍在Maven在idea中的使用

1、新建一个Maven项目


be4ee3c6cfc6412d942d9759698d0758.png


2、Maven的使用

🔔首先我们先了解刚刚我们新创建的Maven项目的组成部分


5255e42dc0e24516bc42e23e83ae14ca.png

下面我们以mysql驱动包的引入来说明Maven引入依赖的流程


4839749594394f3d8a35b5e47659b4ae.png

二、Servlet

Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app(网页).


🍑 第一个Servlet程序:hello world

1、创建Maven项目

这个步骤我们在Maven介绍中已经介绍过了,这里 不再赘述。

2、引入依赖

因为Servlet这个API部署JDK内置的,而是第三方(Tomcat)提供的,所以我们要想使用,就需要额外的引入Servlet依赖 。

我们借助Maven来引入Servlet依赖——这里我们所导入的第三方库都是从Maven中央仓库中获取的


efb46230f6d042d7a4a5a7fedfb1d571.png


3、创建目录结构

虽然当下 Maven 帮我们创建了一些目录,但是还不够。

当前这个目录还不足以支撑我们写一个 Servlet 项目,我们这个项目是依赖Tomca服务器,为了符合Tomcat的格式,我们就需要手动创建一些目录和文件。


这些目录和文件的格式是固定的,不要问为啥要创建这样一个目录或者说文件,这是为了符合Tomcat而弄出的硬性要求


e4dc213007884e918cb076c1f8843bb4.png

其中这个web.xml文件里的内容不能为空,需要放下述代码


<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>

对上述文件的一些解释


webapp 目录就是未来部署到 Tomcat 中的一个重要的目录. 当前我们可以往 webapp 中放一些

静态资源, 比如 html , css 等.

在这个目录中还有一个重要的文件 web.xml. Tomcat 找到这个文件才能正确处理 webapp 中的动态资源.

4、编写servlet代码


9e4c76b0029547d3a96547561e78ade5.png

经过上面的分析,我们可以知道,我具体的servlet代码是要在doGet这个方法中写的,下面我们深入这个方法来看一下


5d65fb5842eb4b40ab21933f40631cb4.png


 🤔你以为到了这里就大功告成了吗?


我们要实现的是通过在浏览器输入url(发一个HTTP的get请求),进而通过tomcat服务器来调用我们这个doGet。

当我们成功给tomcat发了一个get请求,tomcat怎么知道要调用具体哪个servlet代码呢?

这里我们希望调用我们HelloServlet类中的doGet方法,那么我们就需要给我们这个类添加一个“标识符”,同时把这个标识符写到在浏览器url中中,这样tomcat就能够识别到这个请求具体是要调用哪个servlet代码了。

14c126824e6f438f880da73b380dd0cc.png

5、打包

刚刚我们编写的servlet代码是不能单独运行的


我们的servlet程序要卸载Tomcat才能正确执行,这里我们的servlet代码就相当于是一节节的车厢,光有车厢不能跑起来,还需要车头——也就是Tomcat的帮助才能跑起来


打包就是把你车厢和车头连接起来,让车头Tomcat拖着我们的车厢Servlet程序来执行


下面我们看一下打包的具体实现过程


69d6bb1693d34ce1af3da6dc23c2c128.png

3、创建目录结构

虽然当下 Maven 帮我们创建了一些目录,但是还不够。

当前这个目录还不足以支撑我们写一个 Servlet 项目,我们这个项目是依赖Tomca服务器,为了符合Tomcat的格式,我们就需要手动创建一些目录和文件。


这些目录和文件的格式是固定的,不要问为啥要创建这样一个目录或者说文件,这是为了符合Tomcat而弄出的硬性要求

e4dc213007884e918cb076c1f8843bb4.png

其中这个web.xml文件里的内容不能为空,需要放下述代码

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>


对上述文件的一些解释


webapp 目录就是未来部署到 Tomcat 中的一个重要的目录. 当前我们可以往 webapp 中放一些

静态资源, 比如 html , css 等.

在这个目录中还有一个重要的文件 web.xml. Tomcat 找到这个文件才能正确处理 webapp 中的动态资源.

相关文章
|
4月前
|
网络协议 前端开发 Java
异步Servlet学习笔记(一)
异步Servlet学习笔记(一)
|
应用服务中间件 Windows
Java-Servlet技术入门笔记-3
五、HttpServletResponse类 1、作用 HttpServletResponse类和HttpServletRequest类一样,每次请求进来,Tomcat服务器都会创建一个Response对象传递给Servlet程序去使用。HttpServletRequest表示请求过来的信息,HttpServletResponse表示所有响应的信息。我们如果需要设置返回给客户端的信息,都可以通过它来设置。
|
XML 存储 前端开发
Java-Servlet技术入门笔记-2
三、ServletContext类 1、什么是ServletContext 代表整个web工程,可以与程序的容器(Tomcat服务器)通信
|
XML 小程序 Java
Java-Servlet技术入门笔记-1
一、Servlet技术 1、什么是Servlet Servlet是JaveEE规范之一,规范就是接口 Servlet是JavaWeb三大组件之一。三大组件分别是:Servlet程序、Filter过滤器、Listener监听器 Servlet是运行在服务器上的一个java小程序,它可以接收客户端发送来的请求,并响应数据给客户端 l
|
XML 存储 前端开发
Servlet技术入门(视频学习笔记)-2
2、ServletContext类的四大作用 获取web.xml中配置的上下文参数context-param 获取当前工程路径,格式:/工程路径 获取工程部署在服务器硬盘上的绝对路径
|
小程序 Java 应用服务中间件
Servlet技术入门(视频学习笔记)-1
一、Servlet技术 1、什么是Servlet Servlet是JaveEE规范之一,规范就是接口 Servlet是JavaWeb三大组件之一。三大组件分别是:Servlet程序、Filter过滤器、Listener监听器 Servlet是运行在服务器上的一个java小程序,它可以接收客户端发送来的请求,并响应数据给客户端
QGS
|
Java
浅谈入门Servlet注解式开发
Servlet3.0版本之后,推出了Servlet基于注解式开发。
QGS
77 0
QGS
|
容器
手拉手入门Servlet转发与重定向
转发与重定向的区别 在Web应用中通过两种方式,可以完成资源的跳转 转发、重定向
QGS
50 0
|
存储 小程序 Java
Web环境搭建以及Servlet入门(下)
Web环境搭建以及Servlet入门
102 0
|
网络协议 前端开发 Oracle
Web环境搭建以及Servlet入门(上)
Web环境搭建以及Servlet入门
104 0