POST 입력
Section 1. POST 입력
1. POST 요청을 처리하는 Controller
- Rest API 디자인에 맞게 POST 작업을 수행하는 reg 메서드 생성
- Post Request 메시지에 title, content 가 보내질 예정
2. reg.html 파일
- 공지사항의 제목, 내용, 파일을 등록하는 페이지
3. POST 결과
4. 콤보박스 입력
- html 페이지 수정
- Controller 수정
- 결과 화면
5. 체크박스 입력
- html 페이지 수정
- Controller 수정
- 같은 이름의 변수로 들어오는 값은 배열로 받을 수 있음
- 결과 화면
Section 2. POST 한글 입력
1. 한글 입력이 깨지는 이유
- 클라이언트 측에서는 UTF-8 코드체계로 문자를 사용
- 기본적으로 Tomcat 은 ISO-8859-1 코드체계를 사용
2. Filter 사용
- web.xml 에 필터 설정
<filter>
<filter-name>charaterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charaterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3. 한글 출력 결과
Section 3. POST 파일 전송
1. MultipartResolver 서버측
- CommonsFileUploadSupport 클래스를 상속받는 MultipartResolver 객체 생성
- SetmaxUploadSize Setter를 이용해서 최대 크기를 지정해줌
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- setting maximum upload size 300MB(1024-1024*300) -->
<property name="maxUploadSize" value="314572800"></property>
</bean>
2. MultipartResolver 클라이언트측
- enctype = "multipart/form-data" 지정
3. commons-fileupload 라이브러리
- Apache 제공 파일 업로드 관련 라이브러리 dependency
4. 파일 처리 Controller
- file 의 자료형을 MultipartFile 로 지정
- file 의 이름과 크기를 출력
5. 파일 저장 물리 경로
- Controller 는 reqeust 를 받아야 수행되므로 보통 HttpServletRequest 객체를 통해서 ServletContext 를 추출할 수 있음
- ServletContext 에서 Application 의 물리주소 (RealPath) 추출
- ServletContext 는 IOC 컨테이너에 기본적으로 자동으로 생성되므로 DI 가능
- Servlet Context 개념 참고 블로그
6. 파일 저장 결과
- 실제로 아래의 물리 경로에 저장됨
realPath : /Users/codren/Documents/workspace-spring-tool-suite-4-4.11.0.RELEASE/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/webprj/static/upload1
7. 다중 파일 파일 저장
- 클라이언트 측에서 files 로 여러 파일을 보냄
- 서버 측에서 배열로 files 를 받고 for (MultipartFile file: files) 수행
error
1. POST method 를 지원하지 않는 error
- 혹시 아래와 같은 에러가 발생한다면 아래 코드로 RequestMapping 수행
@RequestMapping(value ="reg", method = {RequestMethod.GET, RequestMethod.POST})
2. POST 입력 Null error
- form 상에서 POST 입력으로 전송될 데이터를 선택하지 않으면 -> "null" 입력으로 처리 (에러 X)
- http://localhost:8080/admin/board/notice/reg 직접 url 요청시 nullpointerexception -> try-catch
Author And Source
이 문제에 관하여(POST 입력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@codren/POST-입력저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)