ResponseBody 에 javascript 문법을 script태그로 감싸서 반환했는데 그대로 찍혀나온다.
왜지? 그동안 responseBody의 content type는 플레인 텍스트나 json 일거라고 생각해왔다.
그게 아니었던거 같다. 정확한 확인을 위해 몇가지 검증테스트를 해보았다.



테스트 결과 String 타입의 경우 default content type 이 text/html이고, 객체로 내보냈을 땐 contentType이 application/json 이라는 것을 알 수 있었다.
나의 해결법:
수업중 중복코드 제거라는 미션이 나왔다.
정확히는 delete와 update에 심어진 다음 코드의 중복을 제거해야한다.
일단 소스중 중복되는 부분을 통짜로 Intercepter로 던져서 처리해봤다.
boolean isLogined = false;
int loginedMemberId = 0;
if (httpSession.getAttribute("loginedMemberId") != null) {
isLogined = true;
loginedMemberId = (int) httpSession.getAttribute("loginedMemberId");
}
if (isLogined == false) {
return Ut.jsReplace("F-A", "로그인 후 이용해주세요", "../member/login");
}
Article article = articleService.getArticle(id);
if (article == null) {
return Ut.jsHistoryBack("F-1", Ut.f("%d번 글은 존재하지 않습니다", id));
}


강사님의 해결법
강사님도 Interceptor을 사용하셨지만, Rq라는 세션에서 로그인 정보를 취득하는 vo를 따로 만드셨다.

로그인 여부를 파악하고 로그인 ID를 획득한다는 역할을 따로 클래스에 부여해주니 직관성이 올라간단 느낌이 들었다.
왜? 가 필요하다.
그동안 강사님하고 대화한 내용을 정리해보면
너무 특수 타겟을 노리는 주제보다 보편적 타겟을 노리는 주제가 좋으며,
그러면서도 다른 서비스와의 차별점이 있어야 하고,
그러면서도 왜 그 서비스를 해야하는지에 대한 이유도 있어야한다.
너무 조급하게 생각했더니 감정이 구겨지는거같다.
일단 조금 돌아간단 생각으로, 설날 끝나고를 목표로 천천히 생각해봐야겠다.
request.setAttribute와 Model에 넣은 데이터 모드 jsp에서는 ${attribute명}으로 검색 가능하다.