Servlet入门学习笔记(下)

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

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


6、部署

把 war 包拷贝到 Tomcat 的 webapps 目录下

让Tomcat(车头)拖着它执行。

463e2a548bef4126a52df77d3cff06a8.png

7、验证程序

其实就是看看能不能通过tomcat服务器在浏览器来访问我们的servlet代码


b87f1058e1e346d282b36ac866115fd9.png

📝一点补充

与HTML生成页面不同,我们当前的通过Servlet生成的页面是动态的,根据用户输入的不同,是可以得到不同的显示效果的。

此外当我们修改了servlet代码后,我们需要重写进行打包、部署、然后再验证程序。


注意:我们在重新部署时候,最好重启一下tomcat


不过如果每次改了代码,我们都要重新打包生成一个.war文件,然后再把这个新的.war文件放到tomcat目录中的webapps目录下,然后再找到bin目录下的startup.bat文件重新启动tomcat。这样子的确十分的麻烦。


为此我们可以借助第三方工具:smart tomcat来简化我们的打包和部署


smart tomcat这个idea里的一个插件,就 保证我们把tomcat服务器和我们的idea关联起来。保证我们一键式完成打包和部署操作。

但是我们要知道idea 和 tomcat是两个独立的程序!!! tomcat部署idea功能的一部分 ,tomcat只是通过idea插件:smart tomcat,来和我们的idea建立起来一个合作的桥梁。

为什么要提这一点?

这是因为后面开发,主要还是通过 idea 调用 Tomcat的方式来进行。

用的时间长了之后,大家就对于 Tomcat的印象,就开始模糊。

甚至会产生 Tomcat 是 idea 功能的一部分,这样的错觉!

以后大家在工作中,会涉及到几个不同的环境。


b48dd4b263984e61b1ee7b815d8ea78a.png

📝smart tomcat的使用

7ea1539c3f4b4b62ac11624b3e8f195f.png

使用 Smart Tomcat 部署的时候, 我们发现 Tomcat 的 webapps 内部并没有被拷贝一个 war 包,也没有看到解压缩的内容.


Smart Tomcat 相当于是在 Tomcat 启动的时候直接引用了项目中的 webapp 和 target 目录(@WebServlet()中的内容).


🍑ServletAPI详解

1、HttpServlet

相信通过上面我们第一个hello world程序,大家应该已经知道了。我们写的servlet代码总是继承自HttpServlet这个类——我们就是重写其中的doPost、doGet等相关方法来被Tomcat执行调用的


这个过程 和 继承 有关,就会涉及到Java中的一个核心语法 “多态”。


在我们学习Java的时候,多态就是我们一个难啃的骨头。

如果以后在面试的时候,被面试官问到。

让你讲讲对多态的理解,最好方式就是 举例子。

最好举一些有意义的例子,并且最好是关于代码的。


比如:

集合类: List list = new ArrayList<>();

多线程:class Mythred extends Thread{ 重写 run方法 }

像这种平常刷题经常会用到的代码,用来举例是最好的。


另外,Servlet 也是一个很好的例子!

因为我们自己写的代码也是通过继承重写的方式来实现的。

因此在执行的过程,是一定会涉及到 “多态的”!


HttpServlet的核心方法

image.png

我们实际开发的时候主要重写 doXXX 方法, 很少会重写 init / destory / service

🌰这些方法的调用时机, 就称为 "Servlet 生命周期". (也就是描述了一个 Servlet 实例从生到死的过


Servlet生命周期描述的是Servlet创建到销毁的过程:

当一个请求从HTTP服务器转发给Servlet容器时,容器检查对应的Servlet是否创建,没有创建就实例化该Servlet,并调用init()方法,init()方法只调用一次,之后的请求都从第二步开始执行;

请求进入service()方法,根据请求类型转发给对应的方法处理,如doGet, doPost, 等等

容器停止前,调用destroy()方法,进行清理操作,该方法只调用一次,随后JVM回收资源。

0966ea13991349778cd15b7fde0ef73f.png



注意:Httpservlet实例只是再程序启动时,创建一次,而不是每次收到HTTP请求都重新创建实例

其中的doGet和doPost等doxx方法,是根据HTTP的请求的不同来分别执行的。

doGet处理get请求,doPost处理post请求,doPut处理put请求


3dddf737e15a462f974ff970160324a5.png

2、HtttpServletRequest

核心方法

image.png

image.png

代码案例

自动刷新

  1. 实现 Servlet, 设置 header, 实现每隔 1s 自动刷新页面的效果. 页面上要显示当前时间戳

828ab7f99807fd29bedcda1f0f5a8f44.png

2、让页面上能够显示格式化的事前. 例如 2022-01-19 12:00:00

4f8b739f2b4961cbab7108047f7efeeb.png

3、重定向:访问 /redirect 路径后, 自动重定向到 搜狗主页 的代码.

32a30689f71b4828820cc37471c82618.png


光理解了 Servlet API,还不足以支撑我们写出一个功能完整的网站。
还需要理解一个网站的开发过程大概是什么样子的。
理解这里的一些基本的编程思维 和 设计思路。

这就需要通过更多的案例,来进行强化了。


下篇博文就让我们一起事情一个服务器版本的表白墙(注意不只是单单的前端HTML文件哦,还有与之相对应的后端代码——说白了就是一个简单的前后端交互的栗子)

相关文章
|
1月前
|
Java 容器
【学习笔记】Jsp与Servlet技术
【学习笔记】Jsp与Servlet技术
68 0
|
6月前
|
网络协议 前端开发 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小程序,它可以接收客户端发送来的请求,并响应数据给客户端
|
存储 小程序 Java
Web环境搭建以及Servlet入门(下)
Web环境搭建以及Servlet入门
114 0
|
网络协议 前端开发 Oracle
Web环境搭建以及Servlet入门(上)
Web环境搭建以及Servlet入门
112 0
|
API
java202304java学习笔记第六十二天-ssm-获取servlet相关api
java202304java学习笔记第六十二天-ssm-获取servlet相关api
78 0