SpringBoot——SpringBoot中设置字符集编码的两种方式

简介: SpringBoot——SpringBoot中设置字符集编码的两种方式

1.方式一(使用传统的Spring提供的字符集过滤器)


先写一个Servlet


package com.songzihao.springboot.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 *
 */
@WebServlet(urlPatterns = "/myservlet")
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().println("世界你好,Hello World!!!");
        //统一设置浏览器编码格式
        resp.setContentType("text/html;character=utf-8");
        resp.getWriter().flush();
        resp.getWriter().close();
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}


之后创建配置类 SystemConfig,在其中声明字符集过滤器的相关配置。


package com.songzihao.springboot.config;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.CharacterEncodingFilter;
/**
 *
 */
@Configuration
public class SystemConfig {
    @Bean
    public FilterRegistrationBean characterEncodingFilterRegistrationBean() {
        //创建字符集编码过滤器
        CharacterEncodingFilter characterEncodingFilter=new CharacterEncodingFilter();
        //设置强制使用指定的字符集编码
        characterEncodingFilter.setForceEncoding(true);
        //设置指定的字符集编码
        characterEncodingFilter.setEncoding("utf-8");
        FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean();
        //设置字符集编码过滤器
        filterRegistrationBean.setFilter(characterEncodingFilter);
        //设置字符集编码过滤器的路径
        filterRegistrationBean.addUrlPatterns("/*");
        return filterRegistrationBean;
    }
}


在SpringBoot核心配置文件中 关闭 SpringBoot 的 的 http 字符编码支持。


#关闭springboot的http字符编码支持
#只有关闭该选项之后,spring字符集编码过滤器才会生效
server.servlet.encoding.enabled=false


最后启动测试。


package com.songzihao.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan(basePackages = "com.songzihao.springboot.servlet")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}



2.方式二(在 application.properties 中配置字符编码(推荐))


先写一个Servlet。


package com.songzihao.springboot.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 *
 */
@WebServlet(urlPatterns = "/myservlet")
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().println("世界你好,Hello World!!!");
        //统一设置浏览器编码格式
        resp.setContentType("text/html;character=utf-8");
        resp.getWriter().flush();
        resp.getWriter().close();
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}


在 SpringBoot 核心配置文件添加字符编码设置。


#设置请求响应的字符编码
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
server.servlet.encoding.charset=utf-8


最后启动测试。


package com.songzihao.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan(basePackages = "com.songzihao.springboot.servlet")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}



目录
打赏
0
0
0
1
85
分享
相关文章
|
10月前
|
Springboot+jpa如何设置启动项目表不存在就主动创建,字段没有就新增
Springboot+jpa如何设置启动项目表不存在就主动创建,字段没有就新增
659 0
SpringBoot的@Value注解如何设置默认值
SpringBoot的@Value注解如何设置默认值
448 1
springboot中表字段映射中设置JSON格式字段映射
springboot中表字段映射中设置JSON格式字段映射
197 1
|
5月前
|
简单两步,Spring Boot 写死的定时任务也能动态设置:技术干货分享
【10月更文挑战第4天】在Spring Boot开发中,定时任务通常通过@Scheduled注解来实现,这种方式简单直接,但存在一个显著的限制:任务的执行时间或频率在编译时就已经确定,无法在运行时动态调整。然而,在实际工作中,我们往往需要根据业务需求或外部条件的变化来动态调整定时任务的执行计划。本文将分享一个简单两步的解决方案,让你的Spring Boot应用中的定时任务也能动态设置,从而满足更灵活的业务需求。
394 4
解锁 Spring Boot 自动化配置的黑科技:带你走进一键配置的高效开发新时代,再也不怕繁琐设置!
【8月更文挑战第31天】Spring Boot 的自动化配置机制极大简化了开发流程,使开发者能专注业务逻辑。通过 `@SpringBootApplication` 注解组合,特别是 `@EnableAutoConfiguration`,Spring Boot 可自动激活所需配置。例如,添加 JPA 依赖后,只需在 `application.properties` 配置数据库信息,即可自动完成 JPA 和数据源设置。这一机制基于多种条件注解(如 `@ConditionalOnClass`)实现智能配置。深入理解该机制有助于提升开发效率并更好地解决问题。
126 0
springBoot如何设置yml文件,设置端口号
springBoot如何设置yml文件,设置端口号
|
9月前
|
springboot集成swagger2并分组全局设置Authorization
springboot集成swagger2并分组全局设置Authorization
278 0
SpringBoot启动时设置不加载数据库
SpringBoot启动时设置不加载数据库
504 0
SpringBoot 启动参数设置环境变量、JVM参数、tomcat远程调试
SpringBoot 启动参数设置环境变量、JVM参数、tomcat远程调试
642 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等