您的位置:首页 > 编程语言 > Java开发

Springboot项目-归档+异常处理+登录拦截

2020-08-03 20:59 302 查看

1.归档功能

一、NewRepository

sql查询功能,来查询相关的归档数据

[code]
@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

服务功能的接口

[code]    Map<String,List<News>> archiveNew();

Long countNew();

三、NewServiceImpl

用map结构将归档字符串和对应的数据存储起来

[code]    @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

[code]package com.whut.news.web;

import com.whut.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

[code]package com.whut.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("user")==null){
response.sendRedirect("/admin");
return false;
}
return super.preHandle(request, response, handler);
}
}

二、NotFoundException

[code]package com.whut.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

[code]package com.whut.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("user")==null){
response.sendRedirect("/admin");
return false;
}
return super.preHandle(request, response, handler);
}
}

二、WebConfig

[code]package com.whut.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");
}
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐