《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
org.springframework.boot
spring-boot-starter-parent
2.5.4
- 添加依赖
在 pom.xml 导入如下依赖
org.springframework.boot
spring-boot-starter-web
- 创建启动类
创建一个类,在其上加上 @SpringBootApplication
注解标识为启动类
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class,args);
}
}
- 定义 Controller
创建Controller 包,Controller 要放在启动类所在包
@RestController // 相当于 @Controller + @ResponseBody
public class HelloController {
@RequestMapping(“/hello”)
public String hello(){
return “Hello SpringBoot”;
}
}
- 启动测试
直接运行启动类的 main 方法即可,然后访问 localhost:80/hello
我们可以把 springboot 的项目打成 jar 包直接去运行。
- 添加 maven 插件 spring-boot-maven-plugin
org.springframework.boot
spring-boot-maven-plugin
- maven 打包
- 在 cmd 命令行中启动 jar 包
- 在浏览器访问 localhost:80/hello 即可
也就是更改启动时显示的字符拼成的字母,也就是 banner 图案
-
百度SpringBoot banner 在线生成工具:https://www.bootschool.net/ascii ,这个网站生成
-
到项目下的 resources 目录下新建一个 banner.txt 即可
-
将生成的拷贝到 banner.txt 中即可
=================================================================================
在 Web 开发中,国际化支持通常是做国际化网站都需要考虑的一个问题,应用程序会涉及到页面的多语言化支持,例如页面可以切换中文简体、英文、日文等语言。Spring Boot 为国际化提供了强有力的支持,同时在开发 Web 应用程序的时候,请求处理过程中发生错误也是非常常见的情况、往往是需要通过一个统一的异常处理来保证客户端能够收到友好的提示。
国际化是一个使应用程序适应不同语言和区域而无需对源代码进行工程更改的过程。用它来说,国际化是对本地化的准备。国际化实际上就是在利用浏览器语言,或者页面中的中英文切换,将页面的文字在其他语言和中文进行切换。
SpringBoot实现国际化的步骤如下:
- 编写多语言国际化文件
在项目的 resources 目录创建名称为 i18n的文件夹,并在该文件夹中根据需要编写对应的多语言国际化文件 login.properties、login_zh_CN.properties 和 login_en_US.properties 文件,代码如下所示:
- login.properties
login.password=密码
login.remeber=记住我
login.btn=登录
login.tip=请登录
login.username=用户名
- login_zh_CN.properties
login.password=密码
login.remeber=记住我
login.btn=登录
login.tip=请登录
login.username=用户名
- login_en_US.properties
login.password=Password
login.remeber=Remember Me
login.btn=sign in
login.tip=Please sign in
login.username=UserName
如图方式,我们创建3个文件,分别是无语言配置时候生效的 login.properties
;中文生效的 login_zh_CN.properties
,英文生效的 login_en_US.properties
以下划线的组合:文件名 _ 区域 _语言.properties,当我们这样命名生成文件后,IDEA也会帮我们识别这是个国际化配置包,自动转换成如下的模式:
当变成如上图所描述的模式时,我们再需要添加配置文件,直接选中包右键 new 即可,如下图所示:
我们需要在这些配置文件里做些改动,先点击 login_zh_CN的配置文件,然后点击下边如图所示的 Resource Bundle 的按钮,切换编辑模式
按照如图的方法,点击加号,添加一个 key,命名为 login.tip
(在页面中使用)
接下来按照我们页面需要转换的量,来做配置,如下图
- 指定国际化参数设置
在 application.properties
配置文件中指定国际化参数设置
#指定国际化基类名
spring.message.basename=i18n.login
上述代码中,根据国际化配置文件位置和名称,在项目全局配置文件中使用 spring.message.basename=i18n.login
设置了自定义国际化文件的基础名。其中,i18n表示国际化文件相对项目类路径 resources 的位置,login 表示多语言文件的前缀名。如果开发者完全按照 SpringBoot 默认识别机制,在项目类路径 resources 下编写 message.properties 等国际化文件,可以省略国际化文件基础名的设置。
- 使用国际化属性
在 html页面中使用 #{}
引用国际化属性
Please Sign in
- 中文乱码解决方案
若在切换语言的过程中出现中文乱码,在 settings 设置 File Encoding 编码格式
- 在项目中定义区域解析器,在项目中创建名为 com.xxx.config 的包,并在该包下创建一个用于定制国际化功能区域信息解析器的自定义配置类 MyLocaResolver
@Configuration
public class MyLocalResolver implements LocaleResolver{
/**
-
自定义区域解析方式
-
@param request
-
@return
*/
@Override
public Locale resolveLocale(HttpServletRequest request){
// 获取页面手动切换传递的语言参数l
String l = request.getParameter(“l”);
// 获取请求头自动传递的语言参数Accept-Language
String header = request.getHeader(“Accept-Language”);
Local locale = null;
// 如果手动切换参数不为空,就根据手动参数进行语言切换,否则默认根据请求头信息切换
if(!StringUtils.isEmpty){
// 拆分语言代码_国家代码
String[] split = l.split(“_”);
// 创建Locale对象
locale = new Locale(split[0],split[1]);
}else{
// 拆分默认语言代码_国家代码
String[] split = header.split(“,”);
locale = new Locale(split[0],split[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
}
// 将自定义的MyLocalResolver类重新注册为一个类型LocaleResolver的Bean组件
@Bean
public LocaleResolver localeResolver(){
return new MyLocalResolver();
}
}
上述代码中,MyLocalResovler 配置类实现类LocaleResolver接口,并重写了 LocaleResolver 接口的 resolveLocale() 方法解析自定义语言。使用@Bean
注解将当前配置类注册成Spring容器中的一个Bean组件。这样就可以覆盖默认的LocaleResolver组件。在重写 resolveLocale() 方法中,可以根据不同的需求切换语言信息从而获取请求的参数,只有请求参数不为空时,才可以进行语言切换。
最后,只需要修改login.html页面的"中文"、"English"超链接提交路径即可
中文
English
====================================================================================
SpringBoot 默认的处理异常的机制,SpringBoot 默认的提供了一套处理异常的机制。一旦程序中出现了异常,SpringBoot 会向 /error 的 url 发送请求。在 SpringBoot 中提供了一个叫做 BasicExceptionController 来处理 /error 请求,然后跳转到默认显示异常的页面来显示异常信息。
在SpringBoot框架中,局部处理异常的方式与 SpringMVC 方式一致。实现全局异常的常用的方法有自定义错误页面和@ControllerAdvice
注解
在SpringBoot框架中,在浏览器输入不存在的请求地址会出现如下图的错误:
上述的错误在SpringBoot开发中十分常见,虽然 SpringBoot 为我们提供了默认的错误页面映射,但是实际开发中,上图的错误页面对用户来说并不友好,所以我们需要自己来实现异常提示。
如果我们需要将所有的异常统一跳转到自定义的错误页面,需要在 src/main/resources/templates 目录下创建 error.html 页面,并且页面名称必须是 error。
错误页面!
3.2、@ControllerAdvice+@ExceptionHandler
在 SpringBoot 框架中,可以使用 @ControllerAdvice
注解和@ExceptionHandler
注解实现全局异常统一处理。@ControllerAdvice 注解用于标识某个类是控制器的切面类;@ExceptionHandler 注解用于标识在异常处理的方法上。如果要实现 Ajax 异常处理,可以使用 @RestControllerAdvice
注解,该注解用于标识某个类是控制器的切面类,支持 restful 风格及ajax返回json。
- 定义GlobalException异常处理类
在项目中创建名为 com.manong.exception 的包,并在该包下定义 GlobalException 异常处理类,代码如下:
@ControllerAdvice
public class GlobalException{
@ExceptionHandler(value={Exception.class})
public Object exceptionHandler(HttpServletRequest request,Exception e){
ModelAndView modelandView = new ModelAndView();
modelandView.addObject(“exception”,e.getMessage()); // 设置异常信息
modelandView.addObject(“url”,request.getRequestURL()); //设置异常路径
modelandView.setViewName(“error”); //设置页面视图
return modelAndView;
}
}
- 修改 error.html 页面
添加异常信息和异常路径显示:
错误页面!
错误信息:
错误信息:
最后
按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。
学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。
“道路是曲折的,前途是光明的!”
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
错误页面!
错误信息:
错误信息:
最后
按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。
学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。
“道路是曲折的,前途是光明的!”
[外链图片转存中…(img-9sYB3Rly-1714758283521)]
[外链图片转存中…(img-oVaMq3I1-1714758283521)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!