SpringMvc拦截器
1、自定义的实现类要实现Spring的 HandlerInterceptor 接口
package com.wfl.springmvc.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("/login.html").forward(request,response);
return false;
}else {
return true;
}
}
}
2、运用Web组件时要加上自己的Config配置
package com.wfl.springmvc.config;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
public class MyConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**").excludePathPatterns("/login");
}
}
3、控制器LoginController
package com.wfl.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.thymeleaf.util.StringUtils;
import javax.servlet.http.HttpSession;
@Controller
public class LoginController {
@GetMapping("/login")
public String login(@RequestParam(value = "username",required = false ) String username,
@RequestParam(value = "password",required = false) String password,
Model model,
HttpSession session){
if (!StringUtils.isEmpty(username) && "111111".equals(password)){
session.setAttribute("LoginUser",username);
return "index";
}else {
model.addAttribute("msg","用户名或密码错误!");
return "login";
}
}
}