[ Include 지시자 ]
현재의 파일에 다른 파일을 포함 시키는 지시자
고정 된 페이지를 불러와 view 창에 띄어 줄 때 유용하게 쓰인다.
<%@ include file = "포함될 파일의 로컬 url" %>
header → <%@ include file="/menu/header.jsp" %>
menu → <%@ include file="/menu/menu.jsp" %>
하단 → <%@ include file="/menu/tail.jsp" %>
변하지 않는 페이지(고정 된) 를 구현 할 때 include 지시자를 사용한다.
[ Include 액션 태그 ]
현재의 파일에 다른 파일을 포함 시키는 액션 태그
페이지가 고정 되어 있지 않아 클라이언트가 어떠한 행위를 요청 했을 때 페이지의 변화로 다양한 액션이 가능하다.
<jsp:include page =" ${view }" />
내용에 로그인을 클릭하면 로그인 창이, 회원가입을 클릭하면 회원가입창이 로그인을 완료 하였다면 메뉴가 보이게 구현
▶ header 에 로그인이 되지 않았다면 보여줄 페이지를 만들어 3번처럼 로그인이 성공하면 header에 페이지가 보이지 않게 구현 해준다.
● <c:if test="${empty sessionScope.loginId }">
세션에 로그인 아이디가 없으면 (True) 아래의 목록을 보여주고 아니라면 보여주지마라
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h3> TODAY </h3>
<c:if test="${empty sessionScope.loginId }">
<a href = "${pageContext.request.contextPath }/member/login"> 로그인 </a><br/>
<a href = "${pageContext.request.contextPath}/member/join"> 회원가입 </a>
</c:if>
</body>
</html>
▶ menu.jsp 에는 로그인이 되었다면 상세 메뉴 페이지를 보여줄 코드를 구현 해준다.
● <c:if test = "${not empty sessionScope.loginId }">
세션이 비어 있지 않고 로그인 아이디가 있다면 아래의 메뉴를 보여주어라.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h3>메뉴</h3>
<c:if test = "${not empty sessionScope.loginId }">
<a href = "${pageContext.request.contextPath }/member/myinfo?id=${sessionScope.loginId}"> 내 정보 확인 </a><br/>
<a href = "${pageContext.request.contextPath }/member/logout"> 로그아웃 </a><br/>
<a href = "${pageContext.request.contextPath }/member/out?id=${sessionScope.loginId}"> 탈퇴 </a><br/>
<a href = "${pageContext.request.contextPath }/diary/list?writer=${sessionScope.loginId}"> 일기 목록 </a><br/>
<a href = "${pageContext.request.contextPath }/diary/add"> 일기 작성 </a><br/>
</c:if>
</body>
</html>
▶ 기존의 Login servlet page의 doGet
로그인 할 폼을 보여주기 위해 "/member/login.jsp" 로 페이지 이동을 요청 하였다.
RequestDispatcher dis = request.getRequestDispatcher("/member/login.jsp");
dis.forward(request,response);
▶ include 액션 태그를 사용하기 위해 새롭게 구현 한 Login servlet page의 doGet
include 액션 태그의 위치에 보여줄 주소는 "/member/login.jsp" 이고 include 액션 태그가 나타 날 위치는 "/index.jsp"이다
request.setAttribute("view", "/member/login.jsp");
RequestDispatcher dis = request.getRequestDispatcher("/index.jsp");
dis.forward(request,response);
● request.setAttribute("view", "/member/login.jsp");
내용부분에 띄울 뷰 페이지 경로를 view 변수에 담는다. "/member/login.jsp" 이 주소를 변수 "view" 에 담는다
▶ index.jsp 에 include 액션으로 인해 페이지 교환이 일어날 곳에 <jsp:include page="${view }"/> include 액션을 작성.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h3> 복습</h3>
<table border = "1">
<tr><td colspan = "2" style = "height :150px"><h3><%@ include file="/menu/header.jsp" %></h3></td></tr>
<tr style ="height :400px"><td style ="width :150px" ><%@ include file="/menu/menu.jsp" %></td>
<td style = "width : 400px">
${msg }
<c:if test="${not empty view }">
<jsp:include page="${view }"/>
</c:if>
</td></tr>
</table>
<%@ include file="/menu/tail.jsp" %>
</body>
</html>
▶ 폼 작성이 완료 되었다면 doPost로 폼을 전송 시키고 다음 진행을 위한 코드를 구현한다.
왼쪽의 코드는 기존의 페이지를 이동해서 값을 받아 오던 서브렛 doPost 코드이고
오른쪽은 include 액션으로 인해 페이지 교환이 다시 index 로 돌아오는 서브렛 doPost 코드이다.
include 액션 태그를 사용 하면 request.setAttribute를 이용하여 요청 값을 view 에 만 담아 주기만 하면 액션 태그 한 줄로 도 페이지 교환이 가능하다.
하기 사진들의 url 이 모두 다른 것을 확인 할 수 있는 것 처럼 view 페이지 내에서 주소가 바뀐다.
'MVC > jsp & servlet' 카테고리의 다른 글
[File upload] jsp 와 Servlet 을 이용한 이미지 업로드하기 (0) | 2023.04.05 |
---|---|
[jsp와 servlet] 익명 방명록 만들기 ⑧ 비밀번호 확인 후 글 수정 (0) | 2023.03.29 |
[jsp와 servlet] 익명 방명록 만들기 ⑦ 글 번호 클릭하여 상세 보기 (0) | 2023.03.29 |
[jsp와 servlet] 익명 방명록 만들기 ⑥ 삭제 구현 하기 (0) | 2023.03.29 |
[jsp와 servlet] 익명 방명록 만들기 ⑤ 작성자로 검색하기 만들기 (0) | 2023.03.29 |