传统的Servlet在spring boot中怎么实现的?

本文主要内容:

1:springboot一些介绍

2:传统的servlete项目在spring boot项目中怎么实现的?web.xml、url-patterns怎么设置?

3:有几种实现方式?分别是什么?

4:代码位置

spring boot 三大特性

组件自动装配:webMVC、webFlux、JDBC等

嵌入式Web容器:Tomcat、Jetty以及undertow

生产准备特性:指标、健康检查、外部化部署等

组件自动装配:

激活自动装配注解:@EnableAutoConfiguration

配置:/META-INF/spring.factories

实现:XXXAutoConfiguration.

我们以spring-boot-autoconfigure的jar下spring.factories为示例:

可以看到key是接口后没是实现。实现就是XXXAutoConfiguration.

嵌入式web 容器:

Web Servlet容器:Tomcat、Jetty以及undertow

Web Reactive容器:Netty Web Server

生产准备特性:

指标:/actuator/metrices

健康检查:/actuator/health

外部化配置:/actuator/configprops

Web应用:

传统的Servlet应用

Servlet组件:Servlet、Filter、listener

Servlet注册到spring boot中:Servlet注解、Spring Bean、RegistrationBean

异步非阻塞:异步Servlet(web 3.0特效)、非阻塞Servlet(servlet 3.1特性)。

来源:凯哥Java(kaigejava)

www.kaigejava.com

传统Servelt应用:

一:添加pom依赖

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

二:Servlet组件讲解

我们先来回忆下使用Sevlet怎么写的:

1:写个类继承HttpServlet。然后重新doGet、doPost方法。如下图:

2:在web.xml文件中需要配置servlet-name、servlet-calss、servlete-mapping中需要配置url-pattern。如下图:

然后启动tomcat之后,在地址栏中输入xxx:xx/servlet/HelloWorld.

上面是Servlet的步骤。

在spring boot中,提倡使用注解。那么上面的servlet使用spring boot怎么使用?

spring boot没有web.xml怎么配置?访问url怎么配置?

请看下面代码:

@WebServlet(urlPatterns = "/servlet/HelloWorld")

public class MyServlet extends HttpServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

resp.getWriter().write("my doGet method");

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

resp.getWriter().write("my doPost method");

}

}

其中@WebServlet注解和UrlPatterns的功能同web.xml中<servlet-mapping>中的urlpattern.

我们在来看看启动类上添加:

@SpringBootApplication

@ServletComponentScan("com.kaigejava.web.servlet")

public class Springbootdemo1Application {

public static void main(String[] args) {

SpringApplication.run(Springbootdemo1Application.class, args);

}

}

其中的ServletComponentScan就是扫描servlet的。可以看做是web.xml中<servlet>标签下的<sevlet-class>。

两者对比:

启动项目,访问:

达到预期效果。说明传统的servlet在springboot项目中可以很好的兼容。

我们总结下:

SpringBoot中使用传统的Servlet。

实现方式:

创建一个类添加@WebServlet,继承HttpServlet,注册到spring boot容器中。

其中URL映射使用注解:@WebServlet(urlPatterns = "/servlet/HelloWorld")

将servlet注册到spring容器中使用注解:ServletComponentScan(basePackages=“com.kaigejava.web.servlet”)

我们知道Sevlete还有其他两个组件:Filter和Listener.

那么这两个组件在springboot中又分别使用哪些注解呢?

根据servlet注解我们可以看到是@webServlet.

所以,filter对应的就是@WebFilter、listener对应的就是@WebListener注解。

实现方式有三种方式:

第一种:使用servlet注解。如上面我们演示的@Webservlet注解。

其实就是@ServletComponentScan+@webServlet

或者+@WebFilter或者+@WebListener注解

方式二:使用spring注解

@Bean+Servlet(Filter\Listener)

方式三:使用RegistrationBean方法

ServletRegistrationBean

FilterRegistrationBean

ServletListenerRegistrationBean

以上三种都可以。

代码已发布到git上面。欢迎大家一起学习。

传统的Servlet在spring boot中怎么实现的?的更多相关文章

  1. Spring boot中使用servlet filter

    Spring boot中使用servlet filter liuyuhang原创,未经允许请勿转载! 在web项目中经常需要一些场景,如参数过滤防止sql注入,防止页面攻击,空参数矫正等, 也可以做成 ...

  2. spring boot中使用servlet、listener和filter

    spring boot中支持使用java Web三大组件(servlet.listener和filter),但是坑比较多,主要是spring boot内嵌tomcat和独立tomcat服务器有一些细节 ...

  3. 从零开始的Spring Boot(2、在Spring Boot中整合Servlet、Filter、Listener的方式)

    在Spring Boot中整合Servlet.Filter.Listener的方式 写在前面 从零开始的Spring Boot(1.搭建一个Spring Boot项目Hello World):http ...

  4. Spring boot中注册Servlet

    Spring boot中注册Servlet 如何在spring boot项目中注册Servlet呢? 如何在spring boot项目中注册Servlet呢? 由于没有web.xml,无法直接在xml ...

  5. Spring Boot中使用Servlet与Filter

    在Spring Boot中使用Servlet,根据Servlet注册方式的不同,有两种使用方式.若使用的是Servlet3.0+版本,则两种方式均可使用:若使用的是Servlet2.5版本,则只能使用 ...

  6. 解决spring boot中rest接口404,500等错误返回统一的json格式

    在开发rest接口时,我们往往会定义统一的返回格式,列如: { "status": true, "code": 200, "message" ...

  7. Spring Boot中Tomcat是怎么启动的

    Spring Boot一个非常突出的优点就是不需要我们额外再部署Servlet容器,它内置了多种容器的支持.我们可以通过配置来指定我们需要的容器. 本文以我们平时最常使用的容器Tomcat为列来介绍以 ...

  8. spring boot(三):Spring Boot中Redis的使用

    spring boot对常用的数据库支持外,对nosql 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结 ...

  9. Spring Boot中的注解

    文章来源:http://www.tuicool.com/articles/bQnMra 在Spring Boot中几乎可以完全弃用xml配置文件,本文的主题是分析常用的注解. Spring最开始是为了 ...

随机推荐

  1. 使用代理IP访问网络

    现在很多领域都需要用到代理IP,用到的领域越来越广,如爬虫.投票.抢购等等. 代理IP免费获取地址:http://www.xicidaili.com/(少部分可以用) 我这个案例使用的上面地址里面的免 ...

  2. webview HttpClient 怎么保持会话session统一

      cookies session均为key---value的形式展示,  1.    session是存储在服务端,并有一块区域控件存储用户信息,主要是为了判断该用户是否登录,在客户端采用httpC ...

  3. github访问过慢解决

    为了更加愉快地使用全球最大同性交友网站上的优质资源,我们来做一些简单的本机上的调整. 通过查看下载链接,能够发现最终被指向到Amazon的服务器(http://github-cloud.s3.amaz ...

  4. docker入门1---docker的简介和安装

    Tomxin7 Simple, Interesting | 简单,有趣 什么是Docker? 简介: Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发 ...

  5. SQL基础教程(第2版)第5章 复杂查询:5-1 视图和表

    本章将以此前学过的SELECT语句,以及嵌套在SELECT语句中的视图和子查询等技术为中心进行学习.由于视图和子查询可以像表一样进行使用,因此如果能恰当地使用这些技术,就可以写出更加灵活的 SQL 了 ...

  6. Go-方法-接口-异常处理-错误处理

    方法 什么是方法? 方法其实就是一个函数,在 func 这个关键字和方法名中间加入了一个特殊的接收器类型.接收器可以是结构体类型或者是非结构体类型.接收器是可以在方法的内部访问的. package m ...

  7. Java集合(一)——Collection

    集合概述 集合(Collections)是存储对象的容器.方便对多个对象的操作.存储对象,集合的作用就在这时显现了. 集合的出现就是为了持有对象.集合中可以存储任意类型的对象, 而且长度可变.在程序中 ...

  8. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结【第一天】

    本人做过一年的MATLAB编程和简单维护过VB和C++的项目.是跟着网上获得的黑马的Java双元视频课来自学入门Java知识和常用框架的使用. 淘淘商城(SpringMVC+Spring+Mybati ...

  9. JavaSE--枚举类

    参考:http://www.cnblogs.com/hyl8218/p/5088287.html 枚举类声明定义的类型是一个类,因此尽量不要构造新对象. 所有枚举类型都是 java.lang.Enum ...

  10. Python程序中的进程操作--—--开启多进程

    Python程序中的进程操作-----开启多进程 之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创 ...