인프런 커뮤니티 질문&답변

주아아빠님의 프로필 이미지
주아아빠

작성한 질문수

토비의 스프링 부트 - 이해와 원리

spring url 리다이렉트/포워딩 기술적 문의 드립니다

작성

·

1K

0

spring url 리다이렉트/포워딩 기술적 문의 드립니다

안녕하세요 김동희입니다

제가 공공기관 프로젝트에 개발자로 참여중입니다

이쪽프로젝트 환경은

jsp + 전자정부프레임웍(Spring) + html + postgre(db) 입니다

이쪽 pm 이 알아봐달라고 부탁하는 사항이 있고,

제가 생각하기에도 궁굼해서

혹시 이런부분이 될런지 문의 드립니다

메인 정부기관 홈페이지는 아래입니다

ex)

https://www.url01.urlcom

각 전국 지역별(강원,인천,제주..) 지자체관 별로

별도로 지역별 블로그 형식으로 지자체관 형식을 뛰웁니다

ex) 강원특별자치도 인제군 지자체관

https://www.url01.urlcom/xxx/xxx/xxxx/xxxxx/infoMain.do?ctpv=6420000&sgg=4330000

하지만, 고객(공무원)측에서 url 하위로 깔리는 url 변수를 보여주지 말라

지자체관별로 단축 url 을 사용 할 수 있게 해달라고 합니다

as-is https://www.url01.urlcom/xxx/xxx/xxxx/xxxxx/infoMain.do?ctpv=6420000&sgg=4330000

to-be https://www.url01.urlcom/injegun

혹시 요청이 현재 spring(전자정부프레임웍) + jsp

+ tiels 환경에서

이 환경에서 고객(공무원) 들의 요청을 수렴해서

반영 할 수 있을지 모르겠습니다

AA,TA 적인 기술적인 측면에서

스프링의 config 또는 다른설정값 변경, 인터셉터변경, ~Controller~.java 변경

~tiles.xml 변경 등을 통해서 가능 할까요?

염치 불구하고 저도 이런부분이 궁금하기도 해서 문의 드립니다

김동희 드림

 

답변 1

1

토비님의 프로필 이미지
토비
지식공유자

상세 파라미터가 외부로 공개되지 않고 특정 단어로 들어가도 원래 파라미터/url 값이 있는 것처럼 동작하게 해달라는 말씀이네요.

단축 url은 그걸로 들어가면 다시 원래 url로 redirect되는 방식입니다. 외부에 공개하는 첫 단계만 단축이고, 이후엔 다시 풀 url이 다 보이게 되는 거죠. 파라미터 값을 절대 알려주면 안 된다면 이건 단축 url 수준을 넘어서는 것이네요.

단순 단축 url이라면 url 매핑정보(injegun -> xxx/xxx/xxxx/xxxxx/infoMain.do?ctpv=6420000&sgg=4330000)를 설정 파일이든 db에든 넣어놓고, injegun으로 들어왔을 때 db에서 실제 url를 꺼내서 스프링 mvc의 redirect 기능을 쓰면 됩니다.

만약 사용자에게 절대 파라미터 값이 보여서는 안 된다라면 파라미터 값까지 다 저장해두고 그걸 꺼내서 쓰도록 해야 하고요.

구현은 어떻게든 하면 됩니다. 방법은 너무 많고요.

스프링에서 웹 redirect라는 걸 어떻게 하는지 찾아보세요. 그리고 매핑 정보를 지정할 방법도요.

정말 구현을 못하겠다 싶으면, 이렇게까지 하라고 하고 싶지 않지만, 최후의 방법으로 컨트롤러 코드에다가 일일히 박아 넣는 방법도 있습니다만.

실제 구현까지는 해야할 작업이 꽤 될텐데, 아무래도 주변에 잘하시는 분의 도움을 받으시는 게 좋을 것 같습니다.

주아아빠님의 프로필 이미지
주아아빠
질문자

감사합니다 토비님!!

토비님이 말씀하신 부분은 이해했습니다

컨트롤러 까지는 말씀 해주신 대로

db에 매핑 테이블을 가져가고

그 db에서 매핑할 주소값을 가지고 컨트롤러에서 리턴해준다

이해됩니다, 하지만 추가적으로

as-is

https://www.url01.urlcom/xxx/xxx/xxxx/xxxxx/infoMain.do?ctpv=6420000&sgg=4330000

ex) infoMain.doctpv=6420000&sgg=4330000 => infoMain.jsp 로 연결

to-be

https://www.url01.urlcom/충정도

~Controller~.java에서

mvc 이용해서 리턴 값을 infoMain.jsp 넘기지만

고객(공무원)들이 눈에 볼 때는 브라우저 url 주소에는

https://www.url01.urlcom/xxx/xxx/xxxx/xxxxx/infoMain.do?ctpv=6420000&sgg=4330000

이 굵은 글씨의 url 주소가 아니라 예를 들면

https://www.url01.urlcom/충청도 => 이렇게 "충청도" 보여야 합니다

infoMain.jsp mvc로 던지지만 어떻게 "https://www.url01.urlcom/충청도" 보이게 할 수 있을까?

이분을 어떻게 처리해야 할지 방법을 모르겠습니다 .

항상 친절하게 자세히 설명해주셔 감사드립니다 토비님!!

토비님의 프로필 이미지
토비
지식공유자

원하시는 방법은 근본적으로 불가능합니다. 웹 컨트롤러는 URL에 매핑되어야 하기 때문이고, URL은 사용자 눈에 보여야 합니다.

억지로 만든다면 POST로 해서 파라미터가 안 보이게 하는 방법. 쿠키나 헤더에 파라미터를 넣는 방법인데, 이것도 infoMain.do가 받는 경우에 뒤의 파라미터 값 정도만 눈에 안 보이게 할 뿐입니다.

그게 아니라면 infoMain.do에 들어간 모든 기능을 "충청도"등으로 매핑되는 컨트롤러 다 복사해서 넣어주고 파라미터도 지정해야 합니다.

근본적으로 요구사항이 무리입니다. 잘 설득해보시기를 바랍니다.

토비님의 프로필 이미지
토비
지식공유자

infoMain.do도 다 뜯어고칠 수 있다면 그 컨트롤러로 매핑되는 url에 충청도도 추가할 수 있습니다. 그리고 나서 path를 가져와 이게 충청도로 들어온 것이구나라고 판단하는 방법이 있긴한데, 그럴거면 infoMain.do 자체를 다른 방식으로 설계해서 고쳐야 할 겁니다.

관련된 코드를 상세히 공유해주시지 않는 이상 더 이상의 답은 드리기가 어렵겠네요.

주아아빠님의 프로필 이미지
주아아빠
질문자

토비님 답변 감사드립니다. 제가 아래 처럼 생각을 해봤습니다

테스트 코드 만들어서 해보기전에 다시 질문 드립니다

고객(공무원)들이 눈에 아래 url 주소로 보여 줘야 하니까

https://www.url01.urlcom/충청도

지자체 별로 노가다로 100개는 안넘을 테니

충청도.jsp 는 이런식으로 각각 jsp 는 만들어주고

충청도.jsp 안에는

<jsp:include page="./xxx/xxx/xxxx/xxxxx/infoMain.jsp"></jsp:include>

원래 호출되야할 jsp를 include 시키는 건 어떨까요?

 

토비님

제가 혹시라도 도를 넘어서 과하게 질문 드린다면 더이상 답변 주시지 않아도 됩니다

 

제가 모르던 부분을 개발자 선배님들에게 가이드 설명 받는 것으로만 해도 영광입니다

감사합니다 수고하세요

토비님의 프로필 이미지
토비
지식공유자

include를 써본지 오래돼서 이게 페이지 내부에 적용이 잘 되는가 모르겠는데, 그게 된다면 말씀하신 방식으로 하드코딩하는게 속편할 것 같네요. 좋은 생각입니다.

토비님의 프로필 이미지
토비
지식공유자

원래 .do라고 되어있어서 컨트롤러로 받는가 했는데 .jsp도 있군요.

주아아빠님의 프로필 이미지
주아아빠
질문자

토비님 감사합니다 ^^

스프링, 스프링 부트 말고도 다른 좋은 강의

개인적인 바램은 리액트,뷰, .. 프론트 쪽도 해주시면 좋겠습니다 ...

테슨트 코드 만들어보고 좋은 결과가 나오면 공유하겠습니다

감사합니다. 좋은 하루 보내세요

토비님의 프로필 이미지
토비
지식공유자

성공하시면 꼭 남겨주세요.

토비님의 프로필 이미지
토비
지식공유자

어떻게 됐는지 알려주세요

주아아빠님의 프로필 이미지
주아아빠
질문자

안녕하세요 토비님

멋지게 제가 생각한 방법으로 성공하고 싶었지만

그렇게 되지 않았습니다. ㅠㅠ

 

https://www.url01.urlcom/충청도 를 위해서

충청도.jsp 안에는

<jsp:include page="./xxx/xxx/xxxx/xxxxx/infoMain.jsp"></jsp:include>

하면

인클루드를 하더라도

결국 호출 브라우저 url 주소에 비춰지는건 으로 연결 되더라구요

https://www.url01.urlcom/xxx/xxx/xxxx/xxxxx/infoMain.jsp

이쪽에 JSP 한페이지를 쪼개서 디자인을 잡는 ~tiles.xml 을 써서 그런지 모르겠어요

예를들면 ( infoMain.jsp => tiles 타일쪼개서 header.jsp, body.jsp , footer.jsp 를 쓰고 있네요 )

 

제가 최종 선택한 방법은 pm 님과 얘기해서

https://www.url01.urlcom/충청도 ==> 이거 대신에

 

이렇게 하면 상위 root 쪽에 보기 싫은

파일이 지차체 별로 파일이 많이 필요하니

 

이거 대신에 "지차체" 하위 "충정도" 이런식으로 하겠다 보고 하고 작업 중입니다

https://www.url01.urlcom/지자체/충청도

(서울/세종시/충청도... JSP 페이지는 여러개로 만들어야죠 )

 

토비님이 조언 해주신대로 컨트롤로도 수정 필요하구요

괜히 토비님을 궁굼하게 설레개 했나 모르겠네요

 

항상 수강생들에게 친절히 설명해 주시고 관심가져

주셔서 고맙고 감사드립니다.

 

바쁘실 테지만 만약 여유 시간이 나신다면

타임어택 유튜브 영상,

다른 프폰트앤드( react, vue, node, TS, JS) 강의도 부탁드려요

토비님 같은 고수, 장인, 프로는 어떻게 설명 공유해 주실까 생각하면 설레내요

주아아빠님의 프로필 이미지
주아아빠
질문자

토비님 드디어

문제가 해결되어서

내용 공유합니다

토비님의 다른 강의 기다립니다image

주아아빠님의 프로필 이미지
주아아빠

작성한 질문수

질문하기