Spring注解驱动开发第50讲——带你走进Servlet 3.0的世界
发布日期:2021-06-30 17:56:34 浏览次数:4 分类:技术文章

本文共 5232 字,大约阅读时间需要 17 分钟。

写在前面

终于,终于「史上最详细的Spring注解驱动开发系列教程」更新到第三个部分了,即与web相关的部分,走到这里,我真的是太难了,好像我写这个系列教程似乎没有多少人关注啊!不过还是有小伙伴对我做出了鼓励,比如这位叫ycrossx的同学:

在这里插入图片描述

还有比如这位修罗帝尊张三同学:

在这里插入图片描述

真的好少有人评论啊!所以,我格外珍惜这少得有点可怜的评论,希望大家对我这个系列教程多多评论,支持我继续写下去,因为我太需要大家的鼓励了,我是一定会肝完这个系列教程的,不辜负大家的期望。接下来我会继续开一个系列教程,名字可能就叫「史上最详细的Spring Boot开发系列教程」,真的会带你从入门到入坟Spring Boot哟😊,初步预估一百篇文章,感觉这一百篇文章可能都打不住,我可以确保我每一篇文章都写的非常用心,大家现在也看到了,对于「史上最详细的Spring注解驱动开发系列教程」中的每一篇文章,我都写得很用心,这是非常要花时间的,在Spring IOC容器创建源码解析这一章节中,写好一篇文章,是非常不容易的,好几篇文章我都写了3天,每天一个小节一个小节地写,真的是一个字一个字地在写,怎样写得让大家明白,怎样写得更加通顺,我都得耐心琢磨,可以说每一个字都花费了我的心力,大家不自己写文章不知道,真的是呕心沥血啊!有时候,写得都想死了,可还是得继续写下去,人生不就是这样吗?

我这一通牢骚有向大家发泄的嫌疑,但我总得有一个发泄口吧!有些话不说,心里憋得难受,还希望大家见谅!有时候,感觉自己写这个系列,真是有点得不偿失啊!明明自己花费了那么的时间与精力,得到的关注与评论还是这么少,心里上有点小不开心,而且物质上也没有得到什么,因为这个系列是免费对大家开放的嘛😥,我坚信技术是要分享的,可还是心里有一点不平衡,我是希望我的辛劳付出能够得到大家的回报,给一点打赏也可以啊!可是现在啥也没得到,于是不免心情烦闷,向大家一通发牢骚。

唉😊,各位大大,给点打赏吧!我自言自语到。我现在正在考虑,下一个系列教程,即「史上最详细的Spring Boot开发系列教程」是不是得弄成收费的呢?毕竟初步预估得写一百多篇文章呢,要收费,那么得调成多少才合适呢?我得好好考虑。还有一点,大家也不要担心,这个系列是完全免费的,大家可以放心观看!

好了,咱们还是回到今天的主题吧!

现在咱们是来到了Spring注解驱动开发的最后一部分了,即与web相关的部分。在这一部分,我们将学会注解版的web开发,如果是以前的话,编写好web开发的三大组件(即Servlet、Filter以及Listener)之后,那么还得需要在web.xml配置文件中进行注册。不仅如此,包括Spring MVC的前端控制器(即DispatcherServlet)如果要使用,它也得在web.xml配置文件中进行注册,因为它依然是一个Servlet。

而在Servlet 3.0标准以后,它给我们提供了一些非常方便的方式,即使用注解,来完成这些组件的注册以及添加,包括呢,它也会给我们提供了一些运行时的可插拔的插件功能。

所以,接下来我们就来体验一下Servlet原生标准的注解版开发,即去除web.xml配置文件,使用注解来快速地搭建起我们的web应用。

你好,Servlet 3.0,我想认识你一下

大家首先得知道一点,Servlet 3.0标准是需要Tomcat 7.0.x及以上版本的服务器来支持的,而且Servlet 3.0是属于JSR 315系列中的规范。大家可以去jcp的官网,即,亲自去搜索一下Servlet 3.0标准。

首次进入jcp的官网,应该是下面这样子的。

在这里插入图片描述

然后,在页面右上角的搜索框中输入Servlet 3.0进行搜索,搜索结果如下。

在这里插入图片描述

接着,点进上图中的Download page下载链接跳转到如下页面。

在这里插入图片描述

紧接着,点击上图中的DOWNLOAD按钮跳转到Servlet 3.0标准规范文档的下载页面,千万记得在下载Servlet 3.0标准规范文档之前,点选上Accept License Agreement,如下图所示。

在这里插入图片描述

这时,你应该能在浏览器中看到Servlet 3.0标准规范文档了,如下图所示。

在这里插入图片描述

最后,点击页面右上角的下载箭头即可下载Servlet 3.0标准规范文档,即servlet-3_0-mrel-spec.pdf

大家可以按照以上步骤来下载下来Servlet 3.0标准规范文档,全是英文哟!英文好的同学可以大致地浏览一遍,看一看官方的文档还是很有好处的,但是想来你也不会看。

不过,我们还是打开该文档看一下好了,它里面有一个章节,即Annotations and pluggability,是专门来讲注解驱动以及插件运行能力的,如下图所示。

在这里插入图片描述

我们先知道有这个事就行了。等一下,我们就会来体会Servlet 3.0标准里面的相关注解。这里先暂且不表。

我在上面说了这样一句话,即Servlet 3.0标准是需要Tomcat 7.0.x及以上版本的服务器来支持的。我为什么会这么说呢?因为你只要去tomcat官方网站看一看便会知道了,我们不妨进入这个网页里面去看一下,如下图所示。

在这里插入图片描述

现在看到了吧!只有Tomcat 7.0.x及以上版本的服务器才支持Servlet 3.0标准。所以,将来我们在运行项目的时候,大家一定要下载Tomcat 7.0.x及其以上版本的Tomcat服务器才行。

接下来,我们就得来体会一下Servlet 3.0标准里面的相关注解了。首先,按照如下步骤来创建一个动态web工程,例如servlet3.0-liayun。

第一步,如果你要是建了一个Working Set,例如spring-annotation,那么就右键它,然后在弹出的下拉列表选中New,接着再点击Dynamic Web Project,如下图所示。

在这里插入图片描述

第二步,在以下弹出的对话框中输入动态web工程的名称,例如servlet3.0-liayun。这里,有一点需要我们特别注意,由于咱们现在是来讲述原生版Servlet 3.0中的一些特性,因此我们必须将动态web模型版本选为3.0及以上规范哟😊

在这里插入图片描述

从上图中还可以看到,笔者本人使用的是Apache Tomcat v8.0这个版本的服务器,该版本的Tomcat服务器是能够支持Servlet 3.0标准的,这没有任何问题。

第三步,点击Next按钮,来到下图所示的对话框。

在这里插入图片描述

第四步,再次点击Next按钮,来到下图所示的对话框中。如果是以前的话,我们还需要勾中Generate web.xml deployment descriptor前面的小框框,让项目自动生成web.xml配置文件,但是现在我们没有必要勾选中它了。

在这里插入图片描述

第五步,点击Finish按钮,咱们的动态web工程(即servlet3.0-liayun)就创建出来了,如下图所示,在这个动态web工程里面,我们会发现其WebContent/WEB-INF目录下压根就没有web.xml配置文件。

在这里插入图片描述

根据以上步骤创建出来我们的动态web工程之后,接下来,我们就得来编写一个案例来进行测试了。

需求是这样的,我们希望发出一个get请求,然后给我们客户端响应一串字符串。这个需求说得应该是非常明朗了,为了解决这个需求,首先,我们在工程下创建一个首页,例如index.jsp,其内容如下。

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
Insert title here hello

然后,我们新建一个Servlet,例如HelloServlet,来处理以上get请求,即使用response来给我们浏览器写出一个字符串。

package com.meimeixia.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class HelloServlet extends HttpServlet {
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub // super.doGet(req, resp); resp.getWriter().write("hello ..."); }}

Servlet,你还记得吗?它就是咱们web三大组件之一,编写出一个以上的Servlet,你应该会写吧😀,不要告诉我一个如此简单的Servlet,你都不会写,那你学习是学到狗肚子里面了吗?这里,我还是稍微说一嘴,你也不要嫌我烦,就当是回顾回顾一下以前的知识呗!以上我们编写的HelloServlet类继承了HttpServlet,这样它就真正成为一个Servlet了,而且在该Servlet中,我们只复写了一个doGet方法。

接着,我们要干嘛呢?如果是以前的话,那么我们需要将以上编写好的Servlet配置在web.xml文中,例如配置一下其拦截路径等等。而现在我们只需要使用一个简单的注解就行了,即@WebServlet。并且,我们还可以在该注解中配置要拦截哪些路径,例如@WebServlet("/hello"),这样就会拦截一个hello请求了。

package com.meimeixia.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet("/hello")public class HelloServlet extends HttpServlet {
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub // super.doGet(req, resp); resp.getWriter().write("hello ..."); }}

在以上HelloServlet标注上一个@WebServlet("/hello")注解之后,只要hello请求发过来,那么就会来到这个HelloServlet,并调用其doGet方法来进行处理。

紧接着,我们就要运行项目进行测试了。项目成功启动后,咱们在浏览器地址栏中输入http://localhost:8080/servlet3.0-liayun/进行访问,如下图所示。

在这里插入图片描述

点击以上hello超链接,你就能看到下面这样一串字符串了。

在这里插入图片描述

看到了没有,我们只用了@WebServlet("/hello")这样一个注解就能注册我们的Servlet了,这是不是非常简单啊!

最后,我们不妨看一下Servlet 3.0标准规范文档,在里面你会发现有惊喜哟!哦豁,原来真是用@WebServlet注解来注册Servlet啊!当然,该注解里面的一些属性代表的是什么意思,你可以从该规范文档里面找到哟,这里我就不说了。

在这里插入图片描述

除此之外,还有一个@WebFilter注解哟,它是用来注册Filter的。

在这里插入图片描述

矮油,还有一个@WebListener注解呢,它是用来注册Listener的。

在这里插入图片描述

要是Servlet和Filter要配置一些初始化参数,那么你还可以使用@WebInitParam注解哟~

在这里插入图片描述

以上这些注解的使用,你可以按照规范文档挨个来进行测试哟!

转载地址:https://liayun.blog.csdn.net/article/details/114776860 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Spring注解驱动开发第51讲——ServletContainerInitializer来了,傻孩子们,快跑啊!
下一篇:Spring注解驱动开发第49讲——Spring IOC容器创建源码解析(九)之Spring IOC容器创建源码总结

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月24日 10时54分24秒