[게시판 만들기]4.글 작성/등록

JINI·2022년 11월 29일
0
post-thumbnail

🧩글 작성/등록하기

이미지 없이 글을 작성하고 등록하기를 해보려고 한다.

🎨jsp

<div class="panel-heading">게시글 작성하기</div>
	<div class="panel-body">
		<form method="post" action="${contextPath}/board/writeSave">
			<div class="form-group">
				<label>작성자</label> 
                	<input class="form-control" name="writer" value="${successUser  }" readonly>
			</div>
			<div class="form-group">
				<label>제목</label> 
                <input class="form-control" name="title">
			</div>
			<div class="form-group">
				<label>내용</label>
					<textarea class="form-control" rows="3" name="content"></textarea>
			</div>	
		
			<input type="submit" class="btn btn-default" value="글 등록하기" style="margin-top: 50px;">
			<input type="button" class="btn btn-default" value="목록보기" 
								onClick="location.href='${contextPath}/board/list'" style="margin-top: 50px;">
		</form>
	</div>
</div>
  • 작성자는 로그인한 사용자가 되도록 name에 dto값을 넣어 넘겨주고 로그인 세션 값을 value에 적어 넘긴다.
    해당 아이디는 수정되지 않도록 읽기 전용 readonly으로 한다.
  • 나머지도 dto 값을 name에 넣어 넘겨준다.
  • form의 데이터는 보여지면 안되기 때문에 post방식으로 넘기며 이동할 경로를 적어준다.
    input typesubmit으로 데이터를 넘긴다.
  • 목록보기는 단순히 페이지 이동만 하면 된다.

📕 Controller

@PostMapping("writeSave")
	public void writeSave(MultipartHttpServletRequest multi, HttpServletResponse response,
							HttpServletRequest request) throws IOException{                   
		System.out.println("read:" +multi.getParameter("writer"));
		System.out.println("저장하기 실행");
		String message =bs.writeSave(multi, request);
		PrintWriter out= null;
		response.setContentType("text/html; charset = utf-8");
		out = response.getWriter();
		out.println(message);
	}
  • jsp - form에서 post방식으로 보낼 페이지 경로를 연결 역할을 하는 컨트롤러에 적어준다.
  • 작성자가 글쓰기 누르면 모든값이 사용자의 정보를 담고있는 multi에 들어온다.
    request는 세션이나 절대경로로 message에 담아 out 객체를 만들어 사용자에게 전달한 뒤 응답한다.

📕 Service / serviceImpl

  • Service
public String writeSave(MultipartHttpServletRequest multi, HttpServletRequest request);
  • serviceImpl
@Service
public class boardServiceImpl implements boardService {
	@Autowired BoardMapper mapper;
	public String writeSave(MultipartHttpServletRequest multi, HttpServletRequest request) {
		boardDTO dto = new boardDTO(); 
		dto.setTitle( multi.getParameter("title") );
		dto.setContent( multi.getParameter("content") );
		dto.setWriter(multi.getParameter("writer"));

		try {
			mapper.writeSave(dto);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
  • boardDTO dto = new boardDTO(); : 사용자가 넘긴 multi , request를 dto에 저장한다.
    dto에 제목/내용/작성자를 설정하고 multi에서 값들을 가져온다.
  • 사용자에게 보이면 안되는 오류메시는 try/catch를 사용해 전부 예외처리해주고 데이터 값을 mapper로 넘긴다.

📕mapper.java

public interface BoardMapper {
	public int writeSave(boardDTO dto);
}
  • service에서 받아온 dto를 xml로 보낸다.

📕mapper.xml

<insert id="writeSave">
	insert into
	talk_board(write_num,title,writer,content)
	values(talk_board_seq.nextval,#{title},#{writer},
	#{content})
</insert>
  • 글을 등록하기 위해선 insert구문을 사용해서 쿼리문을 작성해야 한다.
    게시판 번호처럼 자동으로 증가하는 Number를 사용하기 위해서는 시퀀스를 사용한다.
  • values에는 #{} 안에 sql 컬럼명을 넣어준다.

profile
꾸준히 성장하는 개발자

0개의 댓글