Ajax, Interceptor

기록지·2021년 6월 2일
2

교육

목록 보기
7/14
post-thumbnail

Q. 로그인페이지에서 바로 index.jsp 로 가는이유는?
Server(Tomcat) web.xml 에서 설정해주었기 때문에

Q. index.jsp를 검색하면(enter를 눌렀을 때) url값이 자동으로 popup으로 바뀌는 이유?
index.do에서 c:redirect로 설정해주었기 때문에

<c:redirect url="/index.do?popup=${param.popup}" />

Q. Config.xml 이 필요한 이유?
Config파일에서 변경된 데이터 값은 굳이 controller단에서 변경없이 사용가능하기 때문에

int RETRY_CNT = AConfig.getInt("retry_cnt");//count

즉, RETRY_CNT값은 AConfig파일의 getInt메소드를 통해서 int로 변환된다

Q. Login을 하지않으면 index.do를 검색해도 로그인화면이 그대로 뜨는이유?
Login을 할때 LoginInterceptor(Servlet-context.xml에서
<mvc:interceptor>에서 <mvc:mapping path="/*"/> 를 작성하여 /다음에 모든 부분에 Interceptor가 작동할 수 있게 함
)에서 받아들여 sendRedirect로 login.do로 가기때문에


Query String

사용자가 입력 데이터를 전달하는 방법중에 하나로 url주소에 미리 협의된 데이터를 파라미터를 통해 넘기는 것을 의미한다.


인터셉터는 중간에 가로챈다는 의미를 가진다. 스프링에서도 말 그대로 중간에 요청을 가로채서 Controller 공통로직을 처리한다.

Interceptor 처리과정

1. Maven Dependencies에 추가해준다

<properties>
    <org.springframework-version>4.0.6.RELEASE</org.springframework-version>
    <jstl-version>1.2</jstl-version>
    <servlet.api-version>3.1.0</servlet.api-version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>${jstl-version}</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${servlet.api-version}</version>
    </dependency>
     
</dependencies>

2. 내가 원하는 Interceptor.class 생성

HandlerInterceptorAdapter를 상속하는것을 알 수 있다.

package com.ABC.rednics.tutorial.spring.webmvc.interceptor;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
public class ABCInterceptor extends HandlerInterceptorAdapter {
 //여기서 HandlerInterceptorAdapter 상속
    @Override
    public boolean preHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle executed");
        return true;
    }

3. spring-mvc.xml 설정

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/*/*" /> <!-- 모든 URL 에 대해 Interceptor 를 적용하고자 한다면 /** -->
        <mvc:mapping path="/*" />
        <bean class="com.ABC.rednics.tutorial.spring.webmvc.interceptor.ABCInterceptor"/> <!-- HandlerInterceptor 인터페이스를 구현한 클래스 -->
    </mvc:interceptor>
</mvc:interceptors>
 
<!-- 모든 요청에 적용하는 Interceptor 설정 -->
<!--
<mvc:interceptors>
    <bean class=""/>
</mvc:interceptors>
 -->

var test = {
					"loginOpt" : "test"
			}
			
			console.log(test)
			console.log(test.loginOpt)
			console.log(test.loginUrl)
			

console 첫번째 값은 loginOpt: "test" ,
console 두번째 값은 test,
console 세번째 값은 undefined 가 나온다.


2개의 댓글

인터셉터 크 멋져부러요

답글 달기
comment-user-thumbnail
2021년 6월 3일

와우 내용이 알차네요

답글 달기