
Lombok
Lombok通过注解可以直接实现getter、setter、equals、toString等方法,不需要手动写这些方法。
注解名 | 介绍 |
---|---|
@Data | 整合了Getter、Setter、ToString、EqualsAndHashCode、RequiredArgsConstructor注解 |
@Getter | getter方法 |
@Setter | setter方法 |
@ToString | toString方法 |
@EqualsAndHashCode | equals和hashCode方法 |
@NonNull | 不为Null |
@AllArgsConstructor | 所有有参构造方法 |
@NoArgsConstructor | 无参构造方法 |
… | … |
thymeleaf国际化
thymeleaf国际化可以提供页面多语言功能。配置之后可以依据Header中的语言来返回相应的语言的页面。
创建一个多语言配置文件夹,这里使用classpath:/i18n/。
文件名使用语言简写作为后缀。如:简体中文zh_CN,米国英语en_US。
在文件夹下创建配置文件用于表示各种语言在页面上应该显示的内容;
在html文件中添加相应的属性,使用“th:text”和表达式”#{login.tip}”。(注:表达式使用”#”作为开头)
1
2<label class="sr-only" th:text="#{login.username}">Username</label>
<label class="sr-only" th:text="#{login.password}">Password</label>
通过url参数修改语言/配置自定义LocaleResolver
创建一个类,实现LocaleResolver接口。根据url参数返回相应的Locale对象。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22public class MyLocaleResover implements LocaleResolver {
//解析请求
public Locale resolveLocale(HttpServletRequest request) {
String lang = request.getParameter("l");//获取链接中的参数l
Locale localeDefault = Locale.getDefault();//如果没有就使用默认的
//如果请求的链接携带了国际化的参数
if (!StringUtils.isEmpty(lang)){
//zh_CN
String[] lang2 = lang.split("_");//将语言和国家分开
//语言 国家
Locale locale = new Locale(lang2[0], lang2[1]);
return locale;//使用url中参数指定
}
return localeDefault;
}
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
}
}在SpringMvc配置中添加自定义的LocaleResolver;
1
2
3
4
5
6
7
8
public class MyMvcConfig implements WebMvcConfigurer {
//自定义的localeResolver
public LocaleResolver localeResolver(){
return new MyLocaleResover();
}
}在thymeleaf语法配置结束后,使用url参数即可控制页面的语言;
Locale 原理
首先判断是否有本地配置,有则使用本地配置,没有则使用默认配置。
1 |
|
hole…
SpringBoot的拦截器
定义一个自定义拦截器;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16public class LoginHandlerInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//登录成功之后,应该有用户的session
Object loginUser = request.getSession().getAttribute("loginUser");
if(loginUser==null){
//没有登录
request.setAttribute("msg","没有权限,请先登录");
request.getRequestDispatcher("/").forward(request,response);
return false;
}else {
return true;
}
}
}在MvcConfig类下实现addInterceptors方法并注册相应的拦截器;
1
2
3
4
5
6
7
public class MyMvcConfig implements WebMvcConfigurer {
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor());
}
}
SpringBoot的错误页面 404等
错误代码指定页面
对于错误404,在templates下创建error/404.html即可。
其他同理。
Servlet的Session
Java Servlet提供为每个session存储Map<String,Object>
的功能;
每次有浏览器访问网站,JavaServlet会为浏览器生成一个JSESSIONID。
底层会存储JSESSIONID与Map的对应关系。
对于开发者,使用对象HttpSession可以直接为当前交互的用户存储Map数据。
注:Map存储在服务器,JSESSIONID存储在浏览器。
方法:
HttpSession | 介绍 |
---|---|
setAttribute(key,value) | 为当前session的Map设置一个键值对。如:setAttribute(“username”,”qweasd”),会为session对应的Map中设置key为username值为qweasd的键值对。 |
invalidate() | 使当前session无效化,并为浏览器删除cookies JSESSIONID。 |
… | …. |
其他
i18n
n. 国际化
internationalization单词的缩写。
i和n中间有18个字母。
zh_CN
格式:语言_国家
zh取自拼音zhongguo前两个字母。
CRUD
增删改查