열심히 끝까지
디바이스 융합 자바(Java) day50 - 회원가입 새 창 띄우기,더보기 갯수 한 곳에서 지정,커스텀태그 본문
디바이스 융합 자바(Java)기반 풀스택 개발자 양성과정(수업내용)
디바이스 융합 자바(Java) day50 - 회원가입 새 창 띄우기,더보기 갯수 한 곳에서 지정,커스텀태그
노유림 2022. 8. 22. 17:55>> 지난 번 과제 해설
1. cnt=2(index.jsp)
글 -> 메인
댓글, 좋아요 -> 현재 글 기억해야 할 필요가 있으므로 forward 사용
2. 더보기
index
메인페이지 - 메인으로
그 뒤로 변경된 사항
1. 로그인, 글&댓글 작성/삭제 부분
2. 회원가입을 위한 새 창 띄우기
3. 더보기 개수를 ctrlB에서 지정
>> 변경된 후 추가/변경 코드
ctrlB.jsp--------------------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="board.*,java.util.ArrayList"%>
<jsp:useBean id="bDAO" class="board.BoardDAO" />
<jsp:useBean id="bVO" class="board.BoardVO" />
<jsp:useBean id="rVO" class="board.ReplyVO" />
<jsp:useBean id="bBS" class="board.BoardSet" />
<jsp:setProperty property="*" name ="bVO" />
<jsp:setProperty property="*" name ="rVO" />
<jsp:setProperty property="*" name ="bBS" />
<%
String action = request.getParameter("action");
// >> 바뀐 부분----
String paramCnt=request.getParameter("cnt");
if(paramCnt==null) {// cnt 파라미터에 정보가 있어?
bVO.setCnt(2);//없다면 기본값(2)으로 설정해줘!
// -> 향후 초기화 매개변수로 설정도 가능!
}
//------------------
System.out.println("로그 : " + action);
System.out.println("cnt : " + bVO.getCnt());
// 메인======================================
if (action.equals("main")) {
ArrayList<BoardSet> datas = bDAO.selectAll(bVO);
request.setAttribute("datas", datas);
request.setAttribute("cnt", bVO.getCnt());
pageContext.forward("main.jsp");
}
// 글 추가====================================
else if(action.equals("insertB")){
if (bDAO.insert(bVO)) {
response.sendRedirect("ctrlB.jsp?action=main");
} else {
throw new Exception("binsert 오류");
}
}
// 글 삭제====================================
else if (action.equals("deleteB")) {
if (bDAO.delete(bVO)) {
response.sendRedirect("ctrlB.jsp?action=main");
} else {
throw new Exception("bdelete 오류");
}
}
// 댓글 추가==================================
else if(action.equals("insertR")){
if (bDAO.insertReply(rVO)) {
pageContext.forward("ctrlB.jsp?action=main");
} else {
throw new Exception("rinsert 오류");
}
}
// 댓글 삭제====================================
else if (action.equals("deleteR")) {
if (bDAO.deleteReply(rVO)) {
pageContext.forward("ctrlB.jsp?action=main");
} else {
throw new Exception("rdelete 오류");
}
}
// 좋아요 추가====================================
else if(action.equals("fav")){
if(bDAO.update(bVO)){
pageContext.forward("ctrlB.jsp?action=main");
}else{
throw new Exception("fav 오류");
}
}
%>
main.jsp--------------------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="ryo" tagdir="/WEB-INF/tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>메인 페이지</title>
<script type="text/javascript">
function sign(){
<!-- 회원가입 시 새 창 띄우기 -->
window.open("sign.jsp","회원가입 페이지", "width=500,height=200");
}
</script>
</head>
<body>
<div id="header">
<h1>멍냥스토어</h1>
<div class="gnb"><!-- 네비게이션바 class로 자주 지정 -->
<ul>
<ryo:login /> <!-- 커스텀태그 변경 -->
<li><a href="ctrlB.jsp?action=main">메인으로</a></li>
</ul>
</div>
</div>
<div id="wrapper">
<div id="content">
<h2>글 등록하기</h2>
<ryo:write type="msg"/> <!-- 글 등록 커스텀태그 -->
<!-- 회원만 글 등록이 가능하도록 설정 -->
<!-- 만약 로그인을 하지 않았다면, 로그인한 후에 이용하세요! -->
</div>
<div id="main">
<h2>글 목록보기</h2>
<c:forEach var="v" items="${datas}">
<!-- v -> v.boardVO v.rList -->
<c:set var="b" value="${v.boardVO}"/>
<!-- 글 삭제 커스텀태그 -->
<h3>[${b.mid}] ${b.msg} [좋아요 ${b.favcnt} | 댓글 ${b.rcnt }] <ryo:deleteB midCheck="${b.mid}" bid="${b.bid}"/></h3>
<div class="reply">
<ul>
<c:forEach var="r" items="${v.rList}">
<!-- 댓글 삭제 커스텀태그 -->
<li>[${r.rid}] ${r.rmsg} <ryo:deleteR midCheck="${r.mid}" rid="${r.rid}" /> </li>
</c:forEach>
</ul>
</div>
<div class="reply">
<ryo:write type="rmsg"/><!-- 글 등록 커스텀태그 -->
</div>
</c:forEach>
</div>
<a href="ctrlB.jsp?action=main&cnt=${cnt+2}">더보기↓>></a>
</div>
<hr>
<div id="footer">
회사소개 | 이용약관 | <strong>개인정보처리방침</strong> | 정책 | 고객센터 <strong>ⓒ Corp.</strong>
</div>
</body>
</html>
write.tag--------------------------
<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ attribute name="type" %>
<%@ attribute name="mid" %>
<!-- 이 커스텀태그를 잘 가져오려면 type을 가져와서 인식해야한다. -->
<c:if test="${mid != null}">
<form action="ctrlB.jsp" method="post">
<input type="hidden" name="mid" value="${mid}">
<c:choose>
<c:when test="${type=='msg'}">
<input type="hidden" name="action" value="insertB">
<input type="text" name="msg">
<input type="submit" value="글 등록">
</c:when>
<c:when test="${type=='rmsg'}">
<input type="hidden" name="action" value="insertR">
<input type="hidden" name="bid" value="${bid}">
댓글 : <input type="text" name="rmsg">
<input type="submit" value="댓글 등록">
</c:when>
</c:choose>
</form>
</c:if>
<c:if test="${mid == null}">
<c:choose>
<c:when test="${type=='msg'}">
<input type="text" disabled value="등록하려면 로그인하세요!">
</c:when>
<c:when test="${type=='rmsg'}">
댓글 : <input type="text" disabled value="등록하려면 로그인하세요!">
</c:when>
</c:choose>
</c:if>
login.tag--------------------------
<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<form action="ctrlM.jsp" method="post">
<c:choose>
<c:when test="${mid!=null}">
<li>
<input type="hidden" name="action" value="logout">
<input type="submit" value="로그아웃">
</li>
</c:when>
<c:otherwise>
<li>
<input type="hidden" name="action" value="login">
<input type="text" name="mid" placeholder="id">
<input type="password" name="mpw" placeholder="password">
<input type="submit" value="로그인">
</li>
<li>
<a href="javascript:sign()">회원가입</a>
</li>
</c:otherwise>
</c:choose>
</form>
deleteB.tag--------------------------
<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ attribute name="bid" %>
<%@ attribute name="midCheck" %>
<c:if test="${mid==midCheck}">
<a href="ctrlB.jsp?action=deleteB&bid=${bid}">[삭제]</a>
</c:if>
<a href="ctrlB.jsp?action=fav&bid=${bid}"> ♥</a>
deleteR.tag--------------------------
<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ attribute name="midCheck" %>
<%@ attribute name="rid" %>
<c:if test="${mid==midCheck}">
<a href="ctrlB.jsp?action=deleteR&rid=${rid}">[삭제]</a>
</c:if>
<a href="ctrlB.jsp?action=fav&bid=${bid}"> ♥</a>
>> 이번 실습에서 배운 것
1. ctrl 분할 관리
2. 더보기 기초(2씩 계속 증가)
3. 인코딩 필터(EncFilter)
4. 초기화 매개변수(web.xml)
5. 에러 페이지(error, 404error)
6. 커스텀 태그
7. JSTL, EL, JS, CSS,...
'디바이스 융합 자바(Java)기반 풀스택 개발자 양성과정(수업내용)' 카테고리의 다른 글
디바이스 융합 자바(Java) day52 - 팀프로젝트 작업 및 frontController 질문 및 답변 (0) | 2022.08.24 |
---|---|
디바이스 융합 자바(Java) day51 - FrontController 패턴,Request Dispatcher (0) | 2022.08.23 |
디바이스 융합 자바(Java) day49 - 설계 작업 + 게시판(SNS) + 댓글 넣는 작업 (0) | 2022.08.19 |
디바이스 융합 자바(Java) day48 - 리스너(Listener)(초기화 매개변수),필터(Filter) (0) | 2022.08.18 |
디바이스 융합 자바(Java) day47 - 트랜잭션(rollback(),commit()) (0) | 2022.08.17 |