Filter
HTTP ์์ฒญ๊ณผ ์๋ต์ ๋ณ๊ฒฝํ ์ ์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋์ด๋ค. ์ ์ผํ๊ฒ ServletRequest
, ServletResponse
์ ๊ฐ์ฒด๋ฅผ ๋ณํ ํ ์ ์๋ค.
Web Application์์ ๊ด๋ฆฌ๋๋ ์์ต์ผ๋ก์จ Spring Boot Famework์์ Client๋ก ๋ถํฐ ์ค๋ ์์ฒญ/์๋ต์ ๋ํด์ ์ต์ด/์ต์ข
๋จ๊ณ์ ์์น์ ์กด์ฌํ๋ฉฐ, ์ด๋ฅผ ํตํ์ฌ ์์ฒญ/์๋ต์ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋, Spring์ ์ํด์ ๋ฐ์ดํฐ๊ฐ ๋ณํ๋๊ธฐ ์ ์ ์์ํ Clint์ ์์ฒญ/์๋ต ๊ฐ์ ํ์ธ ํ ์ ์๋ค.
๐๐ Filter์ค์ ๋ฐฉ๋ฒ!
โ
์์์ CharacterEncodingFIlter๋ฅผ ๋ฐ์์ผํ๋ค.
โ
initialization parameter : encodin UTF-8์ ์ ์ํด์ ํ๊ธ์ฒ๋ฆฌ๋ฅผ ํ๋ค
Filter mappings: "/*" ์ ์ํด ๋ชจ๋ ์์ฒญ์ด๋ผ๋ ๋ฒ์๋ฅผ ์ง์ ํ๋ค.
๐
์ด๋ฐ์์ผ๋ก Filter๋ผ๋ ๊ฐ์ฒด๋ ๊ทธ ๋๊ตฌ๋ณด๋ค ๋น ๋ฅด๊ฒ ์์ง์ด๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ๊ธ์ฒ๋ฆฌ๋ฅผ
ํ๊บผ๋ฒ์ ๊ฐ๋ฅํ๋ค!!
Spring ํ์ผ์ฒจ๋ถ
-
์คํ๋ง ํ๊ฒฝ๋ฟ๋ง ์๋๋ผ JSP์์๋ ํผ์ ํ์ผ์ ์ฒจ๋ถํ ๋
-
encType="multipary/form-data"๋ก ์ง์ ํ๋ค. ์ด๋ ๊ฒ
-
๋๋ฉด ์ผ๋ฐ์ ์ธ request๊ฐ์ฒด๋ก ํ์ผ๋ถ๋ง ์๋๋ผ ํ๋ผ๋ฏธํฐ๋ค์
-
๋ฐ์ง ๋ชปํ๋ค. ๊ทธ๋์ ๋ฐ๋์ MultiartRequset๊ฐ์ฒด๊ฐ ํ์ํ๋ฐ
-
spring์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ฒด๊ฐ ์ง์๋๋ค.(multipartResolver)
-
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ํ 2๊ฐ๋ฅผ ์ถ๊ฐ๋ก ๋ฃ์ด์ค์ผ ํ๋ค.
(commons-fileupload commons-io)
โฃ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ์ ธ์ค๊ธฐ ๊ผญ!!
<!-- Multipart Resolver์ค์ -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"/>
<property name="maxUploadSize" value="-1"/>
<!-- ์
๋ก๋ํ ๋ ์ฉ๋์ ์ฃผ์ง ์๊ฒ ๋ค.(-1 ์ผ๋๋ง) byte์ฉ๋์ผ๋ก ์ง์ ํ๋ค. -->
</bean>
โฃ ํ์ผ์
๋ก๋์ ์ค์ํ ๋ณ์!!
ํ์ผ์ ์
๋ก๋๋ฅผ ํ๊ธฐ ์ํ ๋ณ์๋ฅผ ํ๋ ์ง์ ์ ํด์ผํ๋ค ๊ทธ ๋ณ์๋ MultipartFile ๋ณ์๋ค.
โ getOriginalFilename() : ํ์ผ๋ช
์ ๊ฐ์ ธ์ค๋ ํจ์!
โ getName() : ํ์ฌ ํ์ผ์ ๋ณด๋ผ๋ ์ฌ์ฉํ๋ ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ ๊ฐ์ ธ์ค๋ ํจ์!
๐ transferTO(new File("ํ์ผ์ ๊ฒฝ๋ก","ํ์ผ์ ์ด๋ฆ")) : ํ์ผ์ ์
๋ก๋ ํ๋ ๋ฐฉ์์ด๋ค!
(MultipartRequest ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ง์ ๊ฐ์ ํ์ผ์ด ์์๋๋ ํ์ผ์ ๋ช
์ ๋ฐ๊ฟ์ฃผ๋ ๋ก์ง์ ๊ตฌํํด์ผํ๋ค.)
Spring Ajax
๋น๋๊ธฐ์ ํต์ ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ "-servlet.xml"ํ์ผ์ ๋น ๊ฐ์ฒด๋ค์ ์ ์ธ์
ํด์ค์ผํ๋ค.
โฃ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ค์ด๋ฐ๋ ๊ณณ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ด๋ฐ๊ณ WebContent/WEB-INF/lib ์์
(Jackson Databind, Jackson Core, Jackson Annotations) ์ถ๊ฐํ๋ฉด ๋๋ค.
โฃ ๋น๊ฐ์ฒด ์ค์ ํ๋ ๋ฐฉ๋ฒ
(๋๋จธ์ง ๋น๋๊ธฐ ํต์ ๋ฐฉ์์ JSP์์ ํ๋ ๋ฐฉ๋ฒ๊ณผ ๋์ผํ๋ค!!)
Json ๋ฐํ๋ฐฉ๋ฒ
โฃ MIMEํ์
์ค์ ํ๋ ๋ฐฉ๋ฒ
![image-20211021121741135](
- spring์์ ๋น๋๊ธฐ์ ํต์ ์ ์ฌ์ฉํ ๋ ๋ฐํ๋ฐ์ ํ
์ดํฐ์ ๊ฐ์ json์ผ๋ก ๋ฐ๊ณ ์ถ๋ค๋ฉด
- @RequestMapping(value="/ex1_res.mo",produces="text/json;charset=utf-8")
- ์ง์ ์ ํด์ค์ผ ํ๋ค. "value = ๊ฐ๊ณ ์ถ์ url" "produces = "json์ ๋ณด๋ธ๋ค๊ณ ์ง์ ์ ํด์ค์ผ ํ๋ค."
(produces ๋ MIMEํ์
์ ๊ผญ ๋ช
์๋ฅผ ํด์ค์ผ ํ๋ค. json์ผ๋ก ๋ฐํํ ๊ฒฝ์ฐ ๋ฌธ์์ด์ด๊ธฐ ๋๋ฌธ์ ํ๊ธ์ฒ๋ฆฌ๊น์ง ๊ฐ์ด ํ๋ค.)
์ค๋์ ์ถ๊ฐ Annotation