3. Back-end/3-2. Spring MVC - 남궁성

    Spring MVC - [ 로그인 시 원래 목적 페이지로 이동 ]

    홈 화면에서 만약 로그인이 안 된 상태라면, 게시판 클릭 시 로그인 페이지로 이동한다. 여기서 로그인했을 때 홈 화면이 아니라 게시판 페이지로 이동하는게 사용자 입장에서 편리할 것이다. 요청이 들어온 주소는 request.getHeader("refer") , 이동할 주소는 request.getRequestURI() 메서드를 통해 알 수 있다. (참고로 getRequestURL은 전체 주소가 다 나오고, getRequestURI는 주소가 컨텍스트 루트부터 나온다.) 필터 클래스의 doFilter 메서드안에 후처리 작업부분에 요청이 들어온 주소와 이동할 주소를 받아서 출력하도록 했다. @Override public void doFilter(ServletRequest request, ServletRespons..

    Spring MVC - [ 로그인 시 원래 목적 페이지로 이동 ]

    Spring MVC - [ Session(세션) ]

    1. 세션 세션이란 쿠키를 이용해 서로 관련된 요청들을 하나로 묶은 것과 같다. (쿠키가 브라우저에 저장되므로)브라우저마다 개별 저장소(session객체)를 서버에서 제공해 준다. 차이점을 보자면 쿠키는 브라우저에, 세션은 서버에 저장된다는 점이다. 원래 요청과 응답은 독립적이다. 그러나 요청마다 브라우저가 쿠키를 이용해 세션ID를 보내줘서, 같은 세션ID를 가진 요청들을 하나로 묶는 것과 같다. 브라우저에서 요청을 보내면 서버는 무조건 세션 객체를 생성한다.(세션마다 세션ID 가지고 있음) 그리고 세션ID를 쿠키에 담아서 브라우저에 전송한다. 그러면 다음 요청부터는 브라우저가 세션ID정보를 쿠키에 담아서 서버에 전송한다. 즉 서버는 세션ID를 통해 같은 브라우저에서 온 요청인지 아닌지 알 수 있다. 세..

    Spring MVC - [ Session(세션) ]

    Spring MVC - [ Cookie(쿠키) ]

    1. 쿠키 쿠키란 이름과 값의 쌍으로 구성된 작은 정보로 기본적으로 아스키 문자만 저장 가능하며, 한글은 URL인코딩을 해줘야 한다.(꺼낼때도 인코딩 필요) 서버에서 생성 후 브라우저에서 저장하며, 유효기간 이후에는 자동 삭제된다. 서버에 요청 시 domain과 path(하위경로까지)가 일치하는 경우에만 자동 전송된다. 2. 쿠키의 작동 과정 요청시에 쿠키가 생성되는 경우 서버가 쿠키를 생성하고, 응답헤더에 쿠키정보를 담아서 브라우저에 전송한다. 그리고 쿠키가 있는 경우에는 요청을 보낼 때 요청헤더에 쿠키가 담겨서 보내진다. 3. 쿠키의 생성 / 삭제 / 수정 1) 생성 Cookie cookie = new Cookie("id", "asdf");// 쿠키 생성 cookie.setMaxAge(60*60*24..

    Spring MVC - [ Cookie(쿠키) ]

    Spring MVC - [ redirect와 forward ]

    Redirect와 Forward Redirect는 수동으로 하는 요청1, 자동으로 보내는 요청2 총 2번의 요청이 발생하고 forward는 요청이 1번만 발생. RedirectView 클라이언트로부터 요청이 들어오면 DispatcherServlet이 받아서 컨트롤러를 호출한다. 컨트롤러에서 메서드의 반환값이 redirect:~~ 이라면, DispatcherServlet이 RedirectView로 해당 값을 전달한다. 그러면 RedirectView는 아래 사진과 같이 응답을 생성해서 클라이언트로 전달해준다. JstlView 컨트롤러에서 반환값이 뷰이름이면, 우선 DispatcherServlet이 값을 받아서 InternalResourceViewResolve한테 보낸다. 그러면 InternalResource..

    Spring MVC - [ redirect와 forward ]

    Spring MVC - [ EL표현식 + JS Template Literal ]

    우선 JS Template Literal은 내장된 표현식을 허용하는 문자열 리터럴로, 표현식/문자열 삽입, 여러 줄 문자열, 문자열 형식화, 문자열 태깅 등 다양한 기능을 제공한다. 템플릿 리터럴은 작은따옴표나 큰따옴표 대신 백틱(`)(grave accent)으로 감싸주며, ${}를 사용하여 표현식을 표기한다. 아래와 같은 코드를 보자. jsp파일 내의 js코드이다. 여기에 백틱(`)으로 감싼 템플릿 리터럴이 있다. 이 안에 msg 변수를 넣기 위해 ${msg}와 같이 사용했는데, 실행 시 서버 단->브라우저 단 순서로 실행되므로, ${msg}부분을 서버가 EL표현식으로 해석해서 원하는 msg변수의 값이 나타나지 않는다.. function setMessage(msg, element){ document.g..

    Spring MVC - [ view-controller / servlet-context.xml]

    컨트롤러에서 아래와 같은 코드 대신 @GetMapping("/register/add") public String register() { return "registerForm"; // WEB-INF/vies/registerForm.jsp } servlet-context.xml 파일에서 아래와 같이 view-controller 태그로 한 줄로 등록해서 사용할 수 있다. view-controller는 POST는 허용하지 않고, GET 요청만 허용한다. /register/add 로 들어오는 주소를 registerForm.jsp 뷰 파일로 이동시킨다. 그리고 servlet-context.xml 파일의 상단을 보면 아래와 같이 beans 태그에 xmlns, xsi 등 여러 코드들이 들어있다. 이는 : 뒤의 스케마의..

    Spring MVC - [ view-controller / servlet-context.xml]