【中软实训】12.归档+异常处理+登录拦截
2020-08-03 15:22
204 查看
1.归档功能
NewRepository
@Query("select function('date_format',n.updateTime,'%Y')as year from News n group by year order by year desc ") List<String> findGroupYear(); @Query("select n from News n where function('date_format',n.updateTime,'%Y') = ?1") List<News> findByYear(String year);
NewService
Map<String,List<News>> archiveNew(); Long countNew();
NewServiceImpl
@Override public Map<String, List<News>> archiveNew() { List<String> years = newRepository.findGroupYear(); Map<String,List<News>> map = new LinkedHashMap<>(); for (String year:years){ map.put(year,newRepository.findByYear(year)); System.out.println(year); } return map; } @Override public Long countNew() { return newRepository.count(); }
ArchiveShowController
package com.zr0726.news.web; import com.zr0726.news.service.NewService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @Controller public class ArchiveShowController { @Autowired private NewService newService; @GetMapping("/archives") public String archives(Model model){ model.addAttribute("archiveMap",newService.archiveNew()); model.addAttribute("newsCount",newService.countNew()); return "archives"; } }
2.异常处理
handler.ControllerExceptionHandler
异常处理类
package com.zr0726.news.handler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; @ControllerAdvice public class ControllerExceptionHandler { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @ExceptionHandler(Exception.class) public ModelAndView exceptionHandler(HttpServletRequest request,Exception e) throws Exception{ logger.error("Request: URL: {},Exception: {}",request.getRequestURI(),e); if (AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class)!=null){ throw e; } ModelAndView mv = new ModelAndView(); mv.addObject("url",request.getRequestURI()); mv.addObject("exception",e); mv.setViewName("error/error"); return mv; } }
NotFoundException
package com.zr0726.news; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ResponseStatus; @ResponseStatus(HttpStatus.NOT_FOUND) public class NotFoundException extends RuntimeException{ public NotFoundException(){ } public NotFoundException(String message) { super(message); } public NotFoundException(String message, Throwable cause) { super(message, cause); } }
3. 登录拦截
LoginInterceptor
拦截器类
package com.zr0726.news.interceptor; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if (request.getSession().getAttribute("uer")==null){ response.sendRedirect("/admin"); return false; } return super.preHandle(request, response, handler); } }
WebConfig
package com.zr0726.news.interceptor; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginInterceptor()) .addPathPatterns("/admin/**") .excludePathPatterns("/admin") .excludePathPatterns("/admin/login"); } }
相关文章推荐
- spring boot新闻管理——异常处理和登录拦截
- [个人笔记]基于SpringBoot的新闻管理系统 归档展示/登录拦截/异常处理功能
- Spring Filter过滤器,Spring拦截未登录用户权限限制(转)
- Spring Security4.1.3实现拦截登录后向登录页面跳转方式(redirect或forward)返回被拦截界面
- 一个使用 Spring 拦截器进行登录拦截的小 Demo
- springboot+springmvc实现登录拦截
- 101008 中软实训之new delete数组+CcombBox
- ssm实现分页和拦截未登录访问(接上篇
- PHP(12) 用户登录程序(版本3)
- struts2拦截器--拦截登录框为空
- Spring Boot 学习系列之拦截器,实现用户登录拦截
- struts2拦截器配置;拦截器栈;配置默认拦截器;拦截方法的拦截器MethodFilterInterceptor;完成登录验证
- 【ssh】struts2 拦截器详解,登录拦截案例
- 解决Oracle登录报错:ORA-00257归档日志过大问题
- 【vue+axios】一个项目学会前端实现登录拦截
- vue+axios实现登录拦截的实例代码
- Struts2自定义拦截器拦截登录 推荐
- springmvc ajax 登录拦截
- spring MVC 登录拦截案列
- 12 cookie,7天免密码登录