首页 > 其他分享 >SpringBoot整合篇

SpringBoot整合篇

时间:2025-01-22 19:01:46浏览次数:3  
标签:SpringBoot 启动 创建 void public 整合 class out

目录

SpringBoot整合Servlet

整合方式一

1.1 创建servlet

1.2启动类中配置

1.3 启动测试

整合方式二

2.1创建servlet

2.2 修改启动类

2.3 启动程序测试

SpringBoot整合Filter

整合方式一

1.创建过滤器

2.创建启动类

3.启动测试

整合方式二

1.创建过滤器

2.创建启动类

3.启动测试

SpringBoot整合Listener

整合方式一

1.创建Listener

2.创建启动器

3.启动测试

整合方式二

文件上传和下载

上传操作

下载操作

SpringBoot整合Freemarker

SpringBoot整合Thymeleaf

Thymeleaf基本使用


SpringBoot整合Servlet

整合方式一

1.1 创建servlet

  在src对应的目录下创建一个servlet,添加相关的get方法,设置@WebServlet注解,如下:

@WebServlet(name = "FirstServlet",urlPatterns = "/first")
public class FirstServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("--doGet方法执行了----");
        PrintWriter out = resp.getWriter();
        out.write("success");
        out.flush();
        out.close();
    }
}
1.2启动类中配置

在启动类的头部我们通过@ServletComponentScan注解来加载自定义的Servlet

@SpringBootApplication
//在 springBoot 启动时会扫描@WebServlet,并将该类实例化
@ServletComponentScan()
public class Springboot01ServletApplication {

    public static void main(String[] args) {
        SpringApplication.run(Springboot01ServletApplication.class, args);
    }
}
1.3 启动测试

通过启动类启动程序访问:http://localhost:8080/first 如下

success

整合方式二

2.1创建servlet

第二种整合servlet的方式不需要在servlet的头部添加@WebServlet注解。

public class SecondServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("--doGet方法执行了----");
        PrintWriter out = resp.getWriter();
        out.write("success  second");
        out.flush();
        out.close();
    }
}
2.2 修改启动类

需要在启动类中单独注册servlet,创建一个新的启动类,具体如下:

@SpringBootApplication
public class App {

    public static void main(String[] args) {
        SpringApplication.run(App.class,args);
    }

    @Bean
    public ServletRegistrationBean getServletRegistrationBean(){
        // 直接获取ServletRegistrationBean对象 并关联自定义的servlet
        ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
        // 设置servlet对应的 UrlMapping
        bean.addUrlMappings("/second");
        return bean;
    }
}
2.3 启动程序测试

通过新创建的App启动类启动程序,访问测试 http://localhost:8080/second

success second

SpringBoot整合Filter

整合方式一

1.创建过滤器

创建Filter,并且通过@WebFilter注解配置过滤信息,具体如下:

@WebFilter(urlPatterns = "/first")
public class FirstFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("First过滤器:firstServlet 执行之前");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("First过滤器:firstServlet 执行之后");
    }

    @Override
    public void destroy() {

    }
}
2.创建启动类

启动类和我们前面整合Servlet的第一种方式是一样的。

@SpringBootApplication
//在 springBoot 启动时会扫描@WebServlet,并将该类实例化
@ServletComponentScan()
public class Springboot01ServletApplication {

    public static void main(String[] args) {
        SpringApplication.run(Springboot01ServletApplication.class, args);
    }

}
3.启动测试

通过启动器启动程序测试如下

整合方式二

1.创建过滤器

创建新的过滤器,不用配置@WebFilter注解,我们同样在启动类中注册过滤器。

 

@WebFilter(urlPatterns = "/first")
public class FirstFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("First过滤器:firstServlet 执行之前");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("First过滤器:firstServlet 执行之后");
    }

    @Override
    public void destroy() {

    }
}
2.创建启动类

添加获取FilterRegistrationBean对象的方法,并在该方法中注册Filter及配置拦截的请求的URL

@SpringBootApplication
public class App {

    public static void main(String[] args) {
        SpringApplication.run(App.class,args);
    }

    @Bean
    public ServletRegistrationBean getServletRegistrationBean(){
        // 直接获取ServletRegistrationBean对象 并关联自定义的servlet
        ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
        // 设置servlet对应的 UrlMapping
        bean.addUrlMappings("/second");
        return bean;
    }

    /**
     * 获取FilterRegistrationBean 对象
     *    注册过滤器并设置拦截的请求地址
     * @return
     */
    @Bean
    public FilterRegistrationBean getFilterRegistrationBean(){
        FilterRegistrationBean bean = new FilterRegistrationBean(new SecondFilter());
        // 配置要拦截的请求
        bean.addUrlPatterns("/second");
        return bean;
    }
}

 

3.启动测试

通过App启动类启动程序,访问测试如下:

 

SpringBoot整合Listener

整合方式一

1.创建Listener

   创建一个自定义的Listener,监听ServletContext的初始化和销毁的行为,具体如下:

@WebListener
public class FisrtListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("FirstListener:Servlet容器初始化...");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("FirstListener:Servlet容器被销毁了");

    }
}
2.创建启动器

启动还是和之前一样,没什么区别。

@SpringBootApplication
//在 springBoot 启动时会扫描@WebServlet,并将该类实例化
@ServletComponentScan()
public class Springboot01ServletApplication {

    public static void main(String[] args) {
        SpringApplication.run(Springboot01ServletApplication.class, args);
    }

}
3.启动测试

通过启动类启动程序,观察控制台。

 

整合方式二

1.创建Listener

创建自定义的监听器,不要添加@WebListener注解

package com.edu.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class SecondListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("SecondListener : 初始化了....");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("SecondListener : 销毁了....");
    }
}

2.创建启动器

创建启动类,同时创建注册Listener的方法,如下

@SpringBootApplication
public class App {

    public static void main(String[] args) {
        SpringApplication.run(App.class,args);
    }

    /**
     * 注册自定义的监听器
     * @return
     */
    @Bean
    public ServletListenerRegistrationBean getServletListenerRegistrationBean(){
        ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new SecondListener());
        return bean;
    }
}

3.启动测试

启动程序,观察控制台的输出。

输出结果看到不光第二个Listener触发了,而且前面的Listener也触发了。搞定~

文件上传和下载

上传操作

表单页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>文件上传案例:</h1>
    <form action="/user/upload" method="post" enctype="multipart/form-data">
        <label>账号:</label><input type="text" name="username"><br/>
        <label>照片:</label><input type="file" name="upload"><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

 

控制层处理

添加控制器处理上传的文件信息

@RestController
@RequestMapping("/user")
public class UserController  {

    @RequestMapping("/upload")
    public String upload(MultipartFile upload,String username) throws IOException {
        System.out.println("账号:"+username+" "+upload.getOriginalFilename());
        upload.transferTo(new File("c:/tools/",upload.getOriginalFilename()));
        return "success:上传成功";
    }
}

设置上传参数

在application.properties中添加配置参数,此处要注意SpringBoot2.x版本的参数和1.x版本的参数设置有区别,需要注意

# SpringBoot 2.0 版本
spring.servlet.multipart.enabled=true
# 设置单个文件上传大小
spring.servlet.multipart.max-file-size=200MB
# 设置一次上传请求的文件的总大小
spring.servlet.multipart.max-request-size=200MB

# SpringBoot 1.5.9 版本
#spring.http.multipart.enabled=true
#spring.http.multipart.max-file-size=10MB
#spring.http.multipart.max-request-size=100MB

测试即可

下载操作

@RequestMapping("/exportExcel")
public void exportExcel(HttpServletRequest request,HttpServletResponse response) throws IOException{
	File file = new File("d://owned.xls");
	//设置响应头和客户端保存文件名
    response.setCharacterEncoding("utf-8");
    response.setContentType("multipart/form-data");
    response.setHeader("Content-Disposition", "attachment;fileName=" + file.getName());
    try {
        //打开本地文件流
        InputStream inputStream = new FileInputStream(file);
        //激活下载操作
        OutputStream os = response.getOutputStream();
        //循环写入输出流
        byte[] b = new byte[2048];
        int length;
        while ((length = inputStream.read(b)) > 0) {
            os.write(b, 0, length);
        }
        // 这里主要关闭。
        os.close();
        inputStream.close();
    } catch (Exception e){
        
        throw e;
    }
}

SpringBoot整合Freemarker

添加依赖

我们需要额外添加freemarker的依赖,如下:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

 

创建controller

创建一个普通的控制器,跳转到ftl中。

@Controller
public class UserController {

    /*
     * 处理请求,产生数据
     */
    @RequestMapping("/showUser")
    public String showUser(Model model){
        List<User> list = new ArrayList();
        list.add(new User(1,"张三",20));
        list.add(new User(2,"李四",22));
        list.add(new User(3,"王五",24));
        //需要一个 Model 对象
        model.addAttribute("list", list);
        //跳转视图
        return "user";
    }
}

创建ftl文件

注意:springBoot 要求模板形式的视图层技术的文件必须要放到 src/main/resources 目录下必须要一个名称为 templates

 

ftl代码

<html>
<head>
    <title>展示用户数据</title>
    <meta charset="utf-9"></meta>
</head>
<body>
<table border="1" align="center" width="50%">
    <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Age</th>
    </tr>

    <#list list as user >
        <tr>
            <td>${user.userid}</td>
            <td>${user.username}</td>
            <td>${user.userage}</td>
        </tr>
    </#list>
</table>
</body>
</html>

 

属性文件中添加后缀

spring.freemarker.suffix=.ftl

 

测试

创建启动类,然后启动访问测试。

@SpringBootApplication

public class Springboot03FreemarkerApplication {



    public static void main(String[] args) {

        SpringApplication.run(Springboot03FreemarkerApplication.class, args);

    }

}

 

     

    SpringBoot整合Thymeleaf

    添加相关的依赖

    <!-- 添加父类的依赖 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
    </parent>
    
    <dependencies>
    	<!-- 添加相关的启动器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
    </dependencies>
    1. 创建存放视图的templates目录以及application.properties
      目录位置:src/main/resources/templates
      templates:该目录是安全的。意味着该目录下的内容是不允许外界直接访问的。

     

    Thymeleaf基本使用

    1.Thymeleaf 特点:
      thymeleaf是一种模板语言,可以动态或者静态显示文本内容,Thymelaef 是通过他特定语法对 html 的标记做渲染。具体语法介绍下篇文章单独介绍

    2.编写controller

    @Controller
    public class DemoController {
    
        @RequestMapping("/show")
        public String showInfo(Model model){
            model.addAttribute("msg","Thymeleaf入门案例...");
            return "index";
        }
    }

     

    创建视图页面

    在我们刚刚创建的templates目录下创建index.html页面,在头部引入

    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
     

    <!DOCTYPE html>
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" >
    <head>
        <meta charset="UTF-8">
        <title>Thymeleaf入门案例</title>
    </head>
    <body>
        <h1>Thymeleaf入门案例:</h1>
            <span th:text="hello"></span>
            <hr>
            <span th:text="${msg}}"></span>
    </body>
    </html>

     

    创建启动类
    在com.dpb.springboot目录下创建启动类

    @SpringBootApplication
    public class Start {
    
        public static void main(String[] args) {
            SpringApplication.run(Start.class,args);
        }
    }

     

     

      标签:SpringBoot,启动,创建,void,public,整合,class,out
      From: https://blog.csdn.net/loushaoqi/article/details/145267858

      相关文章

      • 基于springboot的房屋交易系统设计与实现
        一、系统需求分析用户角色:普通用户:可以浏览房源、发布房源、预约看房、发起交易等。管理员:管理房源信息、用户信息、交易记录等。核心功能:房源信息管理:包括房源的发布、编辑、删除、搜索和展示。用户管理:用户的注册、登录、个人信息管理。预约看房:用户可以预约看房时间。......
      • springboot 社区留守儿童管理系统的设计与实现-毕业设计源码19573
        目 录摘要1绪论1.1系统的选题背景与意义1.2研究内容1.3论文结构与章节安排2 社区留守儿童管理系统系统分析2.1可行性分析2.1.1技术可行性分析2.1.2经济可行性分析2.1.3法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析......
      • Springboot3整合Netty进行消息传递
        1.服务端1.1字符消息NettyServer/***@authorliu.wenxuan1*@Description:netty服务端处理字符消息解码器问题不能同时处理文件和字符*/publicclassNettyServer{privatestaticfinalintPORT=8080;publicstaticvoidmain(String[]args)th......
      • 基于springboot的高校学生求职就业平台系统(源码+lw+部署文档+讲解等)
        背景及意义基于SpringBoot的高校学生求职就业平台系统,专为助力高校学生顺利求职就业而设计。借助SpringBoot强大的后端开发能力,结合用户体验良好的前端技术,保障系统稳定运行,实现高效的数据交互与精准的业务逻辑处理。学生通过该系统完成注册登录后,能完善个人简历,包......
      • 基于springboot的高校社团管理系统的设计与实现(源码+lw+部署文档+讲解等)
        背景及意义基于SpringBoot的高校社团管理系统,是为高效管理高校各类社团活动与事务而精心打造。凭借SpringBoot强大的后端开发能力,搭配交互友好的前端技术,保证系统稳定运行,实现流畅的数据交互与复杂业务逻辑的精准处理。学生可通过该系统便捷注册登录,浏览社团列表,依......
      • SpringBoot快速整合SqLite
        SpringBoot快速整合SqLite1)SqLite简介SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几......
      • SpringBoot3集成案例
        SpringBoot3-LearningLabsSpringBoot3-LearningLabs是一个开源项目,旨在为新手程序员提供一个全面的SpringBoot3.x学习平台。该项目通过一系列精心设计的演示(demo)来展示SpringBoot3的核心功能和最佳实践。无论是微服务架构、数据访问、安全性、异步消息传递还是其他高级......
      • 【开源】基于SpringBoot框架教学资料管理系统(计算机毕业设计)+万字毕业论文 T286
        系统合集跳转源码获取链接点击主页更能获取海量源码10年计算机开发经验,主营业务:源码获取、项目二开、语音辅导、远程调试、毕业设计、课程设计、毕业论文、BUG修改一、系统环境运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。IDE环境......
      • 【开源】基于SpringBoot框架智慧校园管理系统(计算机毕业设计)+万字毕业论文 T291
        系统合集跳转源码获取链接点击主页更能获取海量源码10年计算机开发经验,主营业务:源码获取、项目二开、语音辅导、远程调试、毕业设计、课程设计、毕业论文、BUG修改一、系统环境运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。IDE环境......
      • 【开源】基于SpringBoot框架汽车租赁系统(计算机毕业设计)+万字毕业论文 T296
        系统合集跳转源码获取链接点击主页更能获取海量源码10年计算机开发经验,主营业务:源码获取、项目二开、语音辅导、远程调试、毕业设计、课程设计、毕业论文、BUG修改一、系统环境运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。IDE环境......