总结
1. 项目的搭建
2. 登录
一、项目搭建
1. DAO、entities
2. 静态资源
3. 模板引擎Thymeleaf渲染的界面
4. 默认访问首页
因为springboot的自动化配置是默认加载静态文件夹下的index.html,但是该路径下的index.html不能被模板引擎渲染,所以要自定义视图解析器
(1)方式一 推荐
//使用WebMvcConfigurerAdapter可以来扩展SpringMVC的功能
@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {
//所有的WebMvcConfigurerAdapter组件都会一起起作用
@Bean //将组件注册在容器
public WebMvcConfigurerAdapter webMvcConfigurerAdapter(){
WebMvcConfigurerAdapter adapter = new WebMvcConfigurerAdapter() {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
registry.addViewController("/index.html").setViewName("login");
}
};
return adapter;
}
}
(2)方式二
当然,也可以使用RequestMapping
因为返回的index会被springboot自动化配置的部分去渲染 classpath:/templates/index.html 文件!其实就是springboot的自动化配置的视图解析器,前缀就是 classpath:/templates/, 后缀就是 .html
5. 导入bootstrap的webjar
6. 修改页面的引入静态资源的URL
(1)bootstrap的webjar的资源的引入
所有 /webjars/** ,都去 classpath:/META-INF/resources/webjars/ 找资源;
(2)自定义的静态资源的引入
/**访问当前项目的任何资源,都去(静态资源的文件夹)找映射 ,前提是你没有配置RequestMapping的请求。
这样引入静态资源的好处
(1)修改访问路径
(2)访问首页
(3)这种引入方式会自动适配路径,就是会根据你定义的路径,自动在资源前面加相应的配置!
7. 实时生效
二、登录
1. 前端
2. 服务端接收请求
3. 消息回显
<p style="color: red" th:text="${msg}" th:if="${not #strings.isEmpty(msg)}"></p>
4. 防止表单的重复提交
页面登录成功之后,会转发给主页面,在主页面按住F5会出现表单的重复提交,为了防止表单的重复提交,作下面的配置
5. 拦截器的登录检查
(1)自定义登录拦截器
/**
* 登陆检查,
*/
public class LoginHandlerInterceptor implements HandlerInterceptor {
//目标方法执行之前
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object user = request.getSession().getAttribute("loginUser");
if(user == null){
//未登陆,返回登陆页面
request.setAttribute("msg","没有权限请先登陆");
request.getRequestDispatcher("/index.html").forward(request,response);
return false;
}else{
//已登陆,放行请求
return true;
}
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
(2)注册自定义的登录拦截器
【提示】静态资源的映射springboot已经做好了,这里面拦截器不需要特殊配置。而springMVC配置拦截器时却要自己特殊处理静态资源!
6. 前端显示登录用户名