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 页面
添加异常信息和异常路径显示:
错误页面!
错误信息:
错误信息:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后我们该如何学习?
1、看视频进行系统学习
这几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。
另外,我自己也珍藏了好几套视频资料躺在网盘里,有需要的我也可以分享给你:
2、读源码,看实战笔记,学习大神思路
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
Spring源码深度解析:
Mybatis 3源码深度解析:
Redis学习笔记:
Spring Boot核心技术-笔记:
3、面试前夕,刷题冲刺
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。
关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:
只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。
人生短暂,别稀里糊涂的活一辈子,不要将就。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
1713412764715)]
2、读源码,看实战笔记,学习大神思路
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
Spring源码深度解析:
[外链图片转存中…(img-pVEcQCr5-1713412764715)]
Mybatis 3源码深度解析:
[外链图片转存中…(img-p8OOqARb-1713412764715)]
Redis学习笔记:
[外链图片转存中…(img-tSPuEMMY-1713412764715)]
Spring Boot核心技术-笔记:
[外链图片转存中…(img-iNjkZNhe-1713412764716)]
3、面试前夕,刷题冲刺
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。
关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:
[外链图片转存中…(img-w1WaNHsR-1713412764716)]
只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。
人生短暂,别稀里糊涂的活一辈子,不要将就。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!