Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

노승현

JSP 를 이용한 회원가입 및 댓글 작성 본문

카테고리 없음

JSP 를 이용한 회원가입 및 댓글 작성

nsh95 2024. 1. 9. 08:37

 

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>