import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import com.example.demo.pojo.User;
@Controller
@RequestMapping("one")
public class OneController {
@RequestMapping("/index")
public String index(ModelMap map) {
map.addAttribute("name", "liunn");
return "thymeleaf/index";
}
@RequestMapping("center")
public String center() {
return "thymeleaf/center/center";
}
@RequestMapping("test")
public String test(ModelMap map) {
User user = new User();
user.setAge(18);
user.setName("liunn1");
user.setPassword("123456");
user.setBirthday(new Date());
map.addAttribute("user", user);
User u1 = new User();
u1.setAge(19);
u1.setName("liunn2");
u1.setPassword("123456");
u1.setBirthday(new Date());
User u2 = new User();
u2.setAge(17);
u2.setName("liunn3");
u2.setPassword("123456");
u2.setBirthday(new Date());
List<User> userList = new ArrayList<>();
userList.add(user);
userList.add(u1);
userList.add(u2);
map.addAttribute("userList", userList);
return "thymeleaf/test";
}
@PostMapping("postform")
public String postform(User user) {
System.out.println(user.getName());
return "redirect:/th/test";
}
}
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import com.example.demo.pojo.User;
@Controller
@RequestMapping("two")
public class TwoController {
@RequestMapping("/index")
public String index(ModelMap map) {
map.addAttribute("name", "liunntwo");
return "thymeleaf/index";
}
@RequestMapping("center")
public String center() {
return "thymeleaf/center/center";
}
@RequestMapping("test")
public String test(ModelMap map) {
User user = new User();
user.setAge(18);
user.setName("liunntwo");
user.setPassword("123456");
user.setBirthday(new Date());
map.addAttribute("user", user);
User u1 = new User();
u1.setAge(19);
u1.setName("liunntwo1");
u1.setPassword("123456");
u1.setBirthday(new Date());
User u2 = new User();
u2.setAge(17);
u2.setName("liunntwo2");
u2.setPassword("123456");
u2.setBirthday(new Date());
List<User> userList = new ArrayList<>();
userList.add(user);
userList.add(u1);
userList.add(u2);
map.addAttribute("userList", userList);
return "thymeleaf/test";
}
@PostMapping("postform")
public String postform(User user) {
System.out.println(user.getName());
return "redirect:/th/test";
}
}
写了两个controller,用于拦截不同路径。
import java.io.OutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.example.demo.pojo.SysUser;
import com.fasterxml.jackson.databind.ObjectMapper;
public class OneInterceptor implements HandlerInterceptor {
//在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行,主要是用于进行资源清理工作)
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
//HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
//请求处理后视图渲染钱
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
//HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}
//在请求处理前调用controller方法
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// TODO Auto-generated method stub
return HandlerInterceptor.super.preHandle(request, response, handler);
}
public void returnErrorRespone( HttpServletResponse response, SysUser u)
throws Exception {
OutputStream out=null;
try {
response.setCharacterEncoding("utf-8");
response.setContentType("text/json");
out=response.getOutputStream();
ObjectMapper objectMapper=new ObjectMapper();
String users=objectMapper.writeValueAsString(u);
out.write(users.getBytes("utf-8"));
out.flush();
} finally {
// TODO: handle finally clause
out.flush();
}
}
}
import java.io.OutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.example.demo.pojo.SysUser;
import com.fasterxml.jackson.databind.ObjectMapper;
public class TwoInterceptor implements HandlerInterceptor {
//在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行,主要是用于进行资源清理工作)
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
//HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
//请求处理后视图渲染钱
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
//HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}
//在请求处理前调用controller方法
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// TODO Auto-generated method stub
return HandlerInterceptor.super.preHandle(request, response, handler);
}
public void returnErrorRespone( HttpServletResponse response, SysUser u)
throws Exception {
OutputStream out=null;
try {
response.setCharacterEncoding("utf-8");
response.setContentType("text/json");
out=response.getOutputStream();
ObjectMapper objectMapper=new ObjectMapper();
String users=objectMapper.writeValueAsString(u);
out.write(users.getBytes("utf-8"));
out.flush();
} finally {
// TODO: handle finally clause
out.flush();
}
}
}
两个拦截器
写一个类继承WebMvcConfigurerAdapter
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.example.demo.controller.interceptor.OneInterceptor;
import com.example.demo.controller.interceptor.TwoInterceptor;
@Configuration
public class WebMvcConfigurer extends WebMvcConfigurerAdapter{
@Override
public void addInterceptors(InterceptorRegistry registry) {
//添加拦截器OneInterceptor拦截路径为/two/**和 /one/**
registry.addInterceptor(new OneInterceptor()).addPathPatterns("/two/**")
.addPathPatterns("/one/**");
registry.addInterceptor(new TwoInterceptor()).addPathPatterns("/one/**");
super.addInterceptors(registry);
}
}