가자공부하러!

로그아웃 후 최근 방문 페이지로 돌아가기(JSP) 본문

공부/웹

로그아웃 후 최근 방문 페이지로 돌아가기(JSP)

오피스엑소더스 2019. 9. 2. 20:52

1. 원리

  > 페이지에서 contextPath, servletPath, uniCode를 기록

- uniCode : 파라미터 값(GET 메소드 한정)


2. 소스코드

  > JSP

1
2
3
4
5
6
<form action="<%=request.getContextPath() %>/logout" id="_frmLogout">
    <input type="hidden" name="contextPath" value="<%=request.getAttribute("javax.servlet.forward.context_path") %>">
    <input type="hidden" name="servletPath" value="<%=request.getAttribute("javax.servlet.forward.servlet_path") %>">
    <input type="hidden" name="uniCode" value="<%=java.net.URLDecoder.decode( (request.getAttribute("javax.servlet.forward.query_string") + "" )) %>">
    <a title="로그아웃" onclick="document.getElementById('_frmLogout').submit();">[로그아웃]</a>
</form>
cs


  > Controller

1
2
3
4
5
@RequestMapping(value = "logout")
public String logout(HttpServletRequest req,LatestURI uri) {
    req.getSession().removeAttribute("login");
    return "redirect:" + uri.getUri();
}
cs


  > LatestURI

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
32
33
34
35
36
37
38
39
40
41
42
package com.sample.app.common;
 
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
 
/**가장 마지막에 접근했던 URI로 redirect 하기 위한 클래스
 * path정보를 로그아웃 컨트롤러에 전달
 * @author mihj
 *
 */
@Getter
@Setter
@ToString
public class LatestURI {
    
    private String uri;
    private String contextPath;
    private String servletPath;
    private String uniCode;
 
    public String getUri() {
        this.uri = this.contextPath + this.servletPath;
        this.uri += ( contextPath.length() < 1 )?"":"?"+contextPath;
        
        return this.uri;
    }
    
    @Builder
    public LatestURI() { }
 
    @Builder
    public LatestURI(String contextPath, String servletPath, String uniCode) {
        super();
        this.contextPath = contextPath;
        this.servletPath = servletPath;
        this.uniCode = uniCode;
    }
    
}
 
cs




Comments