How can I avoid the duplicate code of mapping in Spring project?

hong developer :

I am currently mapping pages using Page Controller.

Every page needs to check for Session, which is a duplicate code.

How do I avoid duplicating this code?

@Controller
public class PageController {
...
    @RequestMapping("/view/List")
    public String list(Map<String, Object> model) {
        String session_chk = Utils.SessionCheck(); 
        if(session_chk.equals("none")){
            return "/view/manager/Login";
        }

        return "/view/member/List";
    }

    @RequestMapping("/view/Detail")
    public String detail(Map<String, Object> model) {
        String session_chk = Utils.SessionCheck();
        if(session_chk.equals("none")){
            return "/view/manager/Login";
        }

        return "/view/member/Detail";
    }
...
user7294900 :

Add a filter which will redirect, and add check

@Component
public class SessionFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
    if (!request.getRequestURI().contains("view/manager/Login") && "none".equals(Utils.SessionCheck())) {
      httpResponse.sendRedirect("view/manager/Login.jsp");
      //....
    } else {
      doFilterInternal(request, response, filterChain);
    }
}

You can add it to all urls:

FilterRegistration sessionFilter = servletContext.addFilter("SessionFilter", SessionFilter.class);
sessionFilter.addMappingForUrlPatterns(null, false, "/*");

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=127362&siteId=1