1、若依框架:v—haspermi条件写上就要保证内容包含在getinfo的列表里面,否则不显示按钮
2、当elmentui中只有一个input的时候,空值按enter键会刷新整个页面,需要在form标签中加上@submit.native.prevent来阻止刷新页面
3、 springmvc的Model中添加数据,转发时数据会带在请求域中,RedirectAttributes中携带数据,在重定向的时候会自动把数据拼接在路径后面
4、表单重复提交
前端发给后端一个请求,如果后端使用请求转发,那浏览器的地址是不会变成请求转发
的那个地址的,还是发起后端请求的地址,如果使用重定向的话就会在浏览器地址栏里
面变成重定向后的地址来避免刷新表单重复提交
5、过滤器
//配置类
@Configuration
public class GulimallWebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new CartInterceptor()).addPathPatterns("/**");}
}
//过滤器
public class CartInterceptor implements HandlerInterceptor {//实际上是一个Map<Thread,Object> threadLocal; set方法就是给其put一个值,key值为线程id能够默认获取public static ThreadLocal<UserInfoTo> threadLocal = new ThreadLocal<>();/*** 目标方法执行之前拦截* @param response @param request @param handler* @return* @throws Exception*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {UserInfoTo userInfoTo = new UserInfoTo();HttpSession session = request.getSession();MemberResponseVo member = (MemberResponseVo)session.getAttribute(AuthServerConstant.LOGIN_USER);if (member != null){//用户登录userInfoTo.setUserId(member.getId());}Cookie[] cookies = request.getCookies();if (cookies != null && cookies.length>0){for (Cookie cookie : cookies) {//找到cookie中键为user-key的值String name = cookie.getName();if (name.equals(CartConstant.TEMP_USER_COOKIE_NAME)){userInfoTo.setUserKey(cookie.getValue());userInfoTo.setTempUser(true);}}}//没有创建临时用户,创建临时用户if (StringUtils.isEmpty(userInfoTo.getUserKey())){String uuid = UUID.randomUUID().toString();userInfoTo.setUserKey(uuid);}//目标方法执行之前存放用户信息threadLocal.set(userInfoTo);return true;}/*** 业务执行后 分配临时用户,让浏览器保存* @param request* @param response* @param handler* @param modelAndView* @throws Exception*/@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {UserInfoTo userInfoTo = threadLocal.get();//没临时用户保存一个临时用户if (!userInfoTo.isTempUser()){Cookie cookie = new Cookie(CartConstant.TEMP_USER_COOKIE_NAME, userInfoTo.getUserKey());cookie.setDomain("gulimall.com");//持续延长用户的过期时间cookie.setMaxAge(CartConstant.TEMP_USER_COOKIE_TIMEOUT);response.addCookie(cookie);}}
}