복습
MVC
M(Model)
- 비즈니스 로직 담당. DB 작업과 Controller에 제공할 기능 구현.
- JAVA -- Vo, Dao, Service
C(Controller)
- 요청 받아서 흐름을 제어.
- 폼 파라메터 값 읽기 -> Service 객체 생성해서 요청한 기능 실행 -> 뷰 페이지를 전달 (forward, redirect 방식)
- JSON -- 데이터 표현 방법으로 많이 쓰임. 중요! [배열] {객체}
V(View)
- 뷰 페이지
- JSP -- html, css, javascript, ajax, jquery
Servlet : JAVA code, http(웹 개발이 가능한 API 제공)
request : 요청 담당.
- 요청 종류(url), 폼파라메터 값 읽기, 한 요청에서 사용되는 데이터 저장, 저장된 데이터 읽기, 서버 내에서 페이지 이동 (forward)
response : 응답 담당.
- 응답으로 보낼 웹 페이지 생성해서 클라이언트에 전달. 쿠키를 response에 추가.
- 응답 페이지의 마임 타입을 변경하여 파일 다운로드. redirect로 클라이언트에 새 요청을 시키는 작업.
* 클라이언트 작업을 기억시키기
session - 서버에 저장.
- Servlet -- session.setAttribute(키, 값), session.getAttribute(키)
- JSP -- ${sessionScope.키}
Cookie - 클라이언트 컴퓨터에 저장.
- Servlet -- Cookie c = new Cookie(키, 값), response.addCookie(c). request.getCookies();
- JSP -- ${cookie.키.name}, ${cookie.키.value}
<c:if test = "조건">
조건 만족시 실행할 내용
</c:if>
<c:if test="${empty sessionScope.loginId}">
<a href="${pageContext.request.contextPath }/member/login">로그인</a>
</c:if>
<c:if test="${not empty sessionScope.loginId}">
<a href="${pageContext.request.contextPath }/member/logout">로그아웃</a>
</c:if>
변수 선언 태그
<c:set var="변수명">값</c:set>
<c:if test="${sessionScope.loginId!=vo.writer}">
<c:set var="str">readonly</c:set>
</c:if>
<input type="text" name="title" value="${vo.title}" ${str}>
<-- 로그인한 아이디와 작성자가 다르면 코드에 readonly뜨고, 같으면(값이 없으면) 뜨지 않음 -->
0. 총 코드
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>게시판</h3>
<!-- if test = "true/false 나올만한 수식" -->
<!-- c:if 는 else가 없음 -->
<!-- empty : 값이 있는지 없는지 -->
<c:if test="${empty sessionScope.loginId}">
<!-- 로그인값이 비어있으면 로그인창 보여주기 -->
<a href="${pageContext.request.contextPath }/member/login">로그인</a>
</c:if>
<c:if test="${not empty sessionScope.loginId}">
<a href="${pageContext.request.contextPath }/member/logout">로그아웃</a>
<br />
<a href="${pageContext.request.contextPath }/member/myinfo?id=${sessionScope.loginId}">내정보확인</a>
<br />
<a href="${pageContext.request.contextPath }/member/out?id=${sessionScope.loginId}">탈퇴</a>
<br />
<a href="${pageContext.request.contextPath}/board/list">글목록</a>
<br />
</c:if>
</body>
</html>
list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>글목록</h3>
<a href="${pageContext.request.contextPath}/board/add">글작성</a>
<c:if test="${empty list}">
작성된 글이 없습니다.
</c:if>
<c:if test="${not empty list}">
<table border="1">
<tr><th>글번호</th><th>제목</th><th>작성자</th></tr>
<c:forEach var="vo" items="${list}">
<tr>
<td>${vo.num}</td>
<td><a href="${pageContext.request.contextPath}/board/detail?num=${vo.num}">${vo.title}</a></td>
<td>${vo.writer}</td>
</tr>
</c:forEach>
</table>
</c:if>
</body>
</html>
detail.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:if test="${sessionScope.loginId!=vo.writer}">
<c:set var="str">readonly</c:set>
</c:if>
<h3>글 상세페이지</h3>
<a href="${pageContext.request.contextPath}/board/list">글목록</a><br/>
<form action="${pageContext.request.contextPath}/board/detail" method="post">
<table border = "1">
<tr><th>글번호</th><td><input type="number" name="num" value="${vo.num}" readonly></td></tr>
<tr><th>작성자</th><td><input type="text" value="${vo.writer}" readonly></td></tr>
<tr><th>작성일자</th><td><input type="date" value="${vo.w_date}" readonly></td></tr>
<tr><th>제목</th><td><input type="text" name="title" value="${vo.title}" ${str}></td></tr>
<tr><th>내용</th><td><textarea name = "content" row="10" cols="30" ${str}>${vo.content}</textarea></td></tr>
</table>
<c:if test="${sessionScope.loginId==vo.writer}">
<input type="submit" value="수정">
<input type="button" value="삭제" onclick="location.href = '${pageContext.request.contextPath}/board/del?num=${vo.num}'">
</c:if>
</form>
</body>
</html>