为了账号安全,请及时绑定邮箱和手机立即绑定

如果让我回到大学,我会这样学习Servlet

标签:
Java

前言

工作已经有一段时间了,如果让我重新学Servlet,我会怎么学呢?下面抛出两个常见的问题,我分开来解答

  • 2020年了,还需要学Servlet吗?

  • Servlet的学习路线(学习重点)

https://img1.sycdn.imooc.com/5e75b7d500016e1802550255.jpg

一、2020年了,还需要学Servlet吗?

老实说,Servlet放在现在肯定算是一个古老的技术了。现在你去任何的一家公司,应该都不是直接用Servlet来写项目的。现在的项目一般来说还是以SpringMVC-Spring-Mybatis / SpringBoot居多。面试也几乎不会问Servlet的知识(无论是校招还是社招)

既然Servlet已经是一个这么古老的技术了,那我还需要学吗?这是一个非常常见的问题。我初学的时候也非常喜欢搜相关的问题:“SWING/AWT这种技术还需要学吗”。

无论是我在知乎回答Java学习路线,还是读者问到的这个问题,我都会给予肯定的回答:“需要学Servlet,不要跳过Servlet去学框架

我因为好好学了Servlet,在学Struts2(没错,我还学过Struts2)和SpringMVC的都非常容易上手,几天就基本会用了。

如果了解Struts2或SpringMVC的同学就会知道,其实他俩的底层都离不开Servlet。Struts2的核心用的是Filter(过滤器),而SpringMVC的核心用的就是Servlet。

学过Servlet好处是什么:

  • 打下坚实的基础,学习框架就得心应手了。

https://img4.sycdn.imooc.com/5e75b7d50001f69302550255.jpg

二、Servlet的学习路径

下面我来讲讲Servlet的重点有哪些,其实就是学习Servlet的路线。还是要重复一句话:“在学习一项技术之前,首先要知道为什么要学习它

https://img3.sycdn.imooc.com/5e75b7d50001fde202500250.jpg

2.1 Tomcat

学Servlet之前,首先我们要学学Tomcat。Tomcat是一个Web服务器(同时也是Servlet容器),通过它我们可以很方便地接收和返回到请求(如果不用Tomcat,那我们需要自己写Socket来接收和返回请求)。

Tomcat其实我们并不需要学太多的知识,只要学会安装和启动以及了解一下各个目录的含义就差不多了。

https://img2.sycdn.imooc.com/5e75b7d50001f7e110640600.jpg

Tomcat各个目录的含义:

https://img1.sycdn.imooc.com/5e75b7d600016f1f07280388.jpghttps://img1.sycdn.imooc.com/5e75b7d6000192ca02000184.jpg

2.2 Servlet版“Hello world“

首先,我们需要认清一个JavaWeb的标准目录结构:

https://img1.sycdn.imooc.com/5e75b7d60001080008000543.jpg

随后,我们编写一个最简单的Servlet程序和配置web.xml来完成一次交互。

https://img1.sycdn.imooc.com/5e75b7d6000175ac08000364.jpghttps://img2.sycdn.imooc.com/5e75b7d600011aa605760172.jpg

在写Servlet的时候,我们顺便了解一下Servlet的继承体系和生命周期

https://img1.sycdn.imooc.com/5e75b7d60001b65e02650246.jpg

2.3 HTTP简单学一下

HTTP协议是客户端和服务器交互的一种通迅的格式

例如:在浏览器点击一个链接,浏览器就为我打开这个链接的网页。

原理:当在浏览器中点击这个链接的时候,浏览器会向服务器发送一段文本告诉服务器请求打开的是哪一个网页。服务器收到请求后,就返回一段文本给浏览器,浏览器会将该文本解析,然后显示出来。这段「文本」就是遵循HTTP协议规范的。

在初学的时候,我们只要记住一些常用的头信息(请求头和响应头)就足够了。

https://img1.sycdn.imooc.com/5e75b7e900012c2f02500250.jpg

2.4 ServletConfig和ServerContext对象

ServletConfig:通过此对象可以读取web.xml中配置的初始化参数,不写硬编码,将配置写在配置文件中。

ServletContext:这个对象是在Tomcat启动的时候就会创建,代表着当前整个应用。我们一般用来获取整个应用的配置信息(ServletConfig是单个的,而ServletContext是整个应用的),还可以用这个对象来读取资源文件。

这几个最基本的Servlet对象学完了以后,我们就可以关注一下Servlet的一些小细节了,比如说:

  • Servlet是单例的

  • 配置通配符的时候可以用各种的通配符*.和一个Servlet可以被多个配置映射

  • 访问任何资源其实都是在访问Servlet(即便是访问图片资源,Tomcat都有默认Servlet处理)

  • ….

https://img1.sycdn.imooc.com/5e75b7e90001f4e302550255.jpg

2.5request和response对象

Servlet的重点需要学习request和response对象。当我们学完HTTP的请求头和响应头以后,再看到这两个对象。我们就应该知道:request其实就是封装了HTTP的请求头,而response就是封装了HTTP响应头。

这两个对象是Servlet中最重要的,因为我们跟外接的交互都是通过request和response对象来进行的。

通过response对象,我们可以尝试写一些Demo,比如:

  • 给浏览器输出一些简单的内容

  • 实现文件下载的功能

  • 实现页面自动刷新的功能

  • 实现对数据的压缩

  • 生成验证码图片

  • 重定向跳转

  • …..

通过request对象,我们也可以尝试做些Demo,比如:

  • 得到浏览器的传递过来的各类信息(请求参数、请求头等)

  • 实现防盗链

  • 通过request对象来转发

  • 解决请求参数中文乱码的问题

  • ….

一句话总结:request对象主要用于接收请求各种的信息,response对象主要用户返回给请求各种的信息。围绕着请求、响应我们分别有request和response对象供我们操作。

https://img3.sycdn.imooc.com/5e75b7e90001a75102000200.jpg

2.6 Cookie和session会话机制

前面我们已经学到了Servlet的几个对象了,分别是Config(获取配置信息)、Context(代表整个Web应用)、Request(HTTP请求)、Response(HTTP响应)。

每个网站都会有登录注册的功能,那它是怎么实现的呢?上这上面的几个对象,好像都不是实现登录注册的。于是我们该来学学会话机制 Cookie和Session啦。

https://img1.sycdn.imooc.com/5e75b7e90001b3d302550255.jpg

首先我们了解一下Cookie是存储在哪的,以及Cookie的基本API使用,包括:

  • Cookie的有效期如何设置

  • Cookie如何保存中文

  • Cookie的不可跨域性是什么意思

  • 使用Cookie来显示用户上次访问的时间

  • 使用Cookie来显示上次浏览过的商品

Cookie的API使用基本会了以后,我们就可以学习Session了,学Session的时候我们需要解决:

  • 有了Cookie,为什么需要Session(因为他俩都是会话机制)

  • Session的API基本使用

  • Session的生命周期和有效期

  • Session的实现原理,如果禁用Cookie,还能使用Session吗

  • 尝试完成Session的几个小Demo

  • 使用Session完成购物的功能

  • 使用Session完成简单的登录注册

  • 使用Session完成防止表单重复提交

  • 使用Session完成一次性校验码

完了以后,我们可以对比一下Cookie和Session的区别主要有哪些。

一句话总结:Cookie是检查用户身上的”通行证“来确认用户的身份,Session就是通过检查服务器上的”客户明细表“来确认用户的身份的。Session相当于在服务器中建立了一份“客户明细表”

https://img2.sycdn.imooc.com/5e75b7e90001d53002400240.jpgimg

2.7 Servlet知识总结

其实纵观Servlet,无非就是学几个对象,但这几个对象对我们后面的学习都非常重要,我之前画过一张思维导图概括了这几个对象,希望对大家有帮助:

https://img4.sycdn.imooc.com/5e75b7e90001c8bc10800515.jpg



点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1.5万
获赞与收藏
6488

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消