SpringBoot整合Servlet的两种方式
SpringBoot整合Servlet有两种方式:
1.通过注解扫描完成Servlet组件的注册;
2.通过方法完成Servlet组件的注册;
现在简单记录一下两种方式的实现
1.通过注解扫描完成Servlet组件的注册;
ServletDemo1.class
package com.example.combine.servlet.sbservlet; 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; /**
*
* @author SpringBoot 整合Servlet方式1 创建servlet时需要在web.xml进行配置。 <servlet>
* <servlet-name>ServletDemo1</seevlet-name>
* <servlet-classs>com.example.combine.servlet.sbservlet.ServletDemo1</servlet-class>
* </servlet>
*
* <servlet-mapping> <servlet-name>ServletDemo1</servlet-name>
* <url-pattern>/first</url-pattern> </servlet-mapping>
*
* 但是在servlet3.0以后可以使用注释的方式来配置,且在springboot中也没有web.xml
*/ // 在哪个class添加了这个注释就意味着哪个class就是servlet
@WebServlet(name = "ServletDemo1", urlPatterns = "/first")
public class ServletDemo1 extends HttpServlet { @Override // 重写doget方法
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doGet(req, resp);
System.out.print("这是第一种方式"); //在控制台中输出
} }
App1.class启动类
package com.example.combine.servlet.sbservlet; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
//import org.springframework.web.bind.annotation.RestController; /**
* SpringBoot整合servlet方式一 这种方式在控制台看到了相关的输出信息,但是在浏览器打开的时候是错误的页面信息
*/
@SpringBootApplication
@ServletComponentScan // 在SppringBoot启动时扫描@WebServlet,并将该类实例化
// @RestController
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
2.通过方法完成Servlet组件的注册;
ServletDemo2.class
package com.example.combine.servlet.sbservlet; import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
*
* @author servlet整合springboot方式2
*
*/ // 这种方式无须在servlet这个类中添加@WebServlet这个注释声明
public class ServletDemo2 extends HttpServlet { @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doGet(req, resp);
System.out.println("这是第二种整合的方式");
} }
App2.class启动类
package com.example.combine.servlet.sbservlet; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean; @SpringBootApplication
public class App1 { public static void main(String[] args) {
// TODO Auto-generated method stub
SpringApplication.run(App1.class, args);
} // 添加如下的方法
// 实现在启动类中注册servlet的方法
@Bean // 添加@Bean的注释
public ServletRegistrationBean getServlet() {
// 通过ServletRegistrationBean完成对servlet的注册
ServletRegistrationBean bean = new ServletRegistrationBean(new ServletDemo2());
bean.addUrlMappings("/second"); // 该方法完成的是对urlPattern的配置
return bean; // 将对象返回
} }
有关的解释都在代码的注解里面,但是有个问题是,虽然最后可以在控制台输出相关的语句,但是浏览器的页面显示错误,应该是缺少了点什么?
SpringBoot整合Servlet的两种方式的更多相关文章
- 【SpringBoot】03.SpringBoot整合Servlet的两种方式
SpringBoot整合Servlet的两种方式: 1. 通过注解扫描完成Servlet组件注册 新建Servlet类继承HttpServlet 重写超类doGet方法 在该类使用注解@WebServ ...
- SpringBoot从入门到精通二(SpringBoot整合myBatis的两种方式)
前言 通过上一章的学习,我们已经对SpringBoot有简单的入门,接下来我们深入学习一下SpringBoot,我们知道任何一个网站的数据大多数都是动态的,也就是说数据是从数据库提取出来的,而非静态数 ...
- 【SpringBoot】05.SpringBoot整合Listener的两种方式
SpringBoot整合Listener的两种方式: 1.通过注解扫描完成Listener组件的注册 创建一个类实现ServletContextListener (具体实现哪个Listener根据情况 ...
- 【SpringBoot】04.SpringBoot整合Filter的两种方式
SpringBoot整合Filter过滤器的两种方式: 1.通过扫描注解完成Filter组件注册 创建一个类,实现Filter接口,实现doFilter()方法 在该类使用注解@WebFilter,设 ...
- springboot整合mybatis的两种方式
https://blog.csdn.net/qq_32719003/article/details/72123917 springboot通过java bean集成通用mapper的两种方式 前言:公 ...
- Spring Boot 整合 Shiro ,两种方式全总结!
在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 Shiro. 今天松哥就来和大家聊聊 Spring Boot ...
- SpringCloud系列-整合Hystrix的两种方式
Hystrix [hɪst'rɪks],中文含义是豪猪,因其背上长满棘刺,从而拥有了自我保护的能力.本文所说的Hystrix是Netflix开源的一款容错框架,同样具有自我保护能力. 本文目录 一.H ...
- Spring整合Hibernate的两种方式
在使用spring注解整合hibernate时出现"org.hibernate.MappingException: Unknown entity: com.ssh.entry.Product ...
- SpringBoot自定义过滤器的两种方式及过滤器执行顺序
第一种 @WebFilter + @ServletComponentScan 注解 1.首先自定义过滤器 如下自定义过滤器 ReqResFilter 必须实现 javax.servlet.Filte ...
随机推荐
- Qt 文本文件的打开、新建、保存以及另存为
我们平时在使用windows的notepad以及其他各种软件过程中,都会有保存文件和另存为两种功能,这两者不能混为一谈. 一.保存时有两种情况,一种是对于新创建的文件,一种是对于已有的文件,前者需要打 ...
- 本地MySQL的root所创建用户登录发生[Access denied for user 'root1'@'localhost' (using password: YES)]错误的解决方案
1.问题描述: 当在SQLyog中执行以下脚本: CREATE DATABASE IF NOT EXISTS sys; USE sys; CREATE USER root1 IDENTIFIED BY ...
- shell =~ 引发的思考
=~不是按位取反 1.[[]] if [[]]中引用变量不用加 双引号(")了,而if[]中变量必须加双引号,如if[ -n "$test" ],不然一些特殊的地方,会出 ...
- php 接收blob数据流,base64数据流 转为 blob二进制数据流
php正常接收参数的方式如下:$_GET$_POST$_REQUEST 但是如果跨语言接收请求参数的话,可能会出现一系列的问题,其他语言的http请求可能是基于数据流的概念来传递参数的,如果按照常规处 ...
- mysql 5.7/percona server/mariadb 10.2安装与服务器参数优化
建议使用percona server linux generic版,从https://www.percona.com/downloads/Percona-Server-LATEST/下载,现在不在推荐 ...
- opencv学习之路(10)、ROI与mask掩码
一.ROI #include<opencv2/opencv.hpp> using namespace cv; void main(){ Mat img=imread("E://0 ...
- (4opencv)对OpenCV中“旋转”的思考和实验
我记得曾经有人对OpenCV的旋转吐槽,意思是它自己没有很好的关于选择的算法.在新的版本里面添加了这些函数(我还没有时间去看是什么时候pr的).现在一个比较棘手的问题,就是OpenCV中旋转 ...
- NT1_keras下搭建一个3层模型并且修改。
In [1]: import keraskeras.__version__ C:\ProgramData\Anaconda3\lib\site-packages\h5py\__init__.py:36 ...
- TIM定时器的应用
TIM定时器的应用 ①输入捕获的应用: 上一节,我已阐述TIM的输入捕获具体作用有两个(如下图): 对输入信号的测量: ...
- JOISC 2014 邮戳拉力赛(基础DP)
题意 https://loj.ac/problem/2878 思路 真的神仙题,想到就很好写,想不到就写不出来. 肯定只能一个一个邮戳按顺序分析.首先,将取一枚邮戳的路径分为四种: 上行 \(\rig ...