일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 톰캣
- Linux
- lombok
- indexof
- 최대최소
- vi
- login
- String
- new
- CentOS
- java
- 권한부여
- 배열
- 새글
- ip체크
- Spring
- session
- 자바
- Timeout
- SAMBA
- Interceptor
- springboot
- new아이콘
- 정해진기간동안
- swagger
- Iterator
- Log4j
- 접속권한
- tomcat
- Today
- Total
Cheat Sheet
#Interceptor #login #spring 본문
Interceptor : controller에 요청이 도달하기전 수행하거나, 도달한 뒤에 수행하는 것
주로, 로그인체크를 할 때 쓰인다.
페이지에 접속할때 로그인유무를 파악하고 로그인이 되있지 않으면 로그인화면으로 넘기는 식으로 많이 사용하는 것 같다.
Interceptor은 HandlerInterceptor 인터페이스를 상속받은 HandlerInterceptorAdapter클래스를 상속받아 사용하는데
3가지 메소드가 존재한다.
* public boolean preHandle() : 요청이 들어오고 controller로 요청이 가기전 수행할 코드 작성
* public void postHandle() : 요청이 controller의 로직을 수행하고 나서 dispatcherservlet에 도달하기전 수행할 코드 작성
* public void afterCompletion() : 요청이 들어와 모든 작업이 완료되고 수행
** Interceptor를 사용하기 위해서는 spring Project에서 해야한다.
Interceptor를 수행할 class 생성 후, HandlerInterceptorAdapter상속과 메소드 오버라이드
package com.mycompany.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import com.mycompany.myapp.HomeController;
public class LoginInterceptor extends HandlerInterceptorAdapter{
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
logger.info("=============================== START =================================");
return super.preHandle(request, response, handler);
}//end preHandle()
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response,
Object handler, ModelAndView modelAndView) throws Exception {
logger.info("============================== postHandle ===============================");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) throws Exception {
logger.info("========================= afterCompletion ===============================");
super.afterCompletion(request, response, handler, ex);
}
}//end class
servlet-context.xml에 interceptor 등록
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**" />
<beans:bean id="loginInterceptor" class="com.mycompany.interceptor.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
모든 요청에 대하여 com.mycompany.interceptor.LoginInterceptor경로에 있는 interceptor를 수행
HomeController.java
package com.mycompany.myapp;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/home", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,
DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
return "home";
}//end home()
@RequestMapping("/login")
public String login() {
return "login";
}//end login()
}//end class
/home으로 들어오는 요청에 대하여 아래 로직을 수행하고 home.jsp를 호출
home.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Home</title>
</head>
<body>
<h1>
Hello world!
</h1>
<P> The time on the server is ${serverTime}. </P>
</body>
</html>
결과화면
경로
톰캣정보
'Back End > 프레임워크' 카테고리의 다른 글
#SpringBoot #Swagger (0) | 2023.09.08 |
---|---|
#SpringBoot #lombok (0) | 2023.09.08 |
#Spring Boot #log4j (0) | 2023.09.08 |
#HttpServletRequest # RequestParam #데이터객체 #ModelAttribute #Model (0) | 2018.08.29 |
#CKEditor #이미지업로드 (0) | 2018.08.08 |