登录接口
这里是基于演示代码写的登录接口,实际肯定不会这么low,会出现get请求 包括参数注解也会用的是@RequestBody而不是@RequestParam。
@Controller
public class LoginController {
@RequestMapping("/user/login")
public String login(@RequestParam("username") String username, @RequestParam("password") String password, Model model, HttpSession session) {
if (!Strings.isEmpty(username) && "123456".equals(password)) {
session.setAttribute("loginUser", username);
//重定向到main.html页面,也就是跳转到dashboard页面
return "redirect:/main.html";
} else{
model.addAttribute("msg", "用户名或者密码错误");//显示错误信息
return "index";//跳转到首页
}
}
}
关于页面我们用到的是,就是返回的错徐信息msg没有就不会显示
<p style="color:red" th:text="${msg}" th:if="${not #strings.isEmpty(msg)}"></p>
登录拦截器
首先和之前一样要定义一个自己的拦截器(继承HandlerInterceptor)
package com.zp.config;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object loginUser = request.getSession().getAttribute("loginUser");
if (loginUser == null) {
request.setAttribute("msg", "没有权限,请先登录!");
request.getRequestDispatcher("/index.html").forward(request, response);
return false;
} else {
// 放行
return true;
}
}
}
我们定义好自己的拦截器,还要注入的我们的配置当中addInterceptor(new LoginHandlerInterceptor()),在我们的配置添加拦截器;
添加的部分代码
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/index.html", "/", "/user/login", "/css/**", "/img/**", "/js/**");
}
配置全部代码
package com.zp.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
registry.addViewController("/main.html").setViewName("dashboard");
}
@Bean
public LocaleResolver localeResolver() {
return new MyLocaleResolver();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/index.html", "/", "/user/login", "/css/**", "/img/**", "/js/**");
}
}
其他增删改查,还有就是404的设置,就是添加一个error文件夹(同理500也可以这样)