노승현
JSP 를 이용한 회원가입 및 댓글 작성 본문
Hidden
로그인을 하던 회원가입을 하던 action 값이 join이었는지
login이었는지 보고 결정한다.
session.invalidate(); session의 모든 정보를 삭제
pk를 반드시 주고받아야된다 보여주는건 name 이지만
보내주는 값은 pk(id)
MVC pattern1
—————————————————
View Controller
사용자가 입력 파라미터-> DTO 객체에 set();
DAO 의 CRUD 호출 —> Model
친절한 안내 <-결과 JAVA JDBC,SQL
입력값에 대한 유효성 검사
친절한 안내를 해야하기에 js를 사용
.html
.jsp
View jsp,js,html
Controller JAVA
Model JDBC,SQL
회원 테이블
MID VARCHAR PK
MPW VARCHAR NOT NULL
NAME VARCHAR NOT NULL
회원가입 insertMember
회원목록 출력 selectAllMember
로그인/ 로그아웃 login/logout
이름 변경 updateMemberName
회원탈퇴 deleteMember
댓글 테이블
RID INT PK
WRITER VARCHAR FK
CONTENT VARCHAR NOT NULL
댓글 추가 insertReply
댓글 목록출력 selectAllReply
댓글 1개선택 출력 selectOneReply
내용 변경 updateReplyContent
댓글 삭제 deleteReply
————————————————————————————————
회원목록 보여줄 예정 -> 누르면 해당 회원이 쓴 댓글만 출력
댓글 목록 보여줄 예정 -> 해당 댓글 확대
회원가입 / 로그인 / 로그아웃 / 마이페이지
로그인 시 멤버에 session 정보 저장
댓글 추가
회원가입 페이지
로그인 페이지
해당 댓글 상세 페이지
내용 변경/ 댓글 삭제 -> 본인일 때만 수행가능
마이페이지
이름 변경 / 회원탈퇴
Action join
Mid 아이디
Mpw 비밀번호
Name 이름
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
response.sendRedirect("controller.jsp?action=main");
%>
main.jsp
]<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="model.dto.*, java.util.ArrayList"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>메인페이지</title>
</head>
<body>
<%
String member=(String)session.getAttribute("member");
if(member != null){ // 로그인 상태라면
%>
<a href="controller.jsp?action=logout">로그아웃</a> | <a href="controller.jsp?action=myPage">마이 페이지</a>
<%
}else{
%>
<a href="controller.jsp?action=loginPage">로그인</a> | <a href="controller.jsp?action=joinPage">회원가입</a>
<%
}
%>
<hr>
<ul>
<%
ArrayList<ReviewDTO> rdatas=(ArrayList<ReviewDTO>)request.getAttribute("rdatas");
if(rdatas.size()<=0){
out.println("출력할 댓글이 없습니다.");
}
else{
for(ReviewDTO data: rdatas){
%>
<li><a href="controller.jsp?action=reviewSelectOne"><%=data.getRid() %>번 댓글<%=data.getWriter() %>님이 작성</a></li>
<%
}
}
%>
</ul>
<hr>
<form action="controller.jsp?action=reivewInsert" method="post">
<input type="hidden" name="writer" value="<%=member%>">
<%
if(member !=null){ // 로그인 상태라면
%>
<input type="text" name="content" required placeholder="댓글 내용 입력"> <br>
<input type="submit" value="댓글 추가">
<%
}
else{ // 로그아웃 상태라면
%>
<input type="text" name="content" disabled values="로그인을 해주세요."> <br>
<%
}
%>
</form>
<hr>
<ul>
<%
ArrayList<MemberDTO> mdatas=(ArrayList<MemberDTO>)request.getAttribute("mdatas");
if(mdatas.size()<=0){
out.println("출력할 회원이 없습니다.");
}
else{
for(MemberDTO data:mdatas){
%>
<li><%=data.getName() %>님</li>
<%
}
}
%>
</ul>
</body>
</html>
controller.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.ArrayList, model.dto.*"%>
<%
request.setCharacterEncoding("UTF-8");
//getParameter() 해서 setXxx() 를 진행할때에 인코딩깨짐
// 얘 전(10번 라인 전)에 수행해야함!!!!!
%>
<jsp:useBean class="model.dao.ReviewDAO" id="rDAO" />
<jsp:useBean class="model.dto.ReviewDTO" id="rDTO" />
<jsp:useBean class="model.dao.MemberDAO" id="mDAO" />
<jsp:useBean class="model.dto.MemberDTO" id="mDTO" />
<jsp:setProperty name="mDTO" property="*" />
<!-- 멤버의 프로퍼티 가져오기 -->
<jsp:setProperty name="rDTO" property="*" />
<!-- 댓글의 프로퍼티 가져오기 -->
<%
String action = request.getParameter("action");
// 재사용을 위한 정의
if (action.equals("main")) { // 메인페이지
ArrayList<ReviewDTO> rdatas = rDAO.selectAll(rDTO);
request.setAttribute("rdatas", rdatas);
ArrayList<MemberDTO> mdatas = mDAO.selectAll(mDTO);
request.setAttribute("mdatas", mdatas);
pageContext.forward("main.jsp");
// 새로운 요청 : GET
// 기존 요청 정보를 모두 삭제시킴
// 리다이렉트 방식
// ↓
// 기존 요청 정보를 유지하는 요청 방식을 사용해야한다!!!!!
// 포워드 방식
} else if (action.equals("join")) { // 회원가입
boolean flag = mDAO.insert(mDTO);
if (flag) {
response.sendRedirect("controller.jsp?action=main");
} else {
out.println("<script>alert('ID 중복 등으로 인해 회원가입 실패');history.go(-1)</script>");
}
} else if (action.equals("joinPage")) {
response.sendRedirect("join.jsp");
} else if (action.equals("logout")) {
} else if (action.equals("myPage")) {
} else if (action.equals("loginPage")) { // 로그인
// 정보 없이 페이지만 옮길
response.sendRedirect("login.jsp");
} else if (action.equals("login")) {
String mid = request.getParameter("mid");
String mpw = request.getParameter("mpw");
MemberDTO memberDTO= new MemberDTO();
memberDTO.setMid(mid);
memberDTO.setMpw(mpw);
MemberDTO mdata = mDAO.selectOne(memberDTO);
if(mdata!=null){
out.println("<script>alert('11111');</script>");
session.setAttribute("member", mid);
response.sendRedirect("controller.jsp?action=main");
}else{
out.println("<script>alert('222222');</script>");
}
} else if (action.equals("reviewSelectOne")) {
} else if (action.equals("reviewInsert")) {
} else {
}
%>
join.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입</title>
</head>
<body>
<form action="controller.jsp" method="post">
<input type="hidden" name="action" value="join">
아이디<input type="text" name="mid" required> <br>
비밀번호<input type="password" name="mpw" required> <br>
이름<input type="text" name="name" required> <br>
<input type="submit" value="회원가입">
</form>
<hr>
<a href="controller.jsp?action=main">메인으로</a>
</body>
</html>
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 페이지</title>
</head>
<body>
<form action="controller.jsp" method="post">
<input type="hidden" name="action" value="login">
아이디 <input name="mid"> <br>
비밀번호 <input type="password" name="mpw"> <br>
<input type="submit" value="로그인">
</form>
<hr>
<!-- 수정 -->
<a href="controller.jsp?action=main">메인으로</a>
</body>
</html>