Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- javascript
- 정의
- jQuery
- 개념
- was
- POI
- Ajax
- sql
- Oracle
- 과정평가형
- json
- CSS
- 함수
- 암호화
- input
- eGovFramework
- 오류
- 태그
- JVM
- jsp
- web.xml
- eGov
- array
- select
- spring
- Java
- mybatis
- html
- controller
- TO_DATE
Archives
- Today
- Total
web developer
[java] 로그인 시 HttpSession에 저장한 사용자 정보, JSP EL로 어디서나 접근하기 본문
728x90
728x90
로그인 시 HttpSession에 userinfo 객체를 저장했다면, 같은 세션을 공유하는 모든 요청에서 JSP에서 ${userinfo.user_id}로 접근 가능합니다. 즉, 사용자가 로그인한 뒤, userinfo가 세션에 저장되었다면, board.do이든 board_view.do이든 요청 경로와 상관없이 동일한 세션에 저장된 데이터를 사용할 수 있습니다.
HttpSession은 사용자와 서버 간의 지속적인 상태를 관리하는 객체입니다. 사용자가 로그인 시점에 userinfo를 세션에 저장했다면:
- 세션의 유지:
- 브라우저는 세션 ID를 쿠키에 저장하고, 모든 요청마다 이 세션 ID를 서버로 전달합니다.
- 서버는 전달받은 세션 ID를 통해 해당 사용자의 HttpSession 객체를 식별하고, 저장된 데이터를 제공합니다.
- 공통 데이터 접근:
- 세션에 저장된 데이터는 사용자의 모든 요청에서 접근 가능합니다.
- JSP에서 ${userinfo}를 통해 세션에 저장된 데이터를 EL(Expression Language)을 사용해 바로 읽을 수 있습니다.
로그인 처리 코드 (LoginController.java):
@RequestMapping("/login.do")
public String login(HttpServletRequest request, Model model) {
UserInfo userinfo = userService.authenticateUser(request.getParameter("username"), request.getParameter("password"));
if (userinfo != null) {
HttpSession session = request.getSession();
session.setAttribute("userinfo", userinfo); // 세션에 저장
return "redirect:/m86.do"; // 로그인 성공 시 페이지 이동
} else {
model.addAttribute("errorMessage", "Invalid username or password");
return "login";
}
}
JSP 코드
<c:if test="${not empty userinfo}">
<p>안녕하세요, ${userinfo.user_id}님!</p>
</c:if>
<c:if test="${empty userinfo}">
<p>로그인이 필요합니다.</p>
</c:if>
주의할 점
- 로그인하지 않은 상태:
- HttpSession에 userinfo가 설정되지 않았다면, JSP에서 ${userinfo.user_id}는 null을 반환하거나, 접근 시 NullPointerException을 발생시킬 수 있습니다.
- 이를 방지하려면 JSP에서 null 체크를 추가하는 것이 좋습니다.
- 세션의 만료:
- 사용자가 로그인 후 일정 시간이 지나 세션이 만료되면, userinfo 데이터에 접근할 수 없게 됩니다. 이 경우, 사용자에게 다시 로그인하도록 안내해야 합니다.
- 세션 충돌:
- 동일 브라우저에서 다른 계정을 사용해 로그인하면 이전 세션 데이터가 덮어씌워질 수 있습니다. 이를 방지하려면 세션 관리에 신경 써야 합니다.
결론
session.setAttribute("userinfo", userinfo);를 통해 세션에 userinfo를 저장했다면, 세션이 유지되는 한 모든 JSP에서 ${userinfo.user_id}와 같이 접근할 수 있습니다. 다만, 로그아웃 처리나 세션 만료 시에는 이에 대한 대처를 해주는 것이 좋습니다.
728x90
728x90
'Language > Java' 카테고리의 다른 글
[java] Form 전송 시 트랜잭션 예외 발생에 따른 PrintWriter를 통한 업데이트 실패 알림 및 페이지 이동 처리 (2) | 2024.10.29 |
---|---|
[java] AJAX 통신에서 Impl의 트랜잭션 예외 발생 시 예외 처리와 롤백 처리 (2) | 2024.09.24 |
[java] try-catch를 이용한 직접 예외 처리와 @ControllerAdvice를 통한 공통 예외 처리 (1) | 2024.09.19 |
[java] 세션(Session)이란? (0) | 2024.09.11 |
[java] JSON 데이터 파싱 (1) | 2024.09.10 |