springboot学习笔记

一.springboot映射web资源:
1)src/main下的都是类路径。
2.springboot打包为jar,如果想引入自己的静态资源。可以创建
"静态资源文件夹":
在resources下面创建文件夹:resource,public,static三个文件夹下面放入静态资源,
如:
-----resources
-------resources
---------common
-----------bots.js
-------static
-------public
访问的时候直接输入localhost:8080/common/bots.js就能访问到
二.欢迎页映射(首页映射):
静态资源文件夹下面所有的index.html都可以称之为首页
配置页面访问的图标:在静态资源文件夹下面添加favicon.ico命名的图片可以被springboot所识别
三.可以自己定义静态资源文件夹的位置(一般建议使用默认的):
在application.properties下写入配置文件:
spring.resource.static-location=classpath:/common/,classpath:/js/定义多个静态资源文件夹
定义过后以前默认的static,public,resources下面的静态资源就失效了。
三.模板引擎:jsp,freemark,thymeleaf
使用thymeleaf的话需要引入他的maven:starter-thymeleaf,(他的最新版本可以在github或者springboot
的官方文档上查看。)
在pom.xml的properties上添加:(thymeleaf3 需要 layout2 以上版本支持)
<thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
<!--布局功能的支持-->
<thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version>
四.thmeleaf的自动配置原理:
1.html需要放在templates下面
2.在html里面导入thymeleaf的名称空间,这样就能收到他的语法提示:
<html lang="en" xmlns:th="http://www.thymeleaf.org">
3.controller通过map放入值,前端通过th:text="${map里面放入的值}"来设置
语法规则:
th:任意属性:来替换原生属性的值
th:text会转义特殊字符,如map里面放入<p>你好</p>前端会显示这个标签
th:utext不会转义特殊字符。
${}获取值
#{}和${}差不多,他是配合th:object使用的代表当前th:object对象
@{}定义url:
遍历:
[[]]:在行内代表th:text
将获取到的users的每个对象赋值给user,在通过th:text显示
<h4 th:text="${user}" th:each="user : ${users}"></h4>
<h4 th:each="user : ${users}">[[${user}]]</4>(效果同上)
六.扩展springmvc:
编写一个配置类,加上@Configuration注解,并且是WebMvcConfigurerAdapter
类型,不能标注@EnableWebMvc,想扩展什么,就重写他的方法就行了。如果标注了@EnableWebMvc那么默认的配置就失效了,自己
完全接管springmvc。
七.实验
1.html页面不要放在静态资源文件夹下,要放在template文件夹下,否则模板引擎不能解析页面
2.因为静态资源里面也有index.html,在不配置的情况下默认访问的是静态资源里面的index.html如果想访问template里面的可以
在controller里面映射页面或者在扩展springmvc的配置的时候映射资源请求的页面
3.首页引入自定义样式:先导入thymeleaf名称空间,在区分是外部样式还是自己写的样式。(见图样式引入)
外部样式:现在webjar里面引入外部js的maven,然后引入。
4.修改项目的访问名:在application.properties里面加上server.context-path=/crud,以后访问都要加上这个名字:
localhost:8080/crud/
八.国际化
1.创建国际化资源文件的路径:
在resources目录下创建i18n文件夹,然后创建login.properties(默认的),login_en_US.properties(英文),login_zh_CN.propertis(中文)三个国际化
资源文件.login.tip=请登录,login.tip=please sign,login.tip=请登录
2.先指定国际化资源文件的路径:
在application.properties,加上配置:spring.messages.basename=i18n.login
3.前端取值。通过#取值。例如: th:text="#{login.tip}",可以通过th:元素,修改原生html的值;
在行内的时候使用[[#{login.remember}]],例如:<p>[[#{login.remember}]]</p>
4.编码转化:不然会出现中文乱码。
在setting里面---file Encodings设置utf-8并勾选上自动编码(只针对单个项目)
setting---other setting---default setting---file Encoding设置utf-8,并勾选上自动配置。(全局的)
5.中英文切换:
1.在中,英文上加上链接并且带上中英文的标识。
2.自己写一个区域信息解析器。实现LocaleResolver类。(见图),实现里面的ResolveLocale方法并且
放入参数里面的区域信息。
3.将自己定义的区域信息解析器放在springmvc扩展的容器中:
九.登录:
一.让模板引擎实时生效。
1.禁用掉模板引擎的缓存,并按ctrl+f9重新编译一下:
在application.properties加上配置:spring.thymeleaf.cache=false让修改后的前端内容能够立即刷新。
二.
1)在前端的ation上面写入要提交的请求地址,并且写上登录失败的msg
2)后台:
3)防止表单重复提交,通过重定向:
4)拦截器,进行登录检查:
三.登录检查:通过拦截器实现
1.在登录的controller的入参里面放入HttpSession session,将登录成功后的个人信息放在session里面
session.setAttribute("loginUser",userName);只要登录了用户就会在session中存在。
2.自定义一个拦截器实现HandlerInterceptor类,并且实现里面的方法。
在preHandle方法里面,获取session信息,取得登录用户的个人信息。若存在则放行,不存在则放提示信息,转发到登录页面。
Object user=request.getSession().getAttribute("loginUser");
if(user!=null)
{
//已登录放行
return true;
}else
{
//未登录,返回提示信息,并且转发到登录页面
request.setAttribute("msg","没有权限,请先登录");
request.getRequestDispatcher("/index.html").forward(request,response);//转发到登录页面
}
3.在springmvc的扩展容器中注册拦截器方法
1)需要将那些请求拦截掉,和不拦截那些请求
2)springboot已经做好了静态资源的拦截,不需要再重新定义
4.显示登录名:可以在session中取值:[[${session.loginUser}]]
十.实验
1.员工列表:
2.公共页面抽取:
抽取:在公共的部分写上th:fragment="copy"或者写上id="sidebar"
插入:
1.th:insert :将公共片段整个插入到申明的元素中
2.th:replace:将声明元素替换为公共片段
3.th:include:将被引入的内容包含进这个标签中
例如:
<div th:replace="~{dasbord::copy}"></div> //模板名:片段名
<div th:replace="~{dasbord::#sidebar}"></div>//模板名:选择器
3.页面写完过后ctrl+f9重新编译一下
十一.在引入公共片段,放入入参:
1.高亮显示链接:
2.表格遍历:

 

posted on 2018-10-07 17:31  栖梧  阅读(144)  评论(0编辑  收藏  举报