Christmas Pikachu 상세페이지 데이터 가져오기
개발일지/JSP

상세페이지 데이터 가져오기

ZI_CO 2024. 1. 8.

main.jsp

<%@page import="java.awt.RadialGradientPaint"%>
<%@ 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>


<%
	if(session.getAttribute("mid") != 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<ReplyDTO> rdatas=(ArrayList<ReplyDTO>)request.getAttribute("rdatas");
		if(rdatas.size() <= 0) {
			out.println("출력할  데이터가 없습니다.");
		}
		for(ReplyDTO data:rdatas){
	%>
			<li><a href="controller.jsp?action=replySelectOne&rid=<%=data.getRid()%>"><%=data.getRid()%>번 댓글 <%=data.getWriter()%>님이 작성</a></li>
	<%
		}
	%>
</ul>

<hr>

<%
	if(session.getAttribute("mid") != null){ // 로그인 상태
%>
	<form action="controller.jsp" method="POST">
		<input type="hidden" name="action" value="replyWrite">
		<input type="text" style="width: 500px; height: 50px;" name="reply" placeholder="댓글을 작성해주세요22">&nbsp<input type="submit" value="댓글추가">
	</form>
		
<%
	}else {
		%>
		<input type="text" style="width: 500px; height: 50px;"  readonly placeholder="댓글을 쓰려면 로그인 해주세요">&nbsp<a href="controller.jsp?action=loginPage">로그인</a>
		<% 
		
	}
%>

<hr>

<ul>
	<%
		ArrayList<MemberDTO> mdatas=(ArrayList<MemberDTO>)request.getAttribute("mdatas");
		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.ReplyDAO" id="rDAO" />
<jsp:useBean class="model.dto.ReplyDTO" id="rDTO" />
<jsp:useBean class="model.dao.MemberDAO" id="mDAO" />
<jsp:useBean class="model.dto.MemberDTO" id="mDTO" />
<jsp:setProperty name="mDTO" property="*" />
<%
	String action=request.getParameter("action");
	if(action.equals("main")){
		ArrayList<ReplyDTO> rdatas=rDAO.selectAll(rDTO);
		request.setAttribute("rdatas", rdatas);
		
		ArrayList<MemberDTO> mdatas=mDAO.selectAll(mDTO);
		request.setAttribute("mdatas", mdatas);
		
		System.out.println("로그 1 : "+rdatas.size());
		
		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"); // V -> C -> V
	}
	else if(action.equals("logout")){
		// 로그아웃
		session.invalidate();
		//response.sendRedirect("controller.jsp?action=main");
		out.println("<script>alert('로그아웃 되었습니다.'); location.href='controller.jsp?action=main';</script>");
	}
	else if(action.equals("mypage")){
		// 마이페이지로 이동
		response.sendRedirect("mypage.jsp");
	}
	else if(action.equals("loginPage")){
		// 로그인 페이지로 이동
		response.sendRedirect("login.jsp");
	}
	else if(action.equals("replySelectOne")){
		// 댓글 상세 페이지로 이동
		Integer rid = Integer.parseInt(request.getParameter("rid"));
		ReplyDTO replyDTO = new ReplyDTO();
		replyDTO.setRid(rid);
		ReplyDTO result = rDAO.selectOne(replyDTO);
		if(result != null) {
			String replyDetail = "reply.jsp?rid=" + rid;
			String writer = result.getWriter();
			String content = result.getContent();
			request.setAttribute("rid", rid);
			request.setAttribute("writer", writer );
			request.setAttribute("content", content);
			pageContext.forward(replyDetail);
		}
		
	}
	else if(action.equals("replyInsert")){
		// 댓글추가
	}else if(action.equals("loginTry")) {
		String mid = request.getParameter("mid");
		String mpw = request.getParameter("mpw");
		MemberDTO memberDTO = new MemberDTO();
		memberDTO.setMid(mid);
		memberDTO.setMpw(mpw);
		MemberDTO result = mDAO.selectOne(memberDTO);
		if(result != null) {
			String name = result.getName();
			session.setAttribute("mid", mid);
			session.setAttribute("mpw", mpw);
			session.setAttribute("name", name);
			response.sendRedirect("controller.jsp?action=main");
		}else {
			out.println("<script>alert('로그인정보가 틀립니다'); location.href='login.jsp';</script>");
		}
	
	} else if (action.equals("nameUpdate")) {
	    String mid = (String) session.getAttribute("mid");
	    String orname = (String) session.getAttribute("name");
	    String name = request.getParameter("name");
	    MemberDTO memberDTO = new MemberDTO();
	    memberDTO.setSearchCondition("이름변경");
	    memberDTO.setMid(mid);
	    memberDTO.setName(name);
		
	    if (orname.equals(name)) {
	        out.println("<script>alert('같은 이름입니다. 다시 수정해주세요.'); location.href='mypage.jsp';</script>");
	    } else {
	        boolean result = mDAO.update(memberDTO);
	       out.println("<script>alert('이름이 변경되었습니다.'); location.href='controller.jsp?action=main';</script>");
	    }
	}else if(action.equals("replyWrite")) {
		String mid = (String)session.getAttribute("mid");
		String reply = request.getParameter("reply");
		ReplyDTO replyDTO = new ReplyDTO();
		replyDTO.setWriter(mid);
		replyDTO.setContent(reply);
		boolean result = rDAO.insert(replyDTO);
		if(result) {
			out.println("<script>location.href='controller.jsp?action=main';</script>");
		}else {
			out.println("<script>alert('댓글 등록에 실패하였습니다.'); location.href='controller.jsp?action=main';</script>");
		}
	}else if(action.equals("replyUpdate")){
		Integer rid = Integer.parseInt(request.getParameter("rid")) ;
		String content = request.getParameter("content");
		ReplyDTO replyDTO = new ReplyDTO();
		replyDTO.setRid(rid);
		replyDTO.setContent(content);
		boolean result = rDAO.update(replyDTO);
		if(result) {
			System.out.println("11111");
			out.println("<script>alert('댓글이 수정되었습니다.'); location.href='controller.jsp?action=main';</script>");
		}else {
			System.out.println("2222");
		}
		
		
	}
		
	else{
		// 이상한 요청
		// 에러처리해야함!
	}
%>

'개발일지 > JSP' 카테고리의 다른 글

doFilter 예시  (0) 2024.01.18
커스텀 태그  (0) 2024.01.17
JSP - 내장객체  (1) 2024.01.08
JDBC 사용방법  (0) 2022.11.29
커넥션 풀(DBCP)  (1) 2022.11.29

댓글