`
sunbin
  • 浏览: 359036 次
  • 性别: 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应用开发框架 v2.7.17.zip

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

    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

    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 所有‘demo,打包下载’

    2. **Tomcat 容器**: Tomcat 是一个流行的开源 Servlet 容器,Spring Boot 默认集成了它。在开发期间,Spring Boot 可以以嵌入式方式运行 Tomcat,无需额外部署步骤,方便测试和调试。 3. **Cache 支持**: 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的核心特性...

Global site tag (gtag.js) - Google Analytics