[개인 프로젝트 / 북愛] 10. 게시글 작성 완료 후, 데이터가 서버로 넘겨지지않을 때

2023. 2. 27. 18:13자바/북애 프로젝트

나는 내가 summernote를 잘못사용해서 데이터가 안 넘어가나?? 했는데 그게 아니었다.

 

<writeCommunity.jsp 중 form 부분>

<form action="${contextPath }/community/addArticle.do" method="post"
id="writeArticleForm" name="writeArticleForm"  enctype="multipart/form-data">
    <div class="articleNameBox">
        <select id="board_genre" name="board_genre">
            <option value="none">장르</option>
            <option value="LiberalArts">인문학</option>
            <option value="Novel">소설</option>
            <option value="Poem">시/에세이</option>
            <option value="Food">요리</option>
            <option value="Health">건강</option>
            <option value="Hobby">취미/실용/스포츠</option>
            <option value="Science">과학</option>
            <option value="SelfImprovement">자기계발</option>
            <option value="IT">컴퓨터/IT</option>
            <option value="History">역사/문화</option>
            <option value="etc">기타</option>
        </select>
        <input id="board_title" type="text" name="board_title" placeholder="제목">
    </div>
    <textarea id="summernote" name="board_content"></textarea>
    <input id="submitBtn" type="button" value="완료" onclick="before_submit(this.form)"/>
</form>

도대체 내가 뭘 잘못했지.. 하며 하루 온종일 고민했다.

에러도 제대로 안뜨고 값은 전혀 넘어가지 않고... sql문이 잘못됐나? 했는데 그것도 아니었고..

내가 summernote도 처음사용해보고 API자체도 처음 적용해봐서 summernote를 내가 잘 모르고 사용해서인가하고 그쪽도 열심히 찾아봤는데 해답이 전혀 나오지않았다.

결국 jsp를 새로 만들어서 하나씩 추가해보며 어느 부분이 잘못되었는지 하나하나 노가다로 열심히 찾아봤다.

그러다

 enctype="multipart/form-data"

이 부분이 없어야 제대로 데이터가 넘겨진다는 것을 알게됐다.

 

 enctype="multipart/form-data" << 이 타입은 "파일"을 넘겨받을 때 사용하는 타입인데 request를 통해서는 데이터를 받을 수가 없다. 그래서 MultipartHttpServletRequest < 이거나 MultipartRequest < 이 함수를 사용해야 데이터를 받아올 수 있다.

 

MultipartHttpServletRequest는 MultipartRequest의 하위 인터페이스이다.

MultipartRequest : Superinterfaces

MultipartHttpServletRequest : Subinterfaces

 

MultipartHttpServletRequest는 HttpServletRequest, MultipartRequest, ServletRequest 이 세가지 인터페이스를 참조하기 때문에 좀 더 기능이 많을 것이라 예상할 수 있으나 정확한 차이가 어떻게 되는지는 더 알아봐야할 것 같다.

 

참고!

MultipartRequest

 

MultipartRequest (Spring Framework 6.0.5 API)

getMultipartContentType Determine the content type of the specified request part. Parameters: paramOrFileName - the name of the part Returns: the associated content type, or null if not defined Since: 3.1

docs.spring.io

MultipartHttpServletRequest

 

MultipartHttpServletRequest (Spring Framework 6.0.5 API)

Return the headers for the specified part of the multipart request.

docs.spring.io