javaboiii의 Web/JSP

Web - JSP 예제1

javaboiii 2024. 8. 7. 17:50

WEB

[요구사항]

a.jsp 에서는 방문자의 이름을 등록합니다.
a 페이지에서 설정한 이름으로 b.jsp 에서 댓글을 쓸수있습니다.
c.jsp 에서 댓글을 등록하는 로직을 구현해주세요.
사용자가 a<->b 페이지를 이동해도 댓글을 써왔던 목록들은 유지됩니다.

 

[a.jsp]

<body>
	<form action="b.jsp" method="POST">
		이름 : <input type="text" name="name" placeholder="이름 작성" required />
		<input type="submit" value="등록" />
	</form>
</body>

 

[b.jsp]

<body>
<%
    session.setAttribute("user", request.getParameter("name"));
%>

	<a href="a.jsp">처음으로 돌아가기</a>	
	<hr>
	<form action="c.jsp" method="POST">
		<%= session.getAttribute("user") %>님의 댓글 : <input type="text" name="re" placeholder="댓글 작성" />
		<input type="submit" value="댓글 등록" />
	</form>
	<hr>
	<ul>
		<% for(){ %>
        <li></li>
  		<% } %>
    </ul>
</body>

 

딱 여기까지 쓰고 어버버 거림 for,,, for인데,,,

 

[c.jsp]

<body>
	<%
		ArrayList<String> datas = new ArrayList<String>();
		datas.add(request.getParameter("re"));
	%>
</body>

 

c.jsp에서도 여기까지 쓰고 어버버 거림 리스트... 리스트인데....

 

어쩔 수 없이 아쿠마(지피티)와 손을 잡음

 

 

  • 사용자가 a.jsp에서 이름을 등록합니다.
  • 등록된 이름으로 b.jsp에서 댓글을 작성할 수 있습니다.
  • 댓글 작성 폼이 c.jsp로 전송되고, c.jsp는 댓글을 세션에 저장한 후 b.jsp로 리디렉션합니다.
  • b.jsp는 세션에서 댓글 목록을 가져와 표시합니다.

악마가 알려준 방법

(사실 코드도 짜줌)

 

a.jsp는 똑같고

 

[b.jsp]

<body>
<%
    session.setAttribute("user", request.getParameter("name"));
	
    // 추가된 부분
    
    // 댓글list가 저장된 세션을 list에 저장
    ArrayList<String> comments = (ArrayList<String>) session.getAttribute("re");
    if (comments == null) { // list가 비어있다면
        comments = new ArrayList<String>(); // 새 list 생성
        session.setAttribute("re", comments); // 새 list 세션에 저장
    }
%>

	<a href="a.jsp">처음으로 돌아가기</a>	
	<hr>
	<form action="c.jsp" method="POST">
		<%= session.getAttribute("user") %>님의 댓글 : <input type="text" name="re" placeholder="댓글 작성" />
		<input type="submit" value="댓글 등록" />
	</form>
	<hr>
	<ul>
    // 추가된 부분
    <%
        for (String cmt : comments) { // 세션에서 꺼내온 list를 돌면서
    %>
        <li><%= cmt %></li> // 출력
    <%
        }
    %>
    </ul>
</body>

 

 

 

[c.jsp]

<%
    // ArrayList<String> datas = new ArrayList<String>();
    // datas.add(request.getParameter("re"));
	
    //추가된 부분
    // 세션에 저장된 이름을 userName에 저장
    String userName = (String) session.getAttribute("user");
    if (userName == null) { // userName이 비어있다면
        response.sendRedirect("a.jsp"); // a.jsp로 이동
        return;
    }
	
    // 댓글 작성 form에서 받은 댓글 내용을 comment에 저장
    String comment = request.getParameter("re"); 
    // 세션에 저장되어 있는 댓글 목록을 comments list에 저장
    ArrayList<String> comments = (ArrayList<String>) session.getAttribute("re");

    if (comments == null) { 댓글 목록이 비어있다면 새 댓글 목록 생성
        comments = new ArrayList<String>();
    }

	// form에서 넘겨 받은 댓글 내용이 비어있지 않다면
    if (comment != null && !comment.isEmpty()) {
    	// 유저 이름과 댓글 내용을 댓글 목록에 저장
        comments.add(userName + " >> " + comment);
        // 댓글 목록을 다시 세션에 저장
        session.setAttribute("re", comments);
    }

	// b.jsp로 이동
    response.sendRedirect("b.jsp");
%>

 

 

session은 Object 타입이기 때문에 형변환을 해줘야함

 

댓글을 작성했을 때 어떻게 이 전 유저의 댓글까지 남겨 둘지를 고민

  ==> 댓글 목록을 저장할 세션을 생성

 

알쏭달쏭한 jsp의 세계 훠훠

'javaboiii의 Web > JSP' 카테고리의 다른 글

Web - JSP 페이지 처리  (0) 2024.08.12
Web - JSP 페이지 이동 및 데이터 전송 방법  (0) 2024.08.09
Web - JSP 예제2  (0) 2024.08.08
Web - JSP) 내장 객체  (0) 2024.08.07
Web - JSP 기초  (0) 2024.08.06