세션에 저장되어있는(=로그인된) 유저의 생년월일만 뽑아서 js에서 사용해야 하는데
jsp 바디에
<%
UserVO user = (UserVO)session.getAttribute("__LOGIN__");
Date d = user.getUserBday();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
String strd = sdf.format(d);
String[] splitStrd = strd.split("/");
String yyyy = splitStrd[0];
String mm = splitStrd[1];
String dd = splitStrd[2];
%>
로 변수를 정의하고
js에서
var yyyy ="<%= yyyy %>";
// var yyyy = <%= yyyy %>
// var yyyy = ${yyyy}
// var yyyy = "${yyyy}
var mm = "<%= mm %>";
var dd = "<%= dd %>";
이렇게 받으니 scriptlet 태그까지 문자열로 변수에 할당됨.
(주석은 다른 시도의 흔적들)
jsp의 body에 hidden으로 값을 넘기고 js에서 받기.
<input type="hidden" id="bDay" value="{__LOGIN__.userBday}">
이렇게 하고 js에서 받았는데, 값이 계속 undefined로 나왔다.
첫번째 시도했던 방법과 비슷한데, 대신 scriptlet 태그와 script의 위치를 변경해봄.
원래 scriptlet태그가 body 안에 있었는데, 이 부분을 head로 옮기고 (외부스크립트 링크보다 위쪽으로 배치)
변수선언까지 내부스크립트로 같이 진행했다.
<%
UserVO user = (UserVO)session.getAttribute("__LOGIN__");
Date d = user.getUserBday();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
String strd = sdf.format(d);
String[] splitStrd = strd.split("/");
String yyyy = splitStrd[0];
String mm = splitStrd[1];
String dd = splitStrd[2];
%>
<script>
var yyyy ="<%= yyyy %>";
var mm = "<%= mm %>";
var dd = "<%= dd %>";
</script>
<!-- 외부스크립트파일을 아래쪽에 배치 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.3.2/jquery-migrate.min.js"></script>
<link rel="stylesheet" href="../../resources/css/userCommon.css" type="text/css">
<link rel="stylesheet" href="../../resources/css/myPage.css" type="text/css">
<script src="../../resources/js/userCommon.js"></script>
<script src="../../resources/js/myPage.js"></script>
이렇게 하니까 해결됨....
그리고 변수 뒤에 선언된 외부스크립트 파일들에서는 변수명으로 바로 접근이 가능하다.
scriptlet태그가 jsp파일 내부에서만 먹히는건지.. 정확한 이유는 모르겠다 ㅠㅠ
어제 새벽부터 거의 5시간정도 매달린 것 같은데 순서문제였음...............................
++ WAS에서의 session과, 브라우저에서의 session은 다르다...
화면단에서 서버의 session 에 직접 접근할 방법은 없는듯..?