SpringBoot学习笔记2018-08-11
引入静态资源
1.WebJars
导入jquery之类的东西
例:
在webjars中找到maven的依赖并添加
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.3.1-1</version>
</dependency>
启动SpringBoot访问
2.静态资源路径
"/**" 访问当前项目的任何资源, 静态资源的文件夹
"classpath: /META-INF/resources/",
"classpath: /resources/",
"classpath: /static/",
"calsspath: /public/"
"/": 当前项目的根路径
自定义静态文件夹
spring.resources.static-locations=classpath:/public
3.模板引擎
模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。
说白了就是将 页面 和 后端生成的数据 组合起来的工具
4.使用 thymeleaf
导入 pom文件的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
页面的国际化
SpringMVC的国际化
- 编写国际化配置文件
- 使用ResourceBundleMessageSource管理国际化资源文件
- 在页面使用fmt:message取出国际化内容
SpringBoot的国际化
1.编写国际化配置文件
例:
1.在Rescource下建立international目录
2.建立三个国际化配置文件
login.properties
login_en_US.properties
login_zh_CN.properties
3.分别写好三个国际化配置文件的内容
2.SpringBoot默认配置了国际化的组件
在配置文件中添加国际化配置文件路径
spring.messages.basename=international.login
3.注意乱码问题
在idea的setting中设置编码
4.使用LocaleResolver解决国际化
例:
public class MyLocalResolver implements LocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest httpServletRequest) {
String l = httpServletRequest.getParameter("l");
Locale locale = Locale.getDefault();
if ( !StringUtils.isEmpty(l)){
String[] split = l.split("_");
locale = new Locale(split[0], split[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
}
}
@Configuration
public class MvcConfig implements WebMvcConfigurer {
@Bean
public LocaleResolver localeResolver(){
return new MyLocalResolver();
}
}
登录
1.禁用模板引擎的缓存
spring.thymeleaf.cache=false
2.修改页面之后使用 ctrl + F9 刷新页面
3.拦截器实现登录检查
例:
public class LoginIntercepter implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {
Object user = request.getSession().getAttribute("user");
if (user == null){
request.setAttribute("message","请登录");
request.getRequestDispatcher("/index").forward(request,response);
//response.sendRedirect("/index");
return false;
}else{
return true;
}
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpSer8/12/2018 3:04:10 PM vletResponse response, Object handler, Exception ex) {
}
配置写好的拦截器
return new WebMvcConfigurer(){
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("/index");
registry.addViewController("/index").setViewName("/index");
registry.addViewController("/dashboard").setViewName("/dashboard");
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginIntercepter()).addPathPatterns("/**").
excludePathPatterns("/index",
"/","/webjars/**","/asserts/**","/login/user");
}
};
Restful风格 CRUD
1.Restful CRUD
普通 CRUD
查询 getEMP, 添加 addEMP?xxx, 修改 updateEMP?id=xxx, 删除deleteEMP?id=1
Restful CRUD
查询 emp–GET, emp–POST, emp(id)–PUT, emp(id)–DELETE
2. 请求架构
对应的操作 ===== 请求URI ===== 请求方式
查询所有员工 ===== emps ===== GET
查询某个员工 ===== emp/1 ===== GET
添加员工 ===== emp ===== GET
来到修改页面 ===== emp ===== POST
修改员工 ===== emp ===== PUT
删除员工 ===== emp/1 ===== DELETE