회원과 게시판 — 실습
로그인 가드를 인터셉터로 자동화. 헤더는 공통 JSP 로 분리.
-- 표시용 닉네임 컬럼 추가
ALTER TABLE mymember ADD COLUMN nick VARCHAR(30) AFTER pwd;
-- 기존 회원에게 임시 nick 채우기
UPDATE mymember SET nick = id WHERE nick IS NULL;
// com.smhrd.domain.Member — 필드 추가
@Data @AllArgsConstructor @NoArgsConstructor
public class Member {
private String id;
private String pwd;
private String nick; // ← 추가
}
DESC mymember; 에 nick varchar(30) 이 보이는가?// com.smhrd.interceptor.LoginInterceptor
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object h)
throws Exception {
HttpSession session = req.getSession();
if (session.getAttribute("loginUser") == null) {
resp.sendRedirect(req.getContextPath() + "/login");
return false; // 컨트롤러 호출 안 함
}
return true;
}
}
<!-- servlet-context.xml -->
<interceptors>
<interceptor>
<mapping path="/board/write"/>
<mapping path="/mypage/**"/>
<beans:bean class="com.smhrd.interceptor.LoginInterceptor"/>
</interceptor>
</interceptors>
<!-- header.jsp (공통) -->
<c:choose>
<c:when test="${not empty sessionScope.loginUser}">
${sessionScope.loginUser.nick}님 |
<a href="/logout">로그아웃</a>
</c:when>
<c:otherwise>
<a href="/login">로그인</a>
</c:otherwise>
</c:choose>
<!-- board/list.jsp -->
<%@ include file="/WEB-INF/views/header.jsp" %>
... 본문 ...
로그아웃 상태에서 보호 URL 직접 접근 → 자동 리다이렉트 확인.
/board/write 직접 접속 시 — F12 Network 응답 Status 302, Location 이 /login 인가?${nick}님 이 표시되는가?