java 60

JSP - ๊ฐœ๋…์ •๋ฆฌ

* ์„ธ์…˜ - ์„ธ์…˜์€ ์‚ฌ์šฉ์žํŽ˜์ด์ง€์—์„œ ์•ˆ๋ณด์ด๊ณ  ์„œ๋ฒ„๊ฐ€ ๋“ค๊ณ ์žˆ๋Š” ๋ฐ์ดํ„ฐ, ๋ฆฌํ€˜์ŠคํŠธ ์•ˆ์— ์ €์žฅ๋œ๋‹ค. - ํ†ฐ์บฃ ๋‚ด์— ์„ธ์…˜์ปจํ…์ŠคํŠธ์— key, value,๋“ค์–ด์˜ค๋Š” ์Šค๋ ˆ๋“œ(์‚ฌ์šฉ์ž)๋งˆ๋‹ค ๊ด€๋ฆฌ ๋œ๋‹ค. * JSP์—์„œ๋Š” out์ด ๋‚ด์žฅ๊ฐ์ฒด์ด์ง€๋งŒ, java์—์„œ๋Š” out์ด ๋‚ด์žฅ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๊ธฐ๋•Œ๋ฌธ์— JAVA์—์„œ ์“ธ๋• printWriter๋กœ ์‚ฌ์šฉํ•˜์—ฌ stream์— ์ ‘๊ทผํ•œ๋‹ค. PrintWriter out = response.getWriter(); out.print(""); ํ˜•์‹์œผ๋กœ ๋„˜๊ฒจ์ค˜์•ผํ•œ๋‹ค * request์˜ ์žฌํ™œ์šฉ - request์˜ ์žฌํ™œ์šฉ์€ ์„œ๋ฒ„์—์„œ๋งŒ ํ• ์ˆ˜์žˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์žฌ์‚ฌ์šฉ ํ• ์ˆ˜ ์—†๋‹ค. - ํ†ฐ์บฃ์€ ํ•ญ์ƒ ์ƒˆ๋กœ์šด request, response๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. requestDispatcher๋ฅผ ์ด์šฉํ•˜๋ฉด ์ƒˆ๋กœ์ƒ์„ฑ๋œ request, r..

java 2020.11.09

jsp - include

* include ์ง€์‹œ์–ด p.157 jspํŒŒ์ผ ๋˜๋Š” htmlํŒŒ์ผ์„ ํ•ด๋‹น jspํŽ˜์ด์ง€์— ์‚ฝ์ž…ํ• ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ง€์‹œ์–ด์ด๋‹ค. ํ™”๋ฉด์— ๊ณตํ†ต์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ๋ฉ”๋‰ด๋ฐ” ์ฝ”๋“œ๋ฅผ include์ง€์‹œ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€๋…์„ฑ์ด ์ข‹๊ณ  ๊ณตํ†ต๋˜๋Š” ๋ถ€๋ถ„์„ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ํฌํ•จ๋˜๋Š” ํŒŒ์ผ๋“ค์€ ์‹ค์ œ ์ปดํŒŒ์ผ ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ํ•ด๋‹น jspํŽ˜์ด์ง€์— ํฌํ•จ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ jsp์ฝ”๋“œ๊ฐ€ ํ•ด๋‹นjspํŽ˜์ด์ง€์— ๋ณต์‚ฌ๋˜์–ด ๋”ํ•ด์ง€๋ฏ€๋กœ ์„œ๋ธ”๋ฆฟ ์ปดํŒŒ์ผ ์‹œ ํ•œ๋ฒˆ์— ์ปดํŒŒ์ผ ๋œ๋‹ค. ๋ณ€์ˆ˜๋กœ์„œ๋„ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ includeํŒŒ์ผ์€ ํ•ฉ์ณ์„œ ์ปดํŒŒ์ผ ๋˜๋ฏ€๋กœ /body, /html์ด ์—†์Œ์— ์œ ์˜ํ•ด์•ผํ•œ๋‹ค. include์—์„œ ๊ฒฝ๋กœ ์ฐพ๋Š” ๊ธฐ๋ฒ•๊ณผ html๊ฒฝ๋กœ์ฐพ๋Š” ๊ธฐ๋ฒ•์ด ๋‹ค๋ฅด๋‹ค. *๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์ฐธ๊ณ  ์ฝ”๋“œ https://www.w3schools.com/bootst..

java 2020.10.30

jsp- request๊ฐ์ฒด

* ์‹ค์Šต์˜ˆ์ œ getparmeter(); // ์ด์™ธ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ : getReader(); // ์ ์ ˆํ•˜๊ฒŒ ํŒŒ์‹ฑ BufferedReader br=request.getReader(); String line = null; while((line=br.readLine())!=null){ System.out.println(line); } // 3๋ฒˆ header ํ™•์ธ String timer = request.getHeader("timer"); System.out.println("timer : "+timer); if(timer !=null){ System.out.print("์œ ํšจํ•œ ์ƒํƒœ"); }else { System.out.print("์œ ํšจํ•˜์ง€์•Š์€ ์ƒํƒœ"); } %> * ํฌ์ŠคํŠธ๋งจ์„ ์ด์šฉํ•˜์—ฌ get, post๋ฐฉ์‹ ๋ฐ์ด..

java 2020.10.30

jsp ๋‚ด์žฅ๊ฐ์ฒด ์ด์šฉํ•˜๊ธฐ

* ๋‚ด์žฅ๊ฐ์ฒด ๋‚ด ๊ฐ์ฒด ๋ณ€์ˆ˜๋ช… ์„ค๋ช… ์ƒ๋ช… request ํด๋ผ์ด์–ธํŠธ์˜HTTP ์š”์ฒญ์ •๋ณด๋ฅผ ์ €์žฅํ•œ ๊ฐ์ฒด(HTTP ํ—ค์–ด์ •๋ณด, ํŒŒ๋ผ๋ฏธํ„ฐ ๋“ฑ) ์ž๋™์ƒ์„ฑ, ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ์˜ํ•ด request ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค. response HTTP์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ์ •๋ณด๋ฅผ ์ €์žฅํ•œ ๊ฐ์ฒด ์ž๋™์ƒ์„ฑ, ์„œ๋ฒ„๋Š” ์ด์— respones๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค. session ํด๋ผ์ด์–ธํŠธ์˜ ์„ธ์…˜์ •๋ณด๋ฅผ ์ €์žฅํ•œ๊ฐ์ฒด ์‹ ๋ขฐํ• ์ˆ˜์žˆ๋Š” ์ •๋ณด(์ธ์ฆ์ •๋ณด)๊ฐ€ ์žˆ์„๋•Œ session์„ ํ™œ์„ฑํ™” ์‹œํ‚จ๋‹ค. pageContext ํŽ˜์ด์ง€ ์‹คํ–‰์— ํ•„์š”ํ•œ ์ปจํ…์ŠคํŠธ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ ๊ฐ์ฒด - appliction ๋™์ผํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ปจํ…์ŠคํŠธ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ ๊ฐ์ฒด ์›น์„œ๋ฒ„(ํ†ฐ์บฃ)์ด ์ €์žฅํ•˜๋Š” ์ •๋ณด - ์š”์ฒญ, ์‘๋‹ตํ• ๋•Œ๋งˆ๋‹ค ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ ์„œ๋ฒ„๋Š” request์ •๋ณด๋กœ ์‚ฌ์šฉ์ž๋ฅผ ๊ตฌ๋ณ„ํ•œ๋‹ค. ์ด๋•Œ request์˜ ์ •๋ณด..

java 2020.10.30

jsp ๊ธฐ์ดˆ

1. HTTP header๋ž€? ๋ฐ์ดํ„ฐ์˜ ๋ชฉ์ ์ง€, ๋ฐ์ดํ„ฐ์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. ์›น์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„๋•Œ ์–ด๋–ค ํ˜•์‹์˜ ํŒŒ์ผ์ธ์ง€ ๊ธฐ๋ณธ์ ์ธ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. ex) html์˜ ๊ธฐ๋ณธ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์ด ํŒŒ์ผ์€ utf-8๋กœ ์ฝ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ์•Œ๋ ค์ฃผ๊ณ  ์žˆ๋‹ค. 2. HTTP content -type ์ด๋ž€? - HTTPํŒŒ์ผ์„ ์ „์†กํ• ๋•Œ 3. MIME type ์ข…๋ฅ˜ (Multipurpose Internet Mail Extensions) - ์—ฌ๋Ÿฌํ˜•ํƒœ์˜ ํŒŒ์ผ(๋ฐ”์ด๋„ˆ๋ฆฌํŒŒ์ผ(์Œ์•…,๋ฌด๋น„,์›Œ๋“œ ๋“ฑ))์„ ๋ณด๋‚ด๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ ์ธ์ฝ”๋”ฉ๊ณผ ๋””์ฝ”๋”ฉ ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋•Œ ์–ด๋–คํ˜•์‹์œผ๋กœ ์ฃผ๊ณ  ๋ฐ›๋Š”์ง€๋ฅผ MIMEํƒ€์ž…์œผ๋กœ ๋ช…์‹œํ•ด๋†“์Œ. 4. ์•„ํŒŒ์น˜ / ํ†ฐ์บฃ - ์•„ํŒŒ์น˜ : HTTP ์›น์„œ๋ฒ„๋กœ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์š”์ฒญ..

java 2020.10.30

JSP ๊ธฐ๋ณธ๊ตฌ์กฐ

1. JSP ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ - JAVA ์†Œ์Šค๋Š” ์ž๋ฐ”์†Œ์Šค > src์— ๋„ฃ์–ด์•ผํ•จ. * WebContent (1) deploy(๋ฐฐํฌ) ํŒŒ์ผ์„ ๋ชจ์•„๋‘๋Š” ๊ณณ (2) ์ •์ ํŒŒ์ผ๋“ค์ด ๋ชจ์—ฌ์žˆ๋Š” ๊ณณ(๋ณด์•ˆ์ด ํ•„์š”์—†๋Š”๋ฐ์ดํ„ฐ) ex)html,scc,js,avi,png,jpg (์›น๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ•ด์„ ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ,ํ†ฐ์บฃ์ด ์ปดํŒŒ์ผํ•˜์ง€์•Š์•„๋„ ๋˜๋Š” ํŒŒ์ผ) ๋ˆ„๊ตฌ๋‚˜ ์ ‘๊ทผํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์™ธ) .jsp - ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ•ด์„ ๋ชปํ•จ, ํ†ฐ์บฃ์ด ํ•„์š” ์˜ˆ์™ธ) META-INFํด๋” , WEB-INFํด๋” (ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ) META-INF : context.xml (DB์—ฐ๊ฒฐ ์„ค์ • ํŒŒ์ผ, ๋ณด์•ˆ๋•Œ๋ฌธ์— jspํŒŒ์ผ๋กœ ์•ˆ์”€.) WEB-INF : web.xml(ํ•„ํ„ฐ๋ง, ์ฃผ์†Œ ๋ถ„๋ฐฐ), libํด๋”(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์›๋ž˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํŒŒ์ผ์— ..

java 2020.10.30

jsp์™€ ์„œ๋ธ”๋ฆฟ๋ฐฉ์‹

์ž๋ฐ”์ฝ”๋“œ์™€ html๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. jsp - (์ž๋ฐ”+html) ์ฝ”๋”ฉ์€ ์ƒ๋Œ€์ ์œผ๋กœ ์‰ฌ์šฐ๋‚˜ ํ˜‘์—…์ด ํž˜๋“ฌ. ์„œ๋ธ”๋ฆฟ - ์ž๋ฐ”์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  out.print(html์ฝ”๋“œ)ํ•จ. ์ฝ”๋”ฉ์ด ์–ด๋ ต๋‹ค ๋ชจ๋ธ 1๋ฐฉ์‹ : ๋ทฐ๊ฐ€ ๋ทฐ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹ ๋‹จ)์ฃผ์†Œ๋ฅผ ๋ฐ›๋Š” ํ•˜๋‚˜์˜ ์ค‘์žฌ์ž๊ฐ€ ์—†์–ด์„œ ํŒŒ์ผ๋ช…์ด ๋งŽ์•„์ง€๋ฉด ๋ณต์žกํ•˜๋‹ค. ํ•„์š”ํ•œ ์ฝ”๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€์— ์กด์žฌํ•œ๋‹ค. ๋ชจ๋ธ2๋ฐฉ์‹(MVC): ๋‘๊ฐ€์ง€์˜ ์žฅ์ ์„ ์„ž์Œ ํ•˜๋‚˜์˜ ์„œ๋ธ”๋ฆฟ ํŒŒ์ผ์„ ๋งŒ๋“ฌ. ์ปจํŠธ๋กค๋Ÿฌ(=๋ผ์šฐํ„ฐ, ์„œ๋ธ”๋ฆฟ์œผ๋กœ ์ž‘์„ฑ) ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ ํŒŒ์‹ฑํ•˜์—ฌ ์›ํ•˜๋Š” ํŽ˜์ด์ง€๋กœ ๋ผ์šฐํŒ…(ํ˜ธ์ถœ)ํ•จ. ํ˜ธ์ถœ๋ฐ›์€ ๋ทฐ๋Š” JSP๋กœ ๊ตฌํ˜„ ์ฆ‰ ์„œ๋ธ”๋ฆฟ์€ ์ง„์ž…๋กœ๋กœ ์‚ฌ์šฉ ์ง„์ž…ํ•˜์—ฌ ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ํ•„์š”ํ•œํŽ˜์ด์ง€๋Š” JSP๋กœ ๊ตฌํ˜„๋จ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ†ตํ•ด ๋ทฐ๋กœ ๊ฐ€๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ฌ๊ณ  ๊ฐˆ์ˆ˜์žˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ์— DB๋ฅผ ์—ฐ๊ฒฐํ•˜..

java 2020.10.28

์ฟผ๋ฆฌ์ŠคํŠธ๋ง

http://ip์ฃผ์†Œ:ํฌํŠธ/์ปจํ…์ŠคํŠธ__? ์ฟผ๋ฆฌ์ŠคํŠธ๋ง -> ? ๋’ค์— ์›ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ ค ๋™์ ์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ?key=value & key value .tip ์ปจํ…์ŠคํŠธ.html - url๋ฐฉ์‹ ์ปจํ…์ŠคํŠธ - uri๋ฐฉ์‹ ์„œ๋ธ”๋ฆฟ : ์ž๋ฐ”์ฝ”๋“œ๋งŒ์œผ๋กœ html์— ํ™”๋ฉด์ด ๊ตฌํ˜„๋˜๋„๋ก ํ•˜๋Š”๊ฒƒ ์ž๋ฐ” ๋‚ด html๋ณ€์ˆ˜์— html์ฝ”๋“œ๋ฅผ ์ ์–ด๋†“๊ณ  respones ํ•ด์คŒ http ํ˜„์žฌ๋ฒ„์ „ select-get insert-post get - ์ฃผ์†Œ๋’ค์— ๋‹ฌ๊ณ ๊ฐ post๋ฐฉ์‹ - ์ฃผ์†Œ๋’ค์— ์ปค๋ฆฌ์ŠคํŠธ๋ง์„ ๋ถ™์ผ์ˆ˜ ์—†๋‹ค. ๋ฐ”๋””์—๋Š” ๋‚ด๊ฐ€ ๋ฆฌํ€˜์ŠคํŠธํ• ๋•Œ ๋“ค๊ณ ๊ฐˆ ๋ฐ์ดํ„ฐ get, post๋“ฑ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ๋”๋ฏธ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ• ์ˆ˜์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ =>ํฌ์ŠคํŠธ๋งจ ๋‹ค์šด๋กœ๋“œ https://www.getpostman.com/downloads/ a์™€ b์˜..

java 2020.10.28

JSP-์‹œ์ž‘ํ•˜๊ธฐ(2)

- ์Šคํ”„๋ง ํˆด ์‹คํ–‰ - workspace, css files, html files, jsp files ์ „๋ถ€ utf-8๋กœ ๋ณ€๊ฒฝ tip. - euc-kr ์€ ์™„์„ฑํ˜•๊ธ€์ž. ํ…Œ์ด๋ธ”์•ˆ์— ๊ฐ•,๊ฐ ์ด๋Ÿฐ ์‹์œผ๋กœ ์™„์„ฑํ•œ ๊ธ€์žํ…Œ์ด๋ธ”์ด ์žˆ์Œ. ์ด์™ธ์˜ ์™„์„ฑํ˜•์ด ๋“ค์–ด์˜ค๋ฉด ๊ธ€์ž๊ฐ€ ๊นจ์ง - utf-8์กฐํ•ฉํ˜• ๊ธ€์ž (1byte) ใ…(1byte) ใ„ฑ(1byte) , ๋ชจ์Œ์ž์Œ ํ•˜๋‚˜๋งˆ๋‹ค 1byte์”ฉ ๋ถ€์—ฌํ•˜์—ฌ ์‚ฌ์šฉ ๊ตฌ์ฒด์  ๊ฒฝ๋กœ ์žก์•„์ฃผ๊ธฐ .classํŒŒ์ผ์€ build#classes ๋กœ ๊ฐ context root : localhost:8000/firstapp์œผ๋กœ ์ง„์ž…ํ•˜๊ฒŸ๋‹ค ์•„ํŒŒ์น˜์˜ ์ตœ์ข… ์—”๋“œํฌ์ธํŠธ content dirrectory : ์ •์ ์ธ ํŒŒ์ผ๋“ค, html, text ๋™์ ์ธ ํŒŒ์ผ์€ src์— ๋„ฃ์Œ context-path : ๋‚ด ์›น์„œ๋ฒ„(ํ”„๋กœ์ ํŠธ) ..

java 2020.10.28

JSP-์‹œ์ž‘ํ•˜๊ธฐ(1)

JSP๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „ ์ž‘์—…์˜ ํšจ์œจ์„ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ ์„ธํŒ…์„ ํ•ด์ฃผ๊ฒ ๋‹ค. 1. json ํ˜•์‹์˜ ํŒŒ์ผ์„ ๋ณด๊ธฐ์œ„ํ•œ ์›น์Šคํ† ์–ด ํ™•์žฅํ”„๋กœ๊ทธ๋žจ ์„ค์น˜ - ํฌ๋กฌ ์„ค์ • ->ํ™•์žฅํ”„๋กœ๊ทธ๋žจ -> ํฌ๋กฌ ์›น์Šคํ† ์–ด -> jsonview ๋‹ค์šด๋กœ๋“œ ์ถ”๊ฐ€ 2. ์บก์ณ ํ”„๋กœ๊ทธ๋žจ - ๋ผ์ดํŠธ์ƒท ์„ค์น˜ ์‚ฌ์‹ค ์ด๊ฑด ์„ ํƒ์‚ฌํ•ญ์ธ๋ฐ ๋‚˜๋Š” ์œ ์šฉํ•˜๊ฒŒ ์ž˜ ์‚ฌ์šฉ ํ•˜๊ณ  ์žˆ๋‹ค. https://app.prntscr.com/en/index.html 3. ์ฆ๊ฒจ์ฐพ๊ธฐ ๋ชฉ๋ก http://mvnrepository.com - ์ž๋ฐ”๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ http://tomcat.apache.org/- ์•„ํŒŒ์น˜ ์›น์„œ๋ฒ„ http://www.jsonschema2pojo.org/- ์ œ์ด์Šจ๊ณผ ์ž๋ฐ”์˜ ํ†ต์—ญ๊ธฐ ์—ญํ• (์Šคํ”„๋ง์—์„œ๋Š” ์ž๋™์œผ๋กœ ํ•ด์คŒ.) https://www.geeksforgeeks.org/jvm-..

java 2020.10.28