`
sunbin
  • 浏览: 354208 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Spring Boot Servlet【转】

 
阅读更多

Web开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到ServletFilterListenerInterceptor 等等。

当使用spring-Boot时,嵌入式Servlet容器通过扫描注解的方式注册ServletFilterServlet规范的所有监听器(如HttpSessionListener监听器)。 
Spring boot 
的主 Servlet  DispatcherServlet,其默认的url-pattern“/”。也许我们在应用中还需要定义更多的Servlet,该如何使用SpringBoot来完成呢?

spring boot中添加自己的Servlet有两种方法,代码注册Servlet和注解自动注册(FilterListener也是如此)。 
一、代码注册通过ServletRegistrationBean FilterRegistrationBean  ServletListenerRegistrationBean 获得控制。 
也可以通过实现 ServletContextInitializer 接口直接注册。

二、在 SpringBootApplication 使用@ServletComponentScan注解后,ServletFilterListener 可以直接通过 @WebServlet@WebFilter@WebListener 注解自动注册,无需其他代码。

这里我们新建一个spring-boot-hello2 Java工程进行测试;这里不过多进行说明,如果这个还不会的话,请回到上上上一章进行查看。

 

通过代码注册Servlet示例代码:

com.kfit.servlet.MyServlet1:

package com.kfit.servlet;

 

import java.io.IOException;

import java.io.PrintWriter;

 

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

/**

 *

 * @author Angel(QQ:412887952)

 * @version v.0.1

 */

//这个不需要添加.

//@WebServlet(urlPatterns="/myServlet1/*", description="Servlet的说明")

publicclass MyServlet1 extends HttpServlet{

   

    privatestaticfinallongserialVersionUID = 1L;

 

    @Override

    protectedvoid doGet(HttpServletRequest req, HttpServletResponse respthrows ServletException, IOException {

        System.out.println(">>>>>>>>>>doGet()<<<<<<<<<<<");

        doPost(reqresp);

    }

 

    @Override

    protectedvoid doPost(HttpServletRequest req, HttpServletResponse respthrows ServletException, IOException {

        System.out.println(">>>>>>>>>>doPost()<<<<<<<<<<<");

        resp.setContentType("text/html"); 

        PrintWriter out = resp.getWriter(); 

        out.println("<html>"); 

        out.println("<head>"); 

        out.println("<title>Hello World</title>"); 

        out.println("</head>"); 

        out.println("<body>"); 

        out.println("<h1>这是:MyServlet1</h1>"); 

        out.println("</body>"); 

        out.println("</html>");

    }

}

 

com.kfit.App中注册:

package com.kfit;

 

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.context.embedded.ServletRegistrationBean;

import org.springframework.boot.web.servlet.ServletComponentScan;

import org.springframework.context.annotation.Bean;

 

import com.kfit.servlet.MyServlet1;

 

/**

 *

 *

 * 大家也许会看到有些demo使用了3个注解: @Configuration

 *

 * @EnableAutoConfiguration

 * @ComponentScan

 *

 *                                 其实:@SpringBootApplication申明让spring boot自动给程序进行必要的配置,

 *

 *                等价于以默认属性使用@Configuration

 *                @EnableAutoConfiguration@ComponentScan

 *

 * 所以大家不要被一些文档误导了,让自己很迷茫了,希望本文章对您有所启发;

 *

 * @author Angel(QQ:412887952)

 * @version v.0.1

 */

@SpringBootApplication

public class App {

        

         /**

          * 注册Servlet.不需要添加注解:@ServletComponentScan

          * @return

          */

         @Bean

         public ServletRegistrationBean MyServlet1(){

                   return new ServletRegistrationBean(new MyServlet1(),"/myServlet/*");

         }

        

         public static void main(String[] args) {

                   SpringApplication.run(App.class, args);

         }

}

 

右键Run As Java Application进行访问http://127.0.0.1:8080/myServlet1

 

 

使用注解注册Servlet示例代码

com.kfit.servlet.MyServlet2.java

package com.kfit.servlet;

 

import java.io.IOException;

import java.io.PrintWriter;

 

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

/**

 *

 * @author Angel(QQ:412887952)

 * @version v.0.1

 */

@WebServlet(urlPatterns="/myServlet2/*", description="Servlet的说明")

public class MyServlet2 extends HttpServlet{

      

       private static final long serialVersionUID = 1L;

 

       @Override

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

        System.out.println(">>>>>>>>>>doGet()<<<<<<<<<<<");

        doPost(req, resp);

    }

 

    @Override

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

        System.out.println(">>>>>>>>>>doPost()<<<<<<<<<<<");

        resp.setContentType("text/html"); 

        PrintWriter out = resp.getWriter(); 

        out.println("<html>"); 

        out.println("<head>"); 

        out.println("<title>Hello World</title>"); 

        out.println("</head>"); 

        out.println("<body>"); 

        out.println("<h1>这是:myServlet2</h1>"); 

        out.println("</body>"); 

        out.println("</html>");

    }

}

 

SpringBootSampleApplication.java

package com.kfit;

 

import org.springboot.sample.servlet.MyServlet;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.context.embedded.ServletRegistrationBean;

import org.springframework.boot.web.servlet.ServletComponentScan;

import org.springframework.context.annotation.Bean;

import org.springframework.web.servlet.DispatcherServlet;

 

@SpringBootApplication

@ServletComponentScan//这个就是扫描相应的Servlet;

public class SpringBootSampleApplication {

 

    public static void main(String[] args) {

        SpringApplication.run(SpringBootSampleApplication.class, args);

    }

}

 

访问http://127.0.0.1:8080/myServlet2

分享到:
评论

相关推荐

    最新Spring Boot Admin 官方参考指南-中文版-2.x

    而`spring-boot-admin-sample-servlet`项目则展示了如何在添加安全验证的情况下配置Spring Boot Admin Server。 接下来,你需要注册你的客户端应用程序到Spring Boot Admin Server。这可以通过引入`spring-boot-...

    Spring Boot讲义.pdf

    - **独立运行的Spring应用**:Spring Boot可以创建独立的Spring应用程序,开发者无需部署WAR包到外部的Servlet容器中。 - **内嵌的服务器**:如Tomcat、Jetty或Undertow等,使得项目可以打包成一个JAR文件直接运行...

    十分钟上手spring boot

    在不使用parent POM的情况下玩转Spring Boot** - 也可以选择不使用parent POM。 - **13.2.3. 使用Spring Boot Maven插件** - 使用该插件来简化构建过程。 - **13.3. Gradle** - Gradle也是Spring Boot支持的另...

    spring boot 开发 servlet filters listeners

    ### Spring Boot 中 Servlet Filters 和 Listeners 的实现与运用 #### 一、概述 Spring Boot 是一个基于 Spring 框架的快速应用开发平台,它简化了传统的 Spring 应用配置,使得开发者能够更加专注于业务逻辑的...

    Spring Boot 2 Cookbook 第二版

    对于Web开发,Spring Boot的嵌入式Servlet容器如Tomcat和Jetty使得部署变得简单。书中会涵盖RESTful API设计、模板引擎(Thymeleaf、FreeMarker)以及WebSocket的使用。同时,你还将了解到Spring Security,它是...

    Spring-Boot-Reference-Guide, Spring Boot Reference Guide中文翻译 -《Spring Boot参考指南》.zip

    3. 内嵌式Servlet容器:Spring Boot支持内嵌Tomcat、Jetty或Undertow,无需额外部署WAR文件。 4. 健康检查:提供健康检查API,用于监控系统状态。 5. 配置文件:通过application.properties或application.yml进行...

    Spring Boot 中的Servlet简单使用

    在Spring Boot中,Servlet的使用变得非常简便,因为Spring Boot内置了Servlet容器,如Tomcat或Jetty,这些容器会自动处理Servlet的注册和管理。本文将详细介绍如何在Spring Boot中添加自定义Servlet。 首先,Spring...

    Spring Boot面试题(92题)

    然而,Spring Boot在现有Spring框架的基础上构建,通过自动化配置和内置的Servlet容器,如Tomcat和Jetty,极大地减少了这些工作。 Spring Boot的核心优势在于它的简洁性和高效性。首先,它可以独立运行,无需打成...

    Spring Boot应用开发框架 v2.7.17.zip

    这可能包括如何使用Maven或Gradle初始化项目,配置应用主类,以及如何利用Spring Boot的内嵌Servlet容器(如Tomcat)启动Web应用。 对于计算机科学的学生来说,这个压缩包可以作为毕业设计论文的参考资源,他们可以...

    从零开始学Spring Boot

    1.23 Spring Boot Servlet 1.24 Spring Boot过滤器、监听器 1.25 Spring Boot 拦截器HandlerInterceptor 1.26 Spring Boot启动加载数据CommandLineRunner 1.27 Spring Boot环境变量读取和属性对象的绑定 1.28 Spring...

    Spring Boot in Action 英文版

    Spring Boot还支持内嵌的Servlet容器,比如Tomcat、Jetty或Undertow,这意味着开发者可以不用部署到传统的WAR文件中,而是直接运行一个JAR文件,并且应用程序会启动内嵌的Servlet容器。这简化了部署过程,使得开发...

    11-Spring Boot面试题(92题).pdf

    Spring Boot应用可以创建独立的Spring应用程序,这些应用程序可以直接以jar包的形式运行,不需要外部依赖的Servlet容器。 Spring Boot核心特点: 1. 独立运行:Spring Boot项目可以打包成一个包含所有依赖的可执行...

    spring boot 中文文档

    Spring Boot是Spring社区提供的一个全新项目,旨在简化Spring应用的初始搭建以及开发过程。它使用特定的方式配置应用程序,这样就可以避免大量的模板配置。Spring Boot专注于快速和广泛的应用程序开发,它遵循“约定...

    spring-boot-2.7.0.zip源码

    《Spring Boot 2.7.0 源码解析与深度探索》 Spring Boot作为Java开发中的一个核心框架,以其便捷的起步配置、自动化配置和一站式的解决方案深受开发者喜爱。当我们深入研究Spring Boot 2.7.0的源码时,可以更深刻地...

    Spring boot访问jsp页面

    1. 添加`spring-boot-starter-web`依赖,它包含Servlet容器,使得我们可以在Spring Boot应用中运行JSP。 2. 配置`spring.mvc.view.prefix`和`spring.mvc.view.suffix`属性,分别设置JSP页面的前缀和后缀,例如:`/...

    Spring boot web 访问

    Spring Boot基于约定优于配置的原则,通过内嵌的Servlet容器(如Tomcat或Jetty),我们可以快速地启动一个Web服务。在Spring Initializr中,我们可以选择web依赖来创建一个新的Spring Boot项目。 创建项目后,我们...

    Spring-Boot-Demo

    《Spring Boot整合Mybatis与Druid数据库连接池的实践详解》 在当今的Java开发领域,Spring Boot以其简洁、高效的特点成为了主流的框架选择。它极大地简化了项目的配置和启动流程,使得开发者能够更加专注于业务逻辑...

    spring boot官方文档

    根据文档内容,Servlet容器的支持是构建Spring Boot应用程序的一个重要部分。 2. 安装Spring Boot:文档为Java开发者提供了多种安装Spring Boot的方式,包括直接通过Maven和Gradle进行安装,或者使用Spring Boot...

    Spring Boot 学习笔记完整教程.pdf

    Spring Boot是一种基于Spring框架的开源项目,旨在简化Spring应用的初始搭建以及开发过程。Spring Boot提供了一种快捷的方式,让开发者能够快速构建独立的、生产级别的基于Spring框架的应用。Spring Boot的核心特性...

    spring boot 小实例

    3. **内嵌容器(Embedded Containers)**:Spring Boot 可以内嵌 Tomcat 或 Jetty 这样的Servlet容器,这样你无需额外部署即可运行应用。 4. **无 XML 配置**:Spring Boot 倡导“约定优于配置”的原则,大量减少了...

Global site tag (gtag.js) - Google Analytics