▸JSP & Servlet/프론트엔드

부트스트랩으로 게시판 만들기_글쓰기 화면 [2/3]

코데방 2020. 3. 2.
728x90

이번에는 부트스트랩을 이용한 글쓰기폼과 글보기 화면 구성입니다. 다른 페이지의 뷰 및 로직은 아래 링크를 참조하시면 됩니다.

 

 

 

[· JSP & Servlet/- 부트스트랩] - 부트스트랩으로 게시판 만들기_리스트 화면 [1/3]

[· JSP & Servlet/- 부트스트랩] - 부트스트랩으로 게시판 만들기_글쓰기 화면 [2/3]

[· JSP & Servlet/- 부트스트랩] - 부트스트랩으로 게시판 만들기_게시물 보기 화면 [3/3]

[· JSP & Servlet/- 기본 문법] - MVC 패턴의 게시판 만들기_계층형 게시판 로직 설계 [1/5]

[· JSP & Servlet/- 기본 문법] - MVC 패턴의 게시판 만들기_페이징 처리(오라클DB) [2/5]

[· JSP & Servlet/- 기본 문법] - MVC 패턴의 게시판 만들기_리스트 출력 로직 [3/5]

[· JSP & Servlet/- 기본 문법] - MVC 패턴의 게시판 만들기_글작성 로직 [4/5]

[· JSP & Servlet/- 기본 문법] - MVC 패턴의 게시판 만들기_게시물 보기 로직 [5/5]

 

 

전체 코드는 깃허브에 있습니다. 커밋 시점은 "add board" 입니다. 

https://github.com/codevang/hssweb

 

 


 

 

[ 로그인 여부 확인 ]

 

로그인 되지 않은 사용자는 게시물을 볼 수 있지만 글을 쓸 수는 없으므로, 세션에 로그인 정보가 없는 사람은 로그인창으로 리다이렉트 시켜줍니다. 로그인창에서 띄워줄 메세지도 담아서 같이 보내줍니다.

 

리다이렉트된 로그인 페이지

<!-- 로그인된 사용자가 아니라면 로그인창으로 돌려줌 -->
<%
	if(session.getAttribute("userID") == null) {
		session.setAttribute("loginMsg", "게시물 작성은<br>로그인이 필요합니다.");
		response.sendRedirect("/login");
		return;
	}
%>

 

 

 


 

 

[ 게시물의 계층 정보 셋팅 ]

 

새글쓰기나 답글쓰기 모두 하나의 입력 폼에서 처리할 것이므로, 게시물의 계층 정보는 호출하는 쪽에서 보내주고 여기서는 그대로 받아서 사용합니다. 호출하는 쪽에서 파라미터로 보낸 것을 컨트롤러에서 다시 포워딩해주기 때문에 그대로 request 객체에서 받아 파라미터를 꺼내면 됩니다.

 

주의할 점은 리다이렉트를 사용하게 되면 request 객체를 통한 전달이 불가능하기 때문에 컨트롤러에서 포워딩 방식으로 전달해줘야 한다는 것입니다. 만약 session 객체에 담아서 전달한다면, 한 사용자 세션에서 여러 개의 창을 켜두고 동시에 게시물을 작성하는 경우를 방지할 수 있도록 하는 장치가 추가적으로 필요할 것 같습니다. 이부분은 로직을 정리한 글에서 조금 더 다루도록 하겠습니다.

 

<!-- 게시물 계층 정보 -->
<%!int bdGroup, bdOrder, bdIndent;%>
<%
	bdGroup = Integer
			.parseInt((String) request.getParameter("bdGroup"));
	bdOrder = Integer
			.parseInt((String) request.getParameter("bdOrder"));
	bdIndent = Integer
			.parseInt((String) request.getParameter("bdIndent"));
%>

 

 


 

 

* 게시물 입력 양식

 

제목의 경우 한줄로 작성하면 되니 input 태그를 사용해주면 되는데, 본문의 경우는 여러 줄로 입력할 수 있도록 해줘야 합니다. 이 부분은 input 대신 <textarea> 태그를 사용해주면 됩니다.

 

<%-- 입력 폼 --%>
<form action="writerAction" method="post">
	<input type="hidden" name="bdGroup" value=<%=bdGroup%>>
	<input type="hidden" name="bdOrder" value=<%=bdOrder%>>
	<input type="hidden" name="bdIndent" value=<%=bdIndent%>>
	<input type="text" name="bdTitle" class="form-control mt-4 mb-2"
		placeholder="제목을 입력해주세요." required
	>
	<div class="form-group">
		<textarea class="form-control" rows="10" name="bdContent"
			placeholder="내용을 입력해주세요" required
		></textarea>
	</div>
	<button type="submit" class="btn btn-secondary mb-3">제출하기</button>
</form>

 

 

 


 

 

 

[ /board/boardWriter.jsp 전체 코드 ]

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"
%>

<!-- TOP 레이아웃 -->
<jsp:include page="/layout/topLayout.jspf" flush="false" />

<!-- 로그인된 사용자가 아니라면 로그인창으로 돌려줌 -->
<%
	if(session.getAttribute("userID") == null) {
		session.setAttribute("loginMsg", "게시물 작성은<br>로그인이 필요합니다.");
		response.sendRedirect("/login");
		return;
	}
%>

<!-- 게시물 계층 정보 -->
<%!int bdGroup, bdOrder, bdIndent;%>
<%
	bdGroup = Integer
			.parseInt((String) request.getParameter("bdGroup"));
	bdOrder = Integer
			.parseInt((String) request.getParameter("bdOrder"));
	bdIndent = Integer
			.parseInt((String) request.getParameter("bdIndent"));
%>

<%-- 입력 폼 --%>
<form action="writerAction" method="post">
	<input type="hidden" name="bdGroup" value=<%=bdGroup%>>
	<input type="hidden" name="bdOrder" value=<%=bdOrder%>>
	<input type="hidden" name="bdIndent" value=<%=bdIndent%>>
	<input type="text" name="bdTitle" class="form-control mt-4 mb-2"
		placeholder="제목을 입력해주세요." required
	>
	<div class="form-group">
		<textarea class="form-control" rows="10" name="bdContent"
			placeholder="내용을 입력해주세요" required
		></textarea>
	</div>
	<button type="submit" class="btn btn-secondary mb-3">제출하기</button>
</form>



<!-- Bottom 레이아웃 -->
<jsp:include page="/layout/bottomLayout.jspf" flush="false" />
728x90

댓글

💲 추천 글