Spring Fliter

์žฅ๋ฏผ์šฐยท2021๋…„ 10์›” 21์ผ
0

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
4/5
post-thumbnail

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

profile
๊ฟˆํ‹€๋Œ€๋Š”๊ผฌ๋งˆ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€