SlideShare a Scribd company logo
1 of 28
Download to read offline
March 2015
ED1.0
HR Kwon (hungrok@hanmail.net )
IT ๊ฐ•์˜์ž๋ฃŒ
Java Advanced
1
String Handling
๏‚ง Methods
. String ๊ฐ์ฒด๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ Method ๋“ค ์ด๋‹ค
. Static Method ๋Š” valueOf ์™€ format ์ด ์ œ๊ณต๋œ๋‹ค
< Methods >
. substring : ๋ฌธ์ž์—ด ์ž๋ฅด๊ธฐ, s2 = s1.substring(0,8) ;
. concat : ๋ฌธ์ž์—ด ์ด์–ด ๋ถ™์ด๊ธฐ, s2 = s1.concat(โ€œabcdโ€) ;
. split : ๋ฌธ์ž์—ด ๋‚˜๋ˆ„๊ธฐ , s2[] = s1.split(โ€œ^โ€) ; // โ€˜^โ€™ ๊ธฐํ˜ธ๋กœ ๋ถ„๋ฆฌ
. replace : ๋ฌธ์ž์—ด ๋ณ€ํ™˜ , s2 = s1.replace (โ€œkwonโ€ โ€œKangโ€) ;
. trim : ๋ฌธ์ž์—ด ์ขŒ์šฐ๊ณต๋ฐฑ์ œ๊ฑฐ, s2 = s1.trim() ; // ์ค‘๊ฐ„์— ๊ณต๋ฐฑ์€ ์ œ๊ฑฐ๋˜์ง€ ์•Š๋Š”๋‹ค
. valueOf : ๋‹ค๋ฅธ ์ž๋ฃŒํ˜• ์„ ๋ณ€ํ™˜ s1 = String.valueOf(data type) // date ๏ƒ  String , char[] ๋Š” ๋˜๋‚˜ byte[] ๋Š” ์•ˆ๋จ
. format : ๋‹ค๋ฅธ ์ž๋ฃŒํ˜• ์„ ๋ณ€ํ™˜ s1 = String.format(โ€œTest %d %l %f %s %tc โ€œ,,,,)
. charAt : ํŠน์ •ํ•œ Index ์˜ char ๋ฅผ ๊ตฌํ•จ , c1 = s1.charAt(3) ;
. getBytes : ์ „์ฒด Char ํš๋“ , byte[] = s1.getBytes() ; // ์ „์ฒด ํ˜น์€ ๋ถ€๋ถ„์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค
. getChars : ์ „์ฒด(๋ถ€๋ถ„) char ํš๋“ , s1.getChars (startIndex, LastIndex, char[], dest index) ;
. euals : ๋ฌธ์ž์—ด ์ „์ฒด๊ฒ€์‚ฌ , boolen = s1.equals (โ€œHello Javaโ€) ;
. contains : ๋ฌธ์ž์—ด ๋ถ€๋ถ„๊ฒ€์‚ฌ , boolen = s1.contains(โ€œhungrokโ€) ;
. startWith : ์‹œ์ž‘ ๋ฌธ์ž์—ด ๊ฒ€์‚ฌ , boolen = s1.startWith(โ€œhttpโ€) ;
. endWith : ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์—ด ๊ฒ€์‚ฌ , boolen = s1.endWith(โ€œcomโ€) ;
์˜ˆ์ œ1. format ์„ ์ด์šฉํ•˜์—ฌ concatenation ์ฒ˜๋ฆฌ
String str1 = "abcdefgh" ;
String str2 = "ababababa" ;
String str3 = "nnnnnnnnn" ;
String str4 = "" ;
str4 = String.format(โ€œ%s%s%s",str1,str2,str3) ;
์˜ˆ์ œ2. getChars ์™€ valueOf ๋ฅผ ์ด์šฉํ•˜์—ฌ ํŠน์ • index char ๋ณ€๊ฒฝ
String str1 = โ€œabcdefghโ€ ;
String str2 =โ€œโ€ ;
char car[] = new char[8] ;
str1.getChars(0,str1.length(),car,0) ;
car[3] = โ€˜Kโ€™ ;
str2 = String.valueOf(car) ; //๏ƒ  abcKefgh
2
Time Package
๏‚ง Time Package
. SE 8 ๋ถ€ํ„ฐ ์ง€์› (๊ทธ์ „์—๋Š” date, time, calendar ๊ฐ์ฒด ์‚ฌ์šฉ - ๋ชจ์ˆœ์  ๊ฐœ์„ )
. Factory ํ˜•์‹์œผ๋กœ ์ง€์›
. ๊ฐ์ฒด๋Š” ํ˜„์žฌ ํ˜น์€ ํŠน์ •์‹œ๊ฐ„์„ ์ฃผ์–ด์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ ํ•จ : ์˜ˆ. 2012.1.1 ์ผ์ž ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•ด๋‹น ๊ฐ์ฒด์˜ ์‹œ์ž‘์š”์ผ ์•Œ์•„๋‚ด๊ธฐ
๊ฐ์ฒด ํŠน์ •์‹œ๊ฐ„
๊ฐ์ฒด
๊ฐ์ฒด์ƒ์„ฑ
. LocalDateTiem.now()
. ZonedLocalDateTime.now()
. LocalDate.of (2013,12,25)
minusX
plusX
withX
< Methods >
get : Nano, Second, Minute, Hour, Year
: Month, MonthValue
: DayOfMonth ๏ƒ  1~31
: DayOfWeek ๏ƒ  SUNDAY ~ SATURDAY
: DayOfYear ๏ƒ  1~366
truncatedTo
isLeapYear
3
์ž๋ฃŒ๊ตฌ์กฐ
๏‚ง Collection Framework
. Collection ์ด๋ž€ ์—ฌ๋Ÿฌ Type ์„ ์ง€์›ํ•˜๋Š” ๋ฐฐ์—ด์„ ํ†ตํ•ด ์—ฐ์†๋œ ๊ณต๊ฐ„์— Data ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์กฐ์ž‘ํ•˜๊ธฐ ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“  ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๊ฐ์ฒด๋“ค์„ ๋งํ•œ๋‹ค
(1) List : n*1 ๊ตฌ์กฐ์˜ ๋ฐฐ์—ด๋กœ์„œ, ์ˆœ์„œ๋ฅผ ์ง€๋‹ˆ๋ฉฐ data ์ค‘๋ณต์ด ๊ฐ€๋Šฅํ•˜๋‹ค
(2) Set : n*1 ๊ตฌ์กฐ์˜ ๋ฐฐ์—ด๋กœ์„œ, ์ˆœ์„œ์˜ ์˜๋ฏธ๊ฐ€ ์—†์œผ๋ฉฐ data ์ค‘๋ณต์ด ๋ถˆ ๊ฐ€๋Šฅํ•˜๋‹ค
(3) Map : n*2 ๊ตฌ์กฐ์˜ ๋ฐฐ์—ด๋กœ์„œ ์ˆœ์„œ์˜ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค. HashMap ๋‹ค์ˆ˜๊ฐœ ๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ธฐ๋ณธ์ ์ธ Data Base ๊ธฐ๋Šฅ์ด ๊ฐ€๋Šฅ ํ•˜๋‹ค
. java.util ํ•˜๋ถ€์— Class ๊ฐ€ ์กด์žฌํ•œ๋‹ค
. ๊ณ„์ธต๊ตฌ์กฐ (Implementation ๊ด€๊ณ„)
Collection List
Set
Vector
ArrayList
Stack
LinkedList
SortedSet
HashSet
์ˆœ์„œ ๋‚˜ ์ง‘ํ•ฉ์ ์ธ ์ €์žฅ๊ณต๊ฐ„ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ €์žฅ๊ณต๊ฐ„
์ง‘ํ•ฉ์ ์ธ ์ €์žฅ๊ณต๊ฐ„
TreeSet
Map
SortedMap
HashMap
Hashtable
์Œ (ํ‚ค์™€ ๊ฐ’) ์˜ ๋ฐ์ดํ„ฐ
TreeMap
Interface
4
์ž๋ฃŒ๊ตฌ์กฐ
๏‚ง Collection Framework
. ๊ฐ ๊ฐ์ฒด ๋“ค Features
๊ฐ์ฒด ์„ค๋ช…
LinkedList . Array ๊ฐ„ Linked ๋˜์–ด์žˆ์Œ, Queue ๊ธฐ๋Šฅ์— ์ด์šฉ
. add(), addFirst(), addLast(), remove(), get(index), getFirst(), getLast(), isEmpty()
. peek(), poll(), pop(), push()
Stack . LIFO ๊ตฌ์กฐ
. push(), pop(), peak(), search()
ArrayList . ์ผ๋ฐ˜ ๋ฐฐ์—ด์— ์„œ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ์ฆ๊ฐ€ ๊ธฐ๋Šฅ (์ผ๋ฐ˜ Array ๋Š” size ๊ฐ€ ์ •์ ์œผ๋กœ ํ™•๋ณด)
. ๋™๊ธฐํ™”๋ฅผ ๋ณด์žฅํ•ด ์ฃผ์ง€ ์•Š๋Š”๋‹ค (๋™๊ธฐํ™” ๋ฐฉ๋ฒ• List list = Collections.synchronizeList(new ArrayList(โ€ฆ));
. add(), get(), toArray(), contains(), size()
Vector . ArrayList ์—์„œ ๋™๊ธฐํ™” ๊ฐ€ ๋ณด์žฅ ๋˜๋„๋ก ์ตœ์ ํ™”๋œ ๊ฒƒ ์ด๋‹ค (์ด๋Ÿฐ ์‚ฌ์œ ๋กœ AL ๋Œ€๋น„ ๋Š๋ฆฌ๋‹ค)
. JAVA 5.0 ์ดํ›„ Auto Boxing ์ง€์›
. addElement(), elementAt(), size(), contains(), indexOf(), insertElementAt(), setElementAt()
HashSet . ์ˆœ์„œ์˜ ์˜๋ฏธ๊ฐ€ ์—†์œผ๋ฉฐ, Data ์ค‘๋ณต ์ด ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋‹ค
. add(), next(), remove(), contains(), size()
TreeSet . Set ๊ธฐ๋Šฅ์„ ์ง€๋‹ˆ๋ฉด์„œ ์ •๋ ฌ๊ธฐ๋Šฅ ์ถ”๊ฐ€ (์ž๋™ ์˜ค๋ฆ„์ฐจ์ˆœ)
. ์‚ฌ์šฉ์ž ๊ฐ€ ์ง์ ‘ ์ •๋ ฌ๋ฐฉ์‹ ์ง€์ •๊ฐ€๋Šฅ (Comparator ๋ฅผ Implement ํ•˜์—ฌ compare() ๊ตฌํ˜„)
Hashtable . Key ์™€ value ๋กœ data ๊ด€๋ฆฌ, ๋™๊ธฐํ™” ๋ณด์žฅ , Null ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค
. ๊ฐ์ฒด ์ƒ์„ฑ : Hashtable<String, Object> h = new Hashtable<String, Object>();
. put(), get(), remove(), contains(), replace(), size(), keys(), elements()
HashMap . Key ์™€ value ๋กœ data ๊ด€๋ฆฌ, ๋™๊ธฐํ™” ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค, Null ํ—ˆ์šฉํ•œ๋‹ค
. ๊ฐ์ฒด ์ƒ์„ฑ : Map<String, Integer> map = new HashMap<String, Integer>();
. put(), get(), remove(), contains(), replace(), size(),
. Enumeration ๋ณ€ํ™˜ method (keys, elements) ๊ฐ€ ์—†๋‹ค
TreeMap . Map ๊ธฐ๋Šฅ์„ ์ง€๋‹ˆ๋ฉด์„œ ์ •๋ ฌ๊ธฐ๋Šฅ ์ถ”๊ฐ€ (Key ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ)
. ์‚ฌ์šฉ์ž ๊ฐ€ ์ง์ ‘ ์ •๋ ฌ๋ฐฉ์‹ ์ง€์ •๊ฐ€๋Šฅ (Comparator ๋ฅผ Implement ํ•˜์—ฌ compare() ๊ตฌํ˜„)
5
์ž๋ฃŒ๊ตฌ์กฐ
๏‚ง Collection Framework
. Template Code
< HashTable ๏ƒ  Enumber ๏ƒ  Search >
Hashtable ht = new Hashtable() ;
ht.put (โ€œa1โ€,obj1) ; // Key, Element Value
ht.put (โ€œa2โ€,obj2) ;
ht.put (โ€œa3โ€,obj3) ;
Enumeration keys = ht.keys() ;
Enumeration values = ht.elements() ;
While(keys.hasMoreElements()){ // boolean for search
String key = (String) keys.nextElements() ; // To get โ€œa1โ€, โ€œa2โ€, โ€œa3โ€
Object value = ht.get(key) ; // To get obj1,obj2,obj3
}
< ๊ฐ์ฒด์ƒ์„ฑ >
Hashtable ht1 = new Hashtable() ; // ht1 == ht2
Hashtable<Object, Object> ht2 = new Hashtable <Object,Object>() ;
Hashtable<String, Object> ht3 = new Hashtable <String,Object>() ;
Hashtable<String, Integer> ht4 = new Hashtable <String,Integer>() ;
Vector<String> vt1 = new Vector<String>() ;
Vector<Object> vt2 = new Vector<Object>() ;
ArrayList<String> al1 = new ArrayList<String>() ;
ArrayList<Object> al2 = new ArrayList<Object>() ;
Stack<String> st1 = new Stack<String>() ;
Stack<Object> st2 = new Stack<Object>() ;
LinkedList<String> ll1 = new LinkedList<String>() ;
LinkedList<Object> ll2 = new LinkedList<Object>() ;
6
I/O
๏‚ง ๊ธฐ๋ณธ๊ตฌ์กฐ
. ๋ฌธ์ž์—ด Stream ์ฒ˜๋ฆฌ๋Š” Reader / Writer ๊ฐ€ ๋‹ด๋‹นํ•˜๊ณ , Byte Stream ์ฒ˜๋ฆฌ๋Š” Stream ์ด ๋‹ด๋‹นํ•œ๋‹ค
. ๊ฐ ๊ฐ์ฒด ๋ณ„ ๊ณ„์ธต๊ตฌ์กฐ
Reader --- BufferedReader
--- IntputStreamReader โ€“- FileReader
Writer --- BufferedWriter
--- OutputtStreamWriter โ€“- FileWriter
InputStream --- FileInputStream ---- SocketInputStream
(Abstract) --- ByteArrayInputStream
--- SequenceInputStream
--- StringBufferInputStream
--- FilteredInputStream ---- DataInputStream
---- BufferedIntputStream
---- PushbackInputStream
---- ObjectInputStream
OutputStream --- FileOutputStream ---- SocketOutputStream
(Abstact) --- ByteArrayOutputStream
--- FilteredOutputStream ---- DataOutputStream
---- BufferedOutputStream
---- PrintStream
---- ObjectOutputStream
InputStreamReader
InputStream
Socket File
File
FileReader
๋ฌธ์ž์—ด Stream
Byte Stream
OutputStreamWriter
OutputStream
Socket File
File
FileWriter
Byte Stream
๋ฌธ์ž์—ด Stream
Byte Byte
7
I/O
๏‚ง File Handling
. File ๊ฐ์ฒด๋Š” File Descriptor ์ •๋ณด๋งŒ์„ ๊ฐ€์ง€๊ณ  Handling ํ•œ๋‹ค
. ๋ฌธ์ž์—ด Stream ์— ๋Œ€ํ•˜์—ฌ๋Š” FileReader / FileWriter ๋ฅผ ํ†ตํ•˜์—ฌ ์ฒ˜๋ฆฌํ•œ๋‹ค
File FileOutputStream
DataOutputStream
ObjectOutputStream
BufferedOutputStream
FileWriter BufferedWriter
File
Directory
File FileInputStream
DataInputStream
ObjectInputStream
BufferedInputStream
FileReader BufferedReader
get Name,Path,Parent,ParentFile
get Absolute, AbsoluteFile
list, listFiles
is Directory, Hidden, File
Mkdir, renameTo, delete, createNewFile
File
Directory
Byte Stream
Character Stream
Character Stream
Byte Stream
8
I/O
๏‚ง Stream ์„ธ๋ถ€์ข…๋ฅ˜
๋น„๊ณ  Stream Description ์ฐธ๊ณ 
์ƒ์œ„ FileOuputStream ํŒŒ์ผ ๊ฐ์ฒด์˜ entry point ์—ญํ• .
์ง์ ‘ write ํ•˜๊ฑฐ๋‚˜ Sub stream ์— Pipe line ๋˜์–ด์ง„๋‹ค
๊ฐ์ฒด ์ƒ์„ฑ์‹œ ์ธ์ž๋กœ File ๊ฐ์ฒด, Append ์œ ๋ฌด
write (buffer,index,size)
ByteArrayOuputStream Write ๋˜์–ด์ง„ Byte ๋ฅผ ์ „์ฒด๋กœ Byte[] ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ
toByteArray() ๋กœ Byte[] ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค
๊ฐ์ฒด ์ƒ์„ฑ์‹œ ์ธ์ž๋Š” ์—†๋‹ค
write (buffer,index,size)
ํ•˜์œ„ DataOutputStream 8๊ฐ€์ง€ Primitive data type ์œผ๋กœ write ๊ฐ€๋Šฅ ํ•˜๋ฉฐ
Pipe Line ์„ ํ†ตํ•˜์—ฌ ์ƒ์œ„ Output Stream ๊ณผ ์—ฐ๊ฒฐ๋œ๋‹ค
๊ฐ์ฒด ์ƒ์„ฑ์‹œ ์ธ์ž๋Š” ์ƒ์œ„ OS
writeByte, writeInt, writeDouble, writeUTF
ObjectOutputStream ์ง๋ ฌํ™” ๊ฐ€ ๋œ Object ์„ write ๊ฐ€๋Šฅ,
Pipe Line ์„ ํ†ตํ•˜์—ฌ ์ƒ์œ„ Output Stream ๊ณผ ์—ฐ๊ฒฐ๋œ๋‹ค
๊ฐ์ฒด ์ƒ์„ฑ์‹œ ์ธ์ž๋Š” ์ƒ์œ„ OS
writeObject (obj)
BufferedOutputStream Stream ์ž…์ถœ๋ ฅ ํšจ์œจ์„ ์œ„ํ•œ ๋ณด์กฐ Stream ๊ฐ์ฒด ์ƒ์„ฑ์‹œ ์ธ์ž๋Š” ์ƒ์œ„ OS, Buffered Size
write(buffer)
PrintStream ๋ฌธ์ž๊ธฐ๋ฐ˜ Stream ์œผ๋กœ์„œ
ํ‘œ์ค€ ์ถœ๋ ฅ์žฅ์น˜ (System.out) ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์‚ฌ์šฉ. ํ˜น์€,
Pipe Line ์„ ํ†ตํ•˜์—ฌ ์ƒ์œ„ Output Stream ๊ณผ ์—ฐ๊ฒฐ๋œ๋‹ค
๊ฐ์ฒด ์ƒ์„ฑ์‹œ ์ธ์ž๋Š” ์ƒ์œ„ OS
println , printf()
9
Network
๏‚ง Socket
. Socket ์ด๋ž€ : App ๊ณผ TCP/UDP ๋ฅผ ์—ฐ๊ฒฐ ํ•ด์ฃผ๋Š” ์žฅ์น˜ ์ด๋‹ค (Port Number ๋กœ ๊ด€๋ฆฌ)
. Socket ๊ฐ์ฒด ๊ฐ€ ๋งŒ๋“ค์–ด ์ง€๋ฉด, ํ•ด๋‹น OS Socket ๊ณผ ๋Œ€์‘๋˜๋Š” InputStream ๊ณผ OutputStream ๊ฐ์ฒด๋Š” ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค
. ์‚ฌ์šฉ์ž๋Š” IS ์™€ OS ๋งŒ์„ ๋ณด๊ณ  Handling ํ•˜๋ฉด ๋œ๋‹ค.
. read / write ํ–‰์œ„๋Š” ์ผ๋ฐ˜์ ์ธ I/O ์™€ ๋™์ผํ•˜๋‹ค.
. TCP ์šฉ (Connection Oriented) Client Socket ์ผ๋ฐ˜์ ์ธ ๋ชจ์Šต (Server ์šฉ์€ ServerSocket ์œผ๋กœ ๋ณ„๋„ ์กด์žฌ)
. UDP ์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ„๋„์˜ Socket ์œผ๋กœ ์กด์žฌํ•œ๋‹ค
Socket
Socket
InputStream
Socket
OutputStream
OS Socket OS Socket
Out TCP/IP packetIn TCP/IP packet
read() write()
Socket
DatagramPacketDatgramSocket
MulticastSocket
send(packet)
receive (packet)
10
Network
๏‚ง HTTP
. Socket ๊ตฌ์กฐ ์œ„์— HttpURLConnection ๊ฐ์ฒด๊ฐ€ Header ๋ฅผ ๋ฐœ์†กํ•˜๊ณ  ์ˆ˜์‹ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•œ๋‹ค
(Socket ๊ฐ์ฒด๋ฅผ App ์—์„œ ์ง์ ‘ ๋งŒ๋“ค์ง€๋Š” ์•Š๊ณ , ๋‚ด๋ถ€์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค)
. Entity Body ์˜ data ์— ๋Œ€ํ•˜์—ฌ๋Š” App ์—์„œ ์ง์ ‘ Handling ํ•œ๋‹ค
Socket
InputStream OutputStream
OS Socket OS Socket
Out TCP/IP packetIn TCP/IP packet
read() write()
Socket
HttpURLConnectionURL
. openConnection() ์˜ ๊ฒฐ๊ณผ๋กœ
HttpUrlConnection ๊ฐ์ฒด๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค
Request HeaderResponse Header
setRequestMethod : GET/PUT/POST ์ง€์ •
setRequestProperty : Header Parameter ์ง€์ •
setConnectTimeout
setUseCaches
setDoOutput
setDoInput
getResponseCode
getHeaderField
getContentLength
disconnect
Entity
Body
Entity
Body
11
Security (์•”ํ˜ธ)
๏‚ง ์ผ๋ฐ˜
. ๋น„๋Œ€์นญ Key (RSA) ๋ฐ ๋Œ€์นญ Key (AES,DES,3DES) ๋ฐœํ–‰
. ๋น„๋Œ€์นญ Key ๋ฅผ ์ด์šฉํ•œ ์„œ๋ช… ๋ฐ ์ฆ๋ช… (Signature & Verify) , Encryption ๋ฐ Decryption ์ฒ˜๋ฆฌ
. ๋Œ€์นญ Key ๋ฅผ ์ด์šฉํ•œ Encryption ๋ฐ Decryption ์ฒ˜๋ฆฌ
. ์ธ์ฆ์„œ ๋ฐœํ–‰ ๊ธฐ๋Šฅ์€ ์—†๊ณ  (3rd Party Class ๋Š” ๋ณธ ๊ธฐ๋Šฅ์ œ๊ณต), ์ธ์ฆ์„œ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„๋“ค์—ฌ ์ฆ๋ช… ๋ฐ ์ •๋ณด๋งŒ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์Œ
. ์ฃผ๋กœ Single Tone ๊ฐ์ฒด๋กœ ๊ตฌํ˜„ํ•จ
. ๋น„๋Œ€์นญ Key ์•Œ๊ณ ๋ฆฌ์ฆ˜ : SHA1 with DSA, MD5 with RSA, SHA1 with RSA, SHA256 with RSA
. ๋น„๋Œ€์นญ Key ์‚ฌ์šฉ
. Signature / Verify : Private key ๋กœ Signature ๏ƒ  ์ˆ˜์‹ ์ธก ์€ Public Key ๋กœ Verify
. Encryption / Decryption : Public Key ๋กœ Encryption ๏ƒ  ์ˆ˜์‹ ์ธก ์€ Private Key ๋กœ Decryption
. Public Key (๊ณต๊ฐœ Key) ๋Š” X509 ์ธ์ฆ์„œ์— ์กด์žฌํ•จ
. HTTPS ๋Š” ๋น„๋Œ€์นญ Key ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ encryption / decryption ์ฒ˜๋ฆฌ
12
Security (์•”ํ˜ธ)
๏‚ง Class ๋ณ„ ๊ธฐ๋Šฅ
. KeySpec ์—†์ด๋„ Cipher , Signature ์— ์ง์ ‘ Input ์œผ๋กœ ๊ฐ€๋Šฅ
. KeySpec ์€ ๊ณต์œ (์ „์†ก) ํ˜น์€ ์ €์žฅ์„ ์œ„ํ•˜์—ฌ ํ‘œ์ค€์— ์ •ํ•œ data format ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ž„
์˜ˆ. PKCS#8 ์—์„œ ์ •์˜๋œ PrivateKeyInfo = { [privateKey] }
X509 ์—์„œ ์ •์˜๋œ SubjectPublicKeyInfo = { [publicKey] }
SecretKeySpec
๋Œ€์นญ.key
KeyGenerator
private.key
public.key
KeyFactory Cipher
Signature
prvkeySpec
pubkeySpec
CertificateFactory
X509.cer
KeyPairGenerator
keySpec
SecretKeyFactory
SecretKey
DESKeySpec
13
GUI
๏‚ง ์†Œ๊ฐœ
. ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ GUI ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค : AWT Components ํ˜น์€ Swing Components ๋ฅผ ์‚ฌ์šฉ
. Swing ์€ AWT ์˜ ์•„๋ž˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ ๊ฒƒ์ด๋‹ค
1) Lightweight component ๋ฅผ ์ œ๊ณต : ์šด์˜์ฒด์ œ ๊ฐ€ native ๋กœ ๊ตฌํ˜„ ํ•œ component (Heavyweight ) ์˜ ์‚ฌ์šฉ์— ๋”ฐ๋ฅธ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ
2) AWT ์— ์—†๋Š” ์ถ”๊ฐ€๋œ Component ์˜ ์ œ๊ณต
3) AWT ๊ฐ€ ์ œ๊ณตํ•˜๋Š” Component ์˜ ๊ธฐ๋Šฅ์  ๋ณด๊ฐ• : ๋ฒ„ํŠผ์— ๋กค์˜ค๋ฒ„ ์ด๋ฏธ์ง€ ์‚ฌ์šฉ, ํ’์„ ๋ง ๊ธฐ๋Šฅ ๋“ฑ,,
4) Drag & Drop ๊ธฐ๋Šฅ : MIME ๊ธฐ๋ฐ˜ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ type ์‹œ์Šคํ…œ์„ ํ†ตํ•˜์—ฌ JAVA ์™€ Non-Java ๊ฐ„ data ๊ตํ™˜๋ชฉ์ 
OS
Component
User
Application
AWT
Package
JVM
Component
User
Application
Swing
Package
AWT
Package
14
GUI
๏‚ง ๊ณ„์ธต๊ตฌ์กฐ
. Swing ์˜ JComponent ๋Š” AWT ์˜ Container ๋ฅผ ์ƒ์†ํ•œ๋‹ค
. Swing ์˜ ์ตœ์ƒ์œ„ Container ๋Š” AWT ์˜ ์ตœ์ƒ์œ„ Container ๋ฅผ ์ƒ์†ํ•œ๋‹ค
15
GUI
๏‚ง Container
. ์ž์‹ ์˜ ์˜์—ญ์— ์ปดํฌ๋„ŒํŠธ๋ฅผ ํฌํ•จ์‹œํ‚ค๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํฌํ•จํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
. ์ปจํ…Œ์ด๋„ˆ์˜ ์ข…๋ฅ˜์—๋Š”
(1) ์ตœ์ƒ์œ„ Container : Frame, Applet, Dialog (JFrame, JApplet, JDialog)
(2) Sub Container : Panel, Window
. Frame ์€ Window ๋ฅผ ์ƒ์† ๋ฐ›์€ ๊ฐ์ฒด๋กœ์„œ Window ์— ๊ฒฝ๊ณ„์„ , ํƒ€์ดํ‹€, ๋ฉ”๋‰ด, ์‹œ์Šคํ…œ์ƒ์ž ๋“ฑ์ด ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์ด๋‹ค
. Applet ์€ Panel ์„ ์ƒ์†๋ฐ›์€ ๊ฐ์ฒด๋กœ์„œ, HTML ๋‚ด์— ํฌํ•จ๋˜์–ด์ ธ HTML ์˜ Window ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค
๏‚ง Panel
. Sub Container ์ด๋ฉฐ, ๋‹ค๋ฅธ Sub container (Panel) ๋„ ํฌํ•จ ๊ฐ€๋Šฅํ•˜๋‹ค
. Container ์™€ ๊ฐ™์ด ๋‹ค๋ฅธ component ๋ฅผ ์ž์‹ ์˜ ์˜์—ญ์— ํฌํ•จ ๊ฐ€๋Šฅํ•˜๋‹ค
. ์ตœ์ƒ์œ„ Container (Frame) ์— ํฌํ•จ ๋˜์–ด์ ธ ์‚ฌ์šฉ๋œ๋‹ค (์Šค์Šค๋กœ ๊ทธ๋ฆด ์ˆ˜ ๋Š” ์—†๋‹ค)
๏‚ง Layout ๊ฐ์ฒด
. Container ๋‚ด์˜ Component ๋“ค์„ ๋ฐฐ์น˜ ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค
. Layout ์ข…๋ฅ˜ : Flow (์ขŒ์šฐ ์‚ฌํ•ญ ๋ฐฐ์น˜) , Grid (ํ–‰๋ ฌ๋ฐฐ์น˜) , Border (๋™์„œ๋‚จ๋ถ์ค‘์•™ ๋ฐฐ์น˜ - Default) , Card (๋’ค์— ์ˆจ๊ธฐ ๋ฐฐ์น˜)
๏‚ง AWT Components
. OS ์—์„œ ์‹ค์ œ ๊ตฌํ˜„์„ ๋‹ด๋‹นํ•˜๋Š” Heavyweight Component ์ด๋‹ค
๏‚ง Swing Components
. JVM ์—์„œ ์‹ค์ œ ๊ตฌํ˜„์„ ๋‹ด๋‹นํ•˜๋Š” Lightweight Component ์ด๋‹ค
16
GUI
๏‚ง AWT ์—ฐ๊ฒฐ๊ตฌ์กฐ
. ์—ฐ๊ฒฐ ๊ด€๊ณ„๊ฐ€ Tree ๊ตฌ์กฐ๋ฅผ ์ง€๋‹Œ๋‹ค
. Container.add() method ๋ฅผ ํ†ตํ•˜์—ฌ ์—ฐ๊ฒฐ๊ด€๊ณ„๋ฅผ ํ˜•์„ฑ์‹œํ‚จ๋‹ค
. Panel ์€ Panel ์„ ํ•˜๋ถ€์— ์ง€๋‹ ์ˆ˜ ์žˆ๋‹ค
public static void main(String[] args) {
Frame fr = new Frame() ;
FlowLayout flo = new FLowLayout() ;
fr.setlayout(flo) ;
Panel pan1 = new Panel() ;
Panel pan2 = new Panel() ;
Button btn1 = new Button() ;
pan1.add(pan2) ;
pan1.add(btn1) ;
Button btn2 = new Button() ;
fr.add(pan1) ;
fr.add(btn2) ;
}
Frame
Panel
Panel
Component
Component
Component
Layout
Layout
Layout
17
GUI - Applet
๏‚ง Applet
. ์ž‘์€ Application ์ด๋ž€ ๋œป์œผ๋กœ, Client ์—์„œ Web Browser (Webkit) ๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ•˜๋Š” JAVA class ๋ฅผ ๋งํ•œ๋‹ค
(1) HTML ๋‚ด์—์„œ applet tag ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ (HTML5 ์—์„œ deprecated ๋˜์—ˆ์œผ๋ฉฐ object tag ์‚ฌ์šฉ) ์‹คํ–‰๋  class ๋ฅผ ์ง€์ •ํ•œ๋‹ค
(2) ํ•ด๋‹น class ๋Š” Webkit ์ด ๋‹ค์šด๋กœ๋“œ ํ•˜์—ฌ Local ์— ์œ„์น˜ ์‹œํ‚ค๊ณ  JRE ์—๊ฒŒ ์‹คํ–‰์„ ์š”์ฒญ ํ•œ๋‹ค
(3) Window ์—์„œ๋Š” jp2launcher.exe ๊ฐ€ java.exe ๋ฅผ (java plug-in) ์‹คํ–‰์‹œํ‚ค๋Š” ๊ตฌ์กฐ
. ๋ฐ˜๋“œ์‹œ Applet ์„ ์ƒ์† ํ•˜์—ฌ์•ผ ํ•œ๋‹ค (Applet ์€ Panel ์„ ์ƒ์†ํ•œ๋‹ค)
. Main thread ์—์„œ Life Cycle ์„ ๊ด€๋ฆฌํ•œ๋‹ค (init ๏ƒ  start or paint ๏ƒ  stop ๏ƒ  destroy)
HTML
<applet codebase = URL
code=AppleTest.class
width=200 height=100
</applet>
Webkit
public class AppletTest extends Applet {
public AppletTest(){ // Constructor
}
@Override
public void init(){}
@Override
public void start(){}
@Override
public void paint(Graphic g){}
@Override
public void stop(){}
@Override
public void destroy(){}
}
Applet
Panel
Component
Layout
Layout
Applet
Class
JAVA
Plug-In
HTML
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200"
codebase= URL
<param name="code" value="Applet1.class">
</object>
18
GUI
๏‚ง Swing Pane
. Swing ์—์„œ๋Š” Pane ๊ฐ์ฒด๋ฅผ ํ†ตํ•˜์—ฌ ๊ณต๊ฐ„์ ์ธ ์œ„์น˜์˜ ์—ฐ๊ฒฐ ๊ด€๊ณ„๊ฐ€ ํ˜•์„ฑ๋œ๋‹ค
. ์ƒ์œ„ Container (JFrame, JApplet, JDialog) ๊ฐ์ฒด ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์„ธ๊ฐ€์ง€ Pane (JRoot, JLayered, JContent) ์€ ์ž๋™ ์ƒ์„ฑ๋œ๋‹ค
. JRootPane ์€ ๊ฐ€์žฅ ์•ˆ์ชฝ์— ์žˆ์œผ๋ฉด์„œ ControlPnae ์ด ์ฐจ์ง€ํ•˜๋Š” ์˜์—ญ ๋ฐ”๊นฅ์œผ๋กœ Border ๋ฅผ ์ง€๋‹ˆ๊ณ  ์žˆ๋‹ค.
. JLayeredPane ์„ ๊ฐ€์ ธ๊ฐ€๋Š” ์ด์œ ๋Š” ๊ตฌ์„ฑ๋˜๋Š” Component ์— ๋Œ€ํ•˜์—ฌ ๊ณต๊ฐ„์  dimension ์ธ Z-Order ๋ฅผ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค
JLayeredpane ์€ JContentPane ํ•˜๋ถ€ ์— ๋„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค
. JContentPane ์€ JMenuBar ๊ฐ€ ์—†๋‹ค๋ฉด JLayeredPane ์˜ ์ „์ฒด ์˜์—ญ์— ๋†“์ด๊ฒŒ ๋œ๋‹ค.
์ด๋Ÿฐ ๊ฒฝ์šฐ, Component ๋ฅผ ๋ฐ”๋กœ LayeredPane ์— ๋ถ™์—ฌ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค
. JMenuBar ๋Š” JLayredPane ์— ๋ถ™์—ฌ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด๋Š” MenuItem ์ด ๋ณด์ผ๋•Œ High Priority Z order ๋ฅผ ๊ฐ€์ ธ๊ฐ€๊ธฐ ์œ„ํ•จ์ด๋‹ค
JRoot
Pane
JLayered
Pane
JContent
Pane
JMenuBar
JFrame
19
GUI
๏‚ง Swing Pane
. ์•„๋ž˜์™€ ๊ฐ™์ด ์„ธ๊ฐ€์ง€ ๋ชจ์Šต์œผ๋กœ ์‚ฌ์šฉ Pattern ์€ ๋ถ„๋ฅ˜ ํ•  ์ˆ˜ ์žˆ๋‹ค
(1) ์‚ฌ์šฉ๋ชจ์Šต 1 : JMENU ๋ฅผ ๊ฐ€์ ธ๊ฐ€๋Š” ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ
(2) ์‚ฌ์šฉ๋ชจ์Šต 2 : JMENU ์—†์ด ๊ฐ€์ ธ๊ฐ€๋ฉด์„œ, ๊ตฌ์„ฑ๋œ Component ๊ฐ„ Z order ๋ฅผ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒฝ์šฐ
(3) ์‚ฌ์šฉ๋ชจ์Šต 3 : JLayeredPane ์„ ContenPane ํ•˜๋ถ€์— ๊ตฌ์„ฑํ•˜์—ฌ, Component ์— ๋Œ€ํ•˜์—ฌ Z order ๋ฅผ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒฝ์šฐ
JFrame
Jroot
Pane
JLayered
Pane
JContent
Pane
Component
JMenuBar
์‚ฌ์šฉ๋ชจ์Šต 1
JFrame
Jroot
Pane
JLayered
Pane
Component
์‚ฌ์šฉ๋ชจ์Šต 2
JFrame
Jroot
Pane
JLayered
Pane
Jcontent
Pane
JLayered
Pane
JMenuBar
Component
์‚ฌ์šฉ๋ชจ์Šต 3
20
GUI
๏‚ง Swing JLayeredPane
. JLayeredPane adds depth to a JFC/Swing container, allowing components to overlap each other when needed.
An Integer object specifies each component's depth in the container, where higher-numbered components sit "on top" of other components.
Component 3
(Priority Order 1)
Component 2
(Priority Order 2)
Component 1
(Priority Order 3)
Layered
Pane
(jlp)
jlp.add(c1,3)
jlp.add(c2,2)
jlp.add(c3,1)
moveToBack(component)
moveToFront(component)
getPosition(component)
getLayer()
21
GUI
๏‚ง AWT Event Handling
. Listener Interface ๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด๋ฅผ Event ์†Œ์Šค๊ฐ์ฒด์— ๋“ฑ๋ก (addXListener) ํ•œ๋‹ค
๊ตฌ๋ถ„ Event Type ๊ฐ์ฒด Event ์†Œ์Šค ๊ฐ์ฒด ์„ค๋ช… Listener Interface
AWT KeyEvent Component ๋ชจ๋“  Component ์— ํ‚ค ๋™์ž‘ ๋ฐœ์ƒ์‹œ KeyListener
MouseEvent Component ๋ชจ๋“  Component ์— ๋งˆ์šฐ์Šค ๋™์ž‘ ๋ฐœ์ƒ์‹œ MouseListener
MouseMotionLister
FocusEvent Component ๋ชจ๋“  Component ์— focus On/Off ์‹œ FoxusListener
ComponentEvent Component ๋ชจ๋“  Component ์˜ ์ƒํƒœ๊ฐ์‹œ ComponentListener
TextEvent TextField TextArea Text ๋ณ€๊ฒฝ ์‹œ TextListener
WindowEvent Window Window ์ƒํƒœ๊ฐ์‹œ WindowListener
ContainerEvent Container Component ์ถ”๊ฐ€ ํ˜น์€ ์‚ญ์ œ ์‹œ ContainerListener
Swing ActionEvent JButton JList
JMenuItem JTextField
Item ์„ ํƒ ์‹œ ActionListener
ItemEvent JCheckBox JList
JCheckBoxMenuItem
์„ ํƒ ํ˜น์€ ํ•ด์ง€ ์‹œ ItemListener
AdjustEvent JScrollBar ์‚ฌ์šฉ์ž ๊ฐ€ ์›€์ง ์˜€์„ ๋•Œ AdjustmentListener
Event
์†Œ์Šค๊ฐ์ฒด
Event
X
Event ๊ฐ์ฒด
App
Listener Class
App
Main Class
addXListener
Method(event)
event.getSource() ๋ฅผ ํ†ตํ•˜์—ฌ
์†Œ์Šค๊ฐ์ฒด๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค
22
GUI
๏‚ง AWT Event Handling
. Template
package a.b.gui;
import java.awt.* ;
import javax.swing.* ;
public class Main{
public static void main(String[] args) {
JButton bt1 = new JButton() ;
bt1.addMouseListener (new AWTListenerClass . MouseListenerClass()) ;
}
}
package a.b.gui;
import java.awt.event.* ;
import java.util.* ;
public class AWTListenerClass {
public static class ActionListenerClass implements ActionListener{
@Override
public void actionPerformed (ActionEvent arg0){}
}
public static class KeyListenerClass implements KeyListener{
@Override
public void keyPressed(KeyEvent arg0) {}
public void keyReleased(KeyEvent arg0) {}
public void keyTyped(KeyEvent arg0) {}
}
public static class MouseListenerClass implements MouseListener{
@Override
public void mouseClicked(MouseEvent arg0) {}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mousePressed(MouseEvent arg0) {}
public void mouseReleased(MouseEvent arg0) {}
}
}
23
GUI
๏‚ง ์‚ฌ์šฉ์ž ์ •์˜ Graphics
. AWT : Canvas ์˜ paint() ๋ฅผ Override ํ•˜์—ฌ ๊ตฌํ˜„ ํ•œ๋‹ค.
. Swing : JPanel ์˜ paintComponent() ๋ฅผ Override ํ•˜์—ฌ ๊ตฌํ˜„ ํ•œ๋‹ค.
public class CustomJP extends JPanel(){
public CustomJP(){
this.setLayout(null) ;
this.setBounds(100,100,300,300) ;
}
@Override in Component
protected void paintComponent (Graphic g){
// ์‚ฌ์šฉ์ž ์ •์˜ Graphic
}
}
public class CustomCanvas extends Canvas(){
public CustomCanvas (){
this.setBounds(100,100,300,300) ;
}
@Override in Component
public void paint (Graphic g){
// ์‚ฌ์šฉ์ž ์ •์˜ Graphic
}
}
24
EE
๏‚ง Enterprise Edition
. ์„œ๋ฒ„ ์ธก ์—์„œ EE ์˜ ๋Œ€๋žต์ ์ธ ๋ชจ์Šต์ด๋‹ค
Web Server
Web Container
Servlets JSP
Web Application Server (WAS)
EJB Container
E JavaBean E JavaBean
JavaMail JMS JNDI JDBC
Browser
Client
Application
Client
Mail
Server
Message
Tx.
Directory
Service
Oracle
25
EE
๏‚ง JSP (Java Server Page) , Servlet
. ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๋Š” Java Class ๋กœ์„œ , ์•„๋ž˜ ์™€ ๊ฐ™์€ ๋ชฉ์  ์ด๋‹ค
(1) Dynamic html page ; ์ฃผ์–ด์ง„ Parameter ์— ๋Œ€์‘ํ•˜๋Š” HTML page ๋ฅผ ๋™์ ์œผ๋กœ ๋งŒ๋“ค์–ด์„œ client ์— ์ œ๊ณตํ•œ๋‹ค, http://URL/index.jsp
(2) Interact with FORM ; Post ๋˜์–ด์ง„ FORM ๊ฐ์ฒด์— ๋Œ€ํ•˜์—ฌ ํŠน์ •ํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค , FORM action = /Servlet/test1
. MVC (Model View Control) ์‚ฌ์šฉ๋ชจ๋ธ
(1) JSP Only : View, Controller ์—ญํ• ์„ JSP ํ˜ผ์ž ๋‹ด๋‹น
(2) JSP / Servlet : View ๋Š” JSP ๊ฐ€ ๋‹ด๋‹นํ•˜๊ณ , Controller ์—ญํ• ์€ Servlet ์ด ๋‹ด๋‹น
(3) JSP / JavaBean : View ๋Š” JSP ๊ฐ€ ๋‹ด๋‹นํ•˜๊ณ , Controller ์—ญํ• ์€ JavaBean ์ด ๋‹ด๋‹น
Web
Client
Web
Server
Servlet
(test1)
HTTP Post ?action=/Servelt/test1
Form
action=/Servlet/test1
Do Action
Web
Client
Web
Server
JSP
index.html
HTTP Get ?name=kwon
HTTP Response
index.jsp
๋™์  ์ƒ์„ฑ
์ฐธ๊ณ  (HTTP)
. abs_path ๋ฐ Parameter ๋Š”
URL ์˜ Optional ์ •๋ณด๋กœ์„œ
Request Line ์— ํฌํ•จ๋œ๋‹ค
26
EE JSP
๏‚ง JSP
. HTML ๋ฌธ์„œ (Page) ๋‚ด์— 3๊ฐ€์ง€ (์ง€์‹œ์–ด, Scripting, Action) Element ๋กœ ํ‘œํ˜„๋œ๋‹ค
. HTML ํŒŒ์ผ ํ™•์žฅ ์ž ๋ช… ์€ โ€œjspโ€ ๋กœ ํ•œ๋‹ค
. Runtime ์— javax.servlet.http.HttpServlet ์„ ์ƒ์†๋ฐ›๋Š” Servlet class ๊ฐ€ ๋งŒ๋“ค์–ด ์ง€๊ณ  JSP Container ๊ฐ€ life cycle ์„ ์ฃผ๊ด€ํ•œ๋‹ค
(๊ถ๊ทน์  ์œผ๋กœ๋Š” Servlet ๊ณผ ๋™๋ฅ˜์˜ ๊ฐœ๋…์ด๋‹ค)
. Servlet ์„ ์‚ฌ์šฉํ•˜๋ฉด HTML ๋ฌธ์„œ๋ฅผ ๋งŒ๋“ค๊ธฐ๊ฐ€ ๋‚œ์ด ํ•˜์—ฌ (PrintWriter ๋ฅผ ์ด์šฉ) , ํŽธ์˜ ๋ชฉ์ ์œผ๋กœ ๋‚˜์˜ด
. EE ์—์„œ ์ œ๊ณตํ•˜๋Š” JSP ์˜ ์•”๋ฌต์  ๊ฐ์ฒด : request, response, out, session, application, config, pageContext, page, exception
. MS ์˜ ASP (Active Server Page) ๋‚˜ PHP ์™€ ๋™์ผํ•œ ๊ธฐ๋Šฅ์ด๋‹ค
. ์ง€์‹œ์–ด Element : <%@ page โ€ฆ.. > , Page ์™€ Include ์ง€์‹œ์–ด ๋‘ ๊ฐ€์ง€ ์ด๋‹ค
. Page ์ง€์‹œ์–ด : language, import, session, buffer, autoFlush, isThreadSafe, info, errorPage, isErrorPage,
: contentType, pageEncoding, extends
.Scripting Element :
(1) Declaration <%! โ€ฆโ€ฆ. %> : ๋ฉค๋ฒ„๋ณ€์ˆ˜ ๋‚˜ ๋ฉ”์†Œ๋“œ ๋ฅผ ์„ ์–ธํ•  ๋•Œ ์‚ฌ์šฉ
(2) Expression <%= โ€ฆโ€ฆ %> : ๊ฐ„๋‹จํ•œ data ์ถœ๋ ฅ์ด๋‚˜ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์— ์‚ฌ์šฉ
(3) Scriptlet <% โ€ฆโ€ฆ.. %> : ์ˆœ์ˆ˜ Java code ๋งŒ ๊ฐ€๋Šฅ, Page ์˜ ๊ฐ„๊ฒฐ์„ฑ์„ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉ์ด ๊ถŒ๊ณ ๋˜์ง€ ์•Š๊ณ  JavaBeans ๋ฅผ ๋Œ€์‹ ์‚ฌ์šฉ
. Action Element : <jsp: โ€ฆ.. />
27
EE - Servlet
๏‚ง Servlet
. Client HTTP message ์—์„œ URL (Parameter ๊ฐ€ ํฌํ•จ๋œ) ๋กœ ์‚ฌ์šฉ์ด ๋˜์–ด์ง„๋‹ค (HTTP POST ?action=/Servlet/test1)
. Server ์ธก์—์„œ ์ˆ˜ํ–‰๋˜๋Š”, JAVA ๋กœ ๊ตฌํ˜„๋œ CGI (Common Gateway Interface) ์ด๋‹ค
. Web.xml ํŒŒ์ผ์„ ํ•„์š”๋กœ ํ•œ๋‹ค
. ๋ฐ˜๋“œ์‹œ javax.servlet.http.HttpServlet ์„ ์ƒ์† ํ•˜์—ฌ์•ผ ํ•œ๋‹ค
. Servlet Container ๊ฐ€ Life Cycle ์„ ๊ด€๋ฆฌํ•œ๋‹ค (init ๏ƒ  service ๏ƒ  destroy)
. ์ฃผ์š”ํ•œ Servlet Container ๋กœ๋Š” Tomcat, Jetty, Jboss ๋“ฑ์ด ์žˆ๋‹ค
public class ServletTest extends HttpServelet
{
@Override
public void init(){}
@Override
public void service(){}
@Override
public void doGet(){}
@Override
public void doPost(){}
@Override
public void destroy(){}
}
Web Server
Servlet
Container
Web Client
Servlet
Class
Web Server
HTTP Request
HTTP Response
service
doGet or doPost
By doGet or doPost
Web Application ์„ค์ •ํŒŒ์ผ
1) Servlet ์ •๋ณด
2) Error Page ์ •๋ณด
3) Listener ์ •๋ณด
4) Filter ์ •๋ณด
5) ๋ณด์•ˆ์„ค์ • ์ •๋ณด
web.xml

More Related Content

What's hot

แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Descriptorแ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160403
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Descriptorแ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160403แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Descriptorแ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160403
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Descriptorแ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160403
Yong Joon Moon
ย 
์ขŒ์ถฉ์šฐ๋Œ ORM ๊ฐœ๋ฐœ๊ธฐ | Devon 2012
์ขŒ์ถฉ์šฐ๋Œ ORM ๊ฐœ๋ฐœ๊ธฐ | Devon 2012์ขŒ์ถฉ์šฐ๋Œ ORM ๊ฐœ๋ฐœ๊ธฐ | Devon 2012
์ขŒ์ถฉ์šฐ๋Œ ORM ๊ฐœ๋ฐœ๊ธฐ | Devon 2012
Daum DNA
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„€แ…ขแ†จแ„Žแ…ฆแ„Œแ…ตแ„’แ…ฃแ†ผ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160131
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„€แ…ขแ†จแ„Žแ…ฆแ„Œแ…ตแ„’แ…ฃแ†ผ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160131แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„€แ…ขแ†จแ„Žแ…ฆแ„Œแ…ตแ„’แ…ฃแ†ผ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160131
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„€แ…ขแ†จแ„Žแ…ฆแ„Œแ…ตแ„’แ…ฃแ†ผ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160131
Yong Joon Moon
ย 

What's hot (20)

แ„‹แ…ฆแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ตแ†จแ„‰แ…ฅแ„Žแ…ต แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160613
แ„‹แ…ฆแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ตแ†จแ„‰แ…ฅแ„Žแ…ต แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160613แ„‹แ…ฆแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ตแ†จแ„‰แ…ฅแ„Žแ…ต แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160613
แ„‹แ…ฆแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ตแ†จแ„‰แ…ฅแ„Žแ…ต แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160613
ย 
DDD ๊ตฌํ˜„๊ธฐ์ดˆ (๊ฑฐ์˜ Final ๋ฒ„์ „)
DDD ๊ตฌํ˜„๊ธฐ์ดˆ (๊ฑฐ์˜ Final ๋ฒ„์ „)DDD ๊ตฌํ˜„๊ธฐ์ดˆ (๊ฑฐ์˜ Final ๋ฒ„์ „)
DDD ๊ตฌํ˜„๊ธฐ์ดˆ (๊ฑฐ์˜ Final ๋ฒ„์ „)
ย 
Ksug2015 - JPA3, JPA แ„‚แ…ขแ„‡แ…ฎแ„€แ…ฎแ„Œแ…ฉ
Ksug2015 - JPA3, JPA แ„‚แ…ขแ„‡แ…ฎแ„€แ…ฎแ„Œแ…ฉKsug2015 - JPA3, JPA แ„‚แ…ขแ„‡แ…ฎแ„€แ…ฎแ„Œแ…ฉ
Ksug2015 - JPA3, JPA แ„‚แ…ขแ„‡แ…ฎแ„€แ…ฎแ„Œแ…ฉ
ย 
ํŒŒ์ด์ฌ ๋ณ‘๋ ฌํ”„๋กœ๊ทธ๋ž˜๋ฐ
ํŒŒ์ด์ฌ ๋ณ‘๋ ฌํ”„๋กœ๊ทธ๋ž˜๋ฐํŒŒ์ด์ฌ ๋ณ‘๋ ฌํ”„๋กœ๊ทธ๋ž˜๋ฐ
ํŒŒ์ด์ฌ ๋ณ‘๋ ฌํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย 
[162] jpaแ„‹แ…ช แ„†แ…ฉแ„ƒแ…ฅแ†ซ แ„Œแ…กแ„‡แ…ก แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„Œแ…ฅแ„Œแ…กแ†ผ แ„€แ…ตแ„‰แ…ฎแ†ฏ
[162] jpaแ„‹แ…ช แ„†แ…ฉแ„ƒแ…ฅแ†ซ แ„Œแ…กแ„‡แ…ก แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„Œแ…ฅแ„Œแ…กแ†ผ แ„€แ…ตแ„‰แ…ฎแ†ฏ[162] jpaแ„‹แ…ช แ„†แ…ฉแ„ƒแ…ฅแ†ซ แ„Œแ…กแ„‡แ…ก แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„Œแ…ฅแ„Œแ…กแ†ผ แ„€แ…ตแ„‰แ…ฎแ†ฏ
[162] jpaแ„‹แ…ช แ„†แ…ฉแ„ƒแ…ฅแ†ซ แ„Œแ…กแ„‡แ…ก แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„Œแ…ฅแ„Œแ…กแ†ผ แ„€แ…ตแ„‰แ…ฎแ†ฏ
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
ย 
ํŒŒ์ด์ฌ namespace Binding ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ namespace Binding ์ดํ•ดํ•˜๊ธฐ ํŒŒ์ด์ฌ namespace Binding ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ namespace Binding ์ดํ•ดํ•˜๊ธฐ
ย 
์ž๋ฐ”์•ผ ๋†€์ž PPT
์ž๋ฐ”์•ผ ๋†€์ž PPT์ž๋ฐ”์•ผ ๋†€์ž PPT
์ž๋ฐ”์•ผ ๋†€์ž PPT
ย 
MyBatis์—์„œ JPA๋กœ
MyBatis์—์„œ JPA๋กœMyBatis์—์„œ JPA๋กœ
MyBatis์—์„œ JPA๋กœ
ย 
Ksug2015 - JPA1, JPA ์†Œ๊ฐœ
Ksug2015 - JPA1, JPA ์†Œ๊ฐœKsug2015 - JPA1, JPA ์†Œ๊ฐœ
Ksug2015 - JPA1, JPA ์†Œ๊ฐœ
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Descriptorแ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160403
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Descriptorแ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160403แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Descriptorแ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160403
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Descriptorแ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160403
ย 
Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•
Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•
Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•
ย 
5-5. html5 connectivity
5-5. html5 connectivity5-5. html5 connectivity
5-5. html5 connectivity
ย 
์ขŒ์ถฉ์šฐ๋Œ ORM ๊ฐœ๋ฐœ๊ธฐ | Devon 2012
์ขŒ์ถฉ์šฐ๋Œ ORM ๊ฐœ๋ฐœ๊ธฐ | Devon 2012์ขŒ์ถฉ์šฐ๋Œ ORM ๊ฐœ๋ฐœ๊ธฐ | Devon 2012
์ขŒ์ถฉ์šฐ๋Œ ORM ๊ฐœ๋ฐœ๊ธฐ | Devon 2012
ย 
ํŒŒ์ด์ฌ ํŒŒ์ผ์ฒ˜๋ฆฌ ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ ํŒŒ์ผ์ฒ˜๋ฆฌ ์ดํ•ดํ•˜๊ธฐํŒŒ์ด์ฌ ํŒŒ์ผ์ฒ˜๋ฆฌ ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ ํŒŒ์ผ์ฒ˜๋ฆฌ ์ดํ•ดํ•˜๊ธฐ
ย 
Ksug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผ
Ksug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผKsug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผ
Ksug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผ
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐ
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„€แ…ขแ†จแ„Žแ…ฆแ„Œแ…ตแ„’แ…ฃแ†ผ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160131
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„€แ…ขแ†จแ„Žแ…ฆแ„Œแ…ตแ„’แ…ฃแ†ผ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160131แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„€แ…ขแ†จแ„Žแ…ฆแ„Œแ…ตแ„’แ…ฃแ†ผ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160131
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„€แ…ขแ†จแ„Žแ…ฆแ„Œแ…ตแ„’แ…ฃแ†ผ+แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต 20160131
ย 
Jupyter notebook ์ดํ•ดํ•˜๊ธฐ
Jupyter notebook ์ดํ•ดํ•˜๊ธฐ Jupyter notebook ์ดํ•ดํ•˜๊ธฐ
Jupyter notebook ์ดํ•ดํ•˜๊ธฐ
ย 
4-1. javascript
4-1. javascript4-1. javascript
4-1. javascript
ย 

Viewers also liked

(140118) #fitalk detection of anti-forensics artifacts using ioa fs
(140118) #fitalk   detection of anti-forensics artifacts using ioa fs(140118) #fitalk   detection of anti-forensics artifacts using ioa fs
(140118) #fitalk detection of anti-forensics artifacts using ioa fs
INSIGHT FORENSIC
ย 

Viewers also liked (19)

์ œ5ํšŒ์ธํ„ฐ๋„ท๋ฆฌ๋”์‹ญํ”„๋กœ๊ทธ๋žจ_์™•์ดˆ๋ณด๋ฅผ ์œ„ํ•œ ํŠธ์œ„ํ„ฐ ์™„๋ฒฝ ํ™œ์šฉ_์ •์ง„ํ˜ธ
์ œ5ํšŒ์ธํ„ฐ๋„ท๋ฆฌ๋”์‹ญํ”„๋กœ๊ทธ๋žจ_์™•์ดˆ๋ณด๋ฅผ ์œ„ํ•œ ํŠธ์œ„ํ„ฐ ์™„๋ฒฝ ํ™œ์šฉ_์ •์ง„ํ˜ธ์ œ5ํšŒ์ธํ„ฐ๋„ท๋ฆฌ๋”์‹ญํ”„๋กœ๊ทธ๋žจ_์™•์ดˆ๋ณด๋ฅผ ์œ„ํ•œ ํŠธ์œ„ํ„ฐ ์™„๋ฒฝ ํ™œ์šฉ_์ •์ง„ํ˜ธ
์ œ5ํšŒ์ธํ„ฐ๋„ท๋ฆฌ๋”์‹ญํ”„๋กœ๊ทธ๋žจ_์™•์ดˆ๋ณด๋ฅผ ์œ„ํ•œ ํŠธ์œ„ํ„ฐ ์™„๋ฒฝ ํ™œ์šฉ_์ •์ง„ํ˜ธ
ย 
๋น„์˜๋ฆฌ ์‚ฌ์—…์—์„œ ๊ผญ ํ•„์š”ํ•œ ์ธํ„ฐ๋„ท ๋„๊ตฌ (์œ ์Šน์ฒ )
๋น„์˜๋ฆฌ ์‚ฌ์—…์—์„œ ๊ผญ ํ•„์š”ํ•œ ์ธํ„ฐ๋„ท ๋„๊ตฌ (์œ ์Šน์ฒ )๋น„์˜๋ฆฌ ์‚ฌ์—…์—์„œ ๊ผญ ํ•„์š”ํ•œ ์ธํ„ฐ๋„ท ๋„๊ตฌ (์œ ์Šน์ฒ )
๋น„์˜๋ฆฌ ์‚ฌ์—…์—์„œ ๊ผญ ํ•„์š”ํ•œ ์ธํ„ฐ๋„ท ๋„๊ตฌ (์œ ์Šน์ฒ )
ย 
IT ์ผ๋ฐ˜๊ธฐ์ˆ  ๊ฐ•์˜์ž๋ฃŒ_ed10
IT ์ผ๋ฐ˜๊ธฐ์ˆ  ๊ฐ•์˜์ž๋ฃŒ_ed10IT ์ผ๋ฐ˜๊ธฐ์ˆ  ๊ฐ•์˜์ž๋ฃŒ_ed10
IT ์ผ๋ฐ˜๊ธฐ์ˆ  ๊ฐ•์˜์ž๋ฃŒ_ed10
ย 
(120616) #fitalk web browser forensics - part iii
(120616) #fitalk   web browser forensics - part iii(120616) #fitalk   web browser forensics - part iii
(120616) #fitalk web browser forensics - part iii
ย 
Een digitale bibliotheek of alleen Google?
Een digitale bibliotheek of alleen Google?Een digitale bibliotheek of alleen Google?
Een digitale bibliotheek of alleen Google?
ย 
2013 ๊ฟˆ๋‹ค๋ฝ ํ† ์š”๋ฌธํ™”ํ•™๊ต ์œ ์Šค๋ณด์ด์Šค 8๊ฒฝ ์žก์ง€๋งŒ๋“ค๊ธฐ ๊ฒฐ๊ณผ๋ฌผ - Case
2013 ๊ฟˆ๋‹ค๋ฝ ํ† ์š”๋ฌธํ™”ํ•™๊ต ์œ ์Šค๋ณด์ด์Šค 8๊ฒฝ ์žก์ง€๋งŒ๋“ค๊ธฐ ๊ฒฐ๊ณผ๋ฌผ - Case2013 ๊ฟˆ๋‹ค๋ฝ ํ† ์š”๋ฌธํ™”ํ•™๊ต ์œ ์Šค๋ณด์ด์Šค 8๊ฒฝ ์žก์ง€๋งŒ๋“ค๊ธฐ ๊ฒฐ๊ณผ๋ฌผ - Case
2013 ๊ฟˆ๋‹ค๋ฝ ํ† ์š”๋ฌธํ™”ํ•™๊ต ์œ ์Šค๋ณด์ด์Šค 8๊ฒฝ ์žก์ง€๋งŒ๋“ค๊ธฐ ๊ฒฐ๊ณผ๋ฌผ - Case
ย 
(140118) #fitalk detection of anti-forensics artifacts using ioa fs
(140118) #fitalk   detection of anti-forensics artifacts using ioa fs(140118) #fitalk   detection of anti-forensics artifacts using ioa fs
(140118) #fitalk detection of anti-forensics artifacts using ioa fs
ย 
(150124) #fitalk advanced $usn jrnl forensics (english)
(150124) #fitalk   advanced $usn jrnl forensics (english)(150124) #fitalk   advanced $usn jrnl forensics (english)
(150124) #fitalk advanced $usn jrnl forensics (english)
ย 
(150124) #fitalk advanced $usn jrnl forensics (korean)
(150124) #fitalk   advanced $usn jrnl forensics (korean)(150124) #fitalk   advanced $usn jrnl forensics (korean)
(150124) #fitalk advanced $usn jrnl forensics (korean)
ย 
Jsp convert to Servlet
Jsp convert to ServletJsp convert to Servlet
Jsp convert to Servlet
ย 
์ฝ”๋”ฉ์—๋Š” ์ข‹์€ ๋…ธํŠธ๋ถ์ด ํ•„์š” ์—†๋‹ค
์ฝ”๋”ฉ์—๋Š” ์ข‹์€ ๋…ธํŠธ๋ถ์ด ํ•„์š” ์—†๋‹ค์ฝ”๋”ฉ์—๋Š” ์ข‹์€ ๋…ธํŠธ๋ถ์ด ํ•„์š” ์—†๋‹ค
์ฝ”๋”ฉ์—๋Š” ์ข‹์€ ๋…ธํŠธ๋ถ์ด ํ•„์š” ์—†๋‹ค
ย 
Server
ServerServer
Server
ย 
[๊ฑฐ์˜ ๋ชจ๋“  ์ธํ„ฐ๋„ท์˜ ์—ญ์‚ฌ, ๊ทธ๋ฆฌ๊ณ  ๋ฏธ๋ž˜ - ์ •์ง€ํ›ˆ
[๊ฑฐ์˜ ๋ชจ๋“  ์ธํ„ฐ๋„ท์˜ ์—ญ์‚ฌ, ๊ทธ๋ฆฌ๊ณ  ๋ฏธ๋ž˜ - ์ •์ง€ํ›ˆ[๊ฑฐ์˜ ๋ชจ๋“  ์ธํ„ฐ๋„ท์˜ ์—ญ์‚ฌ, ๊ทธ๋ฆฌ๊ณ  ๋ฏธ๋ž˜ - ์ •์ง€ํ›ˆ
[๊ฑฐ์˜ ๋ชจ๋“  ์ธํ„ฐ๋„ท์˜ ์—ญ์‚ฌ, ๊ทธ๋ฆฌ๊ณ  ๋ฏธ๋ž˜ - ์ •์ง€ํ›ˆ
ย 
2013 ๊ฟˆ๋‹ค๋ฝ ํ† ์š”๋ฌธํ™”ํ•™๊ต ์œ ์Šค๋ณด์ด์Šค 8๊ฒฝ ์บ๋ฆญํ„ฐ ์„ค์ • ์ž๋ฃŒ์ง‘
2013 ๊ฟˆ๋‹ค๋ฝ ํ† ์š”๋ฌธํ™”ํ•™๊ต ์œ ์Šค๋ณด์ด์Šค 8๊ฒฝ ์บ๋ฆญํ„ฐ ์„ค์ • ์ž๋ฃŒ์ง‘2013 ๊ฟˆ๋‹ค๋ฝ ํ† ์š”๋ฌธํ™”ํ•™๊ต ์œ ์Šค๋ณด์ด์Šค 8๊ฒฝ ์บ๋ฆญํ„ฐ ์„ค์ • ์ž๋ฃŒ์ง‘
2013 ๊ฟˆ๋‹ค๋ฝ ํ† ์š”๋ฌธํ™”ํ•™๊ต ์œ ์Šค๋ณด์ด์Šค 8๊ฒฝ ์บ๋ฆญํ„ฐ ์„ค์ • ์ž๋ฃŒ์ง‘
ย 
SoftLayer์—์„œ VM ์ƒ์„ฑํ•ด๋ณด๊ธฐ!
SoftLayer์—์„œ VM ์ƒ์„ฑํ•ด๋ณด๊ธฐ!SoftLayer์—์„œ VM ์ƒ์„ฑํ•ด๋ณด๊ธฐ!
SoftLayer์—์„œ VM ์ƒ์„ฑํ•ด๋ณด๊ธฐ!
ย 
SoftLayer์—์„œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜ธ์ŠคํŒ…ํ•˜๊ธฐ - WordPress on SoftLayer
SoftLayer์—์„œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜ธ์ŠคํŒ…ํ•˜๊ธฐ - WordPress on SoftLayerSoftLayer์—์„œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜ธ์ŠคํŒ…ํ•˜๊ธฐ - WordPress on SoftLayer
SoftLayer์—์„œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜ธ์ŠคํŒ…ํ•˜๊ธฐ - WordPress on SoftLayer
ย 
SoftLayer ์„œ๋น„์Šค ์„ค๋ช… 5์ฐจ - ๋ณด์•ˆ
SoftLayer ์„œ๋น„์Šค ์„ค๋ช… 5์ฐจ - ๋ณด์•ˆSoftLayer ์„œ๋น„์Šค ์„ค๋ช… 5์ฐจ - ๋ณด์•ˆ
SoftLayer ์„œ๋น„์Šค ์„ค๋ช… 5์ฐจ - ๋ณด์•ˆ
ย 
์„œ๋ฒ„/์ธํ”„๋ผ๋ฅผ ์ง€ํƒฑํ•˜๋Š” ๊ธฐ์ˆ 
์„œ๋ฒ„/์ธํ”„๋ผ๋ฅผ ์ง€ํƒฑํ•˜๋Š” ๊ธฐ์ˆ ์„œ๋ฒ„/์ธํ”„๋ผ๋ฅผ ์ง€ํƒฑํ•˜๋Š” ๊ธฐ์ˆ 
์„œ๋ฒ„/์ธํ”„๋ผ๋ฅผ ์ง€ํƒฑํ•˜๋Š” ๊ธฐ์ˆ 
ย 
(160820) #fitalk fileless malware forensics
(160820) #fitalk    fileless malware forensics(160820) #fitalk    fileless malware forensics
(160820) #fitalk fileless malware forensics
ย 

Similar to Java advancd ed10

SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8
Sangmin Lee
ย 
10์žฅ ๋ฌธ์ž์—ดํด๋ž˜์Šค์™€ํŒŒ์ผํด๋ž˜์Šค
10์žฅ ๋ฌธ์ž์—ดํด๋ž˜์Šค์™€ํŒŒ์ผํด๋ž˜์Šค10์žฅ ๋ฌธ์ž์—ดํด๋ž˜์Šค์™€ํŒŒ์ผํด๋ž˜์Šค
10์žฅ ๋ฌธ์ž์—ดํด๋ž˜์Šค์™€ํŒŒ์ผํด๋ž˜์Šค
์›…์‹ ์ „
ย 
10แ„Œแ…กแ†ผ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณแ„‹แ…ช แ„‘แ…กแ„‹แ…ตแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ
10แ„Œแ…กแ†ผ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณแ„‹แ…ช แ„‘แ…กแ„‹แ…ตแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ10แ„Œแ…กแ†ผ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณแ„‹แ…ช แ„‘แ…กแ„‹แ…ตแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ
10แ„Œแ…กแ†ผ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณแ„‹แ…ช แ„‘แ…กแ„‹แ…ตแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ
์œ ์„ ๋‚จ
ย 
Scala
ScalaScala
Scala
Jaejin Yun
ย 
๊ฐ•์˜์ž๋ฃŒ4
๊ฐ•์˜์ž๋ฃŒ4๊ฐ•์˜์ž๋ฃŒ4
๊ฐ•์˜์ž๋ฃŒ4
Young Wook Kim
ย 
๊ฐ•์˜์ž๋ฃŒ3
๊ฐ•์˜์ž๋ฃŒ3๊ฐ•์˜์ž๋ฃŒ3
๊ฐ•์˜์ž๋ฃŒ3
Young Wook Kim
ย 
JSON with C++ & C#
JSON with C++ & C#JSON with C++ & C#
JSON with C++ & C#
Gyeongwook Choi
ย 

Similar to Java advancd ed10 (20)

SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8
ย 
Java stream v0.1
Java stream v0.1Java stream v0.1
Java stream v0.1
ย 
Java stream v0.1
Java stream v0.1Java stream v0.1
Java stream v0.1
ย 
10์žฅ ๋ฌธ์ž์—ดํด๋ž˜์Šค์™€ํŒŒ์ผํด๋ž˜์Šค
10์žฅ ๋ฌธ์ž์—ดํด๋ž˜์Šค์™€ํŒŒ์ผํด๋ž˜์Šค10์žฅ ๋ฌธ์ž์—ดํด๋ž˜์Šค์™€ํŒŒ์ผํด๋ž˜์Šค
10์žฅ ๋ฌธ์ž์—ดํด๋ž˜์Šค์™€ํŒŒ์ผํด๋ž˜์Šค
ย 
10แ„Œแ…กแ†ผ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณแ„‹แ…ช แ„‘แ…กแ„‹แ…ตแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ
10แ„Œแ…กแ†ผ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณแ„‹แ…ช แ„‘แ…กแ„‹แ…ตแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ10แ„Œแ…กแ†ผ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณแ„‹แ…ช แ„‘แ…กแ„‹แ…ตแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ
10แ„Œแ…กแ†ผ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณแ„‹แ…ช แ„‘แ…กแ„‹แ…ตแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ
ย 
Collection framework
Collection frameworkCollection framework
Collection framework
ย 
Scala
ScalaScala
Scala
ย 
์ž๋ฐ”๋กœ ๋ฐฐ์šฐ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
์ž๋ฐ”๋กœ ๋ฐฐ์šฐ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž๋ฐ”๋กœ ๋ฐฐ์šฐ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
์ž๋ฐ”๋กœ ๋ฐฐ์šฐ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
ย 
๊ฐ•์˜์ž๋ฃŒ4
๊ฐ•์˜์ž๋ฃŒ4๊ฐ•์˜์ž๋ฃŒ4
๊ฐ•์˜์ž๋ฃŒ4
ย 
Startup JavaScript 5 - ๊ฐ์ฒด(Date, RegExp, Object, Global)
Startup JavaScript 5 - ๊ฐ์ฒด(Date, RegExp, Object, Global)Startup JavaScript 5 - ๊ฐ์ฒด(Date, RegExp, Object, Global)
Startup JavaScript 5 - ๊ฐ์ฒด(Date, RegExp, Object, Global)
ย 
(๋ง์ž‘)์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.16 ์ŠคํŠธ๋ฆผ&๋ณ‘๋ ฌ์ฒ˜๋ฆฌ Stream&parallel processing(java)
(๋ง์ž‘)์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.16 ์ŠคํŠธ๋ฆผ&๋ณ‘๋ ฌ์ฒ˜๋ฆฌ Stream&parallel processing(java)(๋ง์ž‘)์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.16 ์ŠคํŠธ๋ฆผ&๋ณ‘๋ ฌ์ฒ˜๋ฆฌ Stream&parallel processing(java)
(๋ง์ž‘)์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.16 ์ŠคํŠธ๋ฆผ&๋ณ‘๋ ฌ์ฒ˜๋ฆฌ Stream&parallel processing(java)
ย 
๊ฐ•์˜์ž๋ฃŒ3
๊ฐ•์˜์ž๋ฃŒ3๊ฐ•์˜์ž๋ฃŒ3
๊ฐ•์˜์ž๋ฃŒ3
ย 
ํŒŒ์ด์ฌ ํฌ๋กค๋ง ๋ชจ๋“ˆ
ํŒŒ์ด์ฌ ํฌ๋กค๋ง ๋ชจ๋“ˆํŒŒ์ด์ฌ ํฌ๋กค๋ง ๋ชจ๋“ˆ
ํŒŒ์ด์ฌ ํฌ๋กค๋ง ๋ชจ๋“ˆ
ย 
JSON with C++ & C#
JSON with C++ & C#JSON with C++ & C#
JSON with C++ & C#
ย 
R ํ”„๋กœ๊ทธ๋žจ์˜ ์ดํ•ด์™€ ํ™œ์šฉ v1.1
R ํ”„๋กœ๊ทธ๋žจ์˜ ์ดํ•ด์™€ ํ™œ์šฉ v1.1R ํ”„๋กœ๊ทธ๋žจ์˜ ์ดํ•ด์™€ ํ™œ์šฉ v1.1
R ํ”„๋กœ๊ทธ๋žจ์˜ ์ดํ•ด์™€ ํ™œ์šฉ v1.1
ย 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
ย 
์ž๋ฐ” ํ…Œ์ŠคํŠธ ์ž๋™ํ™”
์ž๋ฐ” ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์ž๋ฐ” ํ…Œ์ŠคํŠธ ์ž๋™ํ™”
์ž๋ฐ” ํ…Œ์ŠคํŠธ ์ž๋™ํ™”
ย 
Java(4/4)
Java(4/4)Java(4/4)
Java(4/4)
ย 
๋ถˆ์–ด์˜ค๋Š” ๋ณ€ํ™”์˜ ๋ฐ”๋žŒ, From c++98 to c++11, 14
๋ถˆ์–ด์˜ค๋Š” ๋ณ€ํ™”์˜ ๋ฐ”๋žŒ, From c++98 to c++11, 14 ๋ถˆ์–ด์˜ค๋Š” ๋ณ€ํ™”์˜ ๋ฐ”๋žŒ, From c++98 to c++11, 14
๋ถˆ์–ด์˜ค๋Š” ๋ณ€ํ™”์˜ ๋ฐ”๋žŒ, From c++98 to c++11, 14
ย 
Start IoT with JavaScript - 4.๊ฐ์ฒด1
Start IoT with JavaScript - 4.๊ฐ์ฒด1Start IoT with JavaScript - 4.๊ฐ์ฒด1
Start IoT with JavaScript - 4.๊ฐ์ฒด1
ย 

Java advancd ed10

  • 1. March 2015 ED1.0 HR Kwon (hungrok@hanmail.net ) IT ๊ฐ•์˜์ž๋ฃŒ Java Advanced
  • 2. 1 String Handling ๏‚ง Methods . String ๊ฐ์ฒด๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ Method ๋“ค ์ด๋‹ค . Static Method ๋Š” valueOf ์™€ format ์ด ์ œ๊ณต๋œ๋‹ค < Methods > . substring : ๋ฌธ์ž์—ด ์ž๋ฅด๊ธฐ, s2 = s1.substring(0,8) ; . concat : ๋ฌธ์ž์—ด ์ด์–ด ๋ถ™์ด๊ธฐ, s2 = s1.concat(โ€œabcdโ€) ; . split : ๋ฌธ์ž์—ด ๋‚˜๋ˆ„๊ธฐ , s2[] = s1.split(โ€œ^โ€) ; // โ€˜^โ€™ ๊ธฐํ˜ธ๋กœ ๋ถ„๋ฆฌ . replace : ๋ฌธ์ž์—ด ๋ณ€ํ™˜ , s2 = s1.replace (โ€œkwonโ€ โ€œKangโ€) ; . trim : ๋ฌธ์ž์—ด ์ขŒ์šฐ๊ณต๋ฐฑ์ œ๊ฑฐ, s2 = s1.trim() ; // ์ค‘๊ฐ„์— ๊ณต๋ฐฑ์€ ์ œ๊ฑฐ๋˜์ง€ ์•Š๋Š”๋‹ค . valueOf : ๋‹ค๋ฅธ ์ž๋ฃŒํ˜• ์„ ๋ณ€ํ™˜ s1 = String.valueOf(data type) // date ๏ƒ  String , char[] ๋Š” ๋˜๋‚˜ byte[] ๋Š” ์•ˆ๋จ . format : ๋‹ค๋ฅธ ์ž๋ฃŒํ˜• ์„ ๋ณ€ํ™˜ s1 = String.format(โ€œTest %d %l %f %s %tc โ€œ,,,,) . charAt : ํŠน์ •ํ•œ Index ์˜ char ๋ฅผ ๊ตฌํ•จ , c1 = s1.charAt(3) ; . getBytes : ์ „์ฒด Char ํš๋“ , byte[] = s1.getBytes() ; // ์ „์ฒด ํ˜น์€ ๋ถ€๋ถ„์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค . getChars : ์ „์ฒด(๋ถ€๋ถ„) char ํš๋“ , s1.getChars (startIndex, LastIndex, char[], dest index) ; . euals : ๋ฌธ์ž์—ด ์ „์ฒด๊ฒ€์‚ฌ , boolen = s1.equals (โ€œHello Javaโ€) ; . contains : ๋ฌธ์ž์—ด ๋ถ€๋ถ„๊ฒ€์‚ฌ , boolen = s1.contains(โ€œhungrokโ€) ; . startWith : ์‹œ์ž‘ ๋ฌธ์ž์—ด ๊ฒ€์‚ฌ , boolen = s1.startWith(โ€œhttpโ€) ; . endWith : ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์—ด ๊ฒ€์‚ฌ , boolen = s1.endWith(โ€œcomโ€) ; ์˜ˆ์ œ1. format ์„ ์ด์šฉํ•˜์—ฌ concatenation ์ฒ˜๋ฆฌ String str1 = "abcdefgh" ; String str2 = "ababababa" ; String str3 = "nnnnnnnnn" ; String str4 = "" ; str4 = String.format(โ€œ%s%s%s",str1,str2,str3) ; ์˜ˆ์ œ2. getChars ์™€ valueOf ๋ฅผ ์ด์šฉํ•˜์—ฌ ํŠน์ • index char ๋ณ€๊ฒฝ String str1 = โ€œabcdefghโ€ ; String str2 =โ€œโ€ ; char car[] = new char[8] ; str1.getChars(0,str1.length(),car,0) ; car[3] = โ€˜Kโ€™ ; str2 = String.valueOf(car) ; //๏ƒ  abcKefgh
  • 3. 2 Time Package ๏‚ง Time Package . SE 8 ๋ถ€ํ„ฐ ์ง€์› (๊ทธ์ „์—๋Š” date, time, calendar ๊ฐ์ฒด ์‚ฌ์šฉ - ๋ชจ์ˆœ์  ๊ฐœ์„ ) . Factory ํ˜•์‹์œผ๋กœ ์ง€์› . ๊ฐ์ฒด๋Š” ํ˜„์žฌ ํ˜น์€ ํŠน์ •์‹œ๊ฐ„์„ ์ฃผ์–ด์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ ํ•จ : ์˜ˆ. 2012.1.1 ์ผ์ž ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•ด๋‹น ๊ฐ์ฒด์˜ ์‹œ์ž‘์š”์ผ ์•Œ์•„๋‚ด๊ธฐ ๊ฐ์ฒด ํŠน์ •์‹œ๊ฐ„ ๊ฐ์ฒด ๊ฐ์ฒด์ƒ์„ฑ . LocalDateTiem.now() . ZonedLocalDateTime.now() . LocalDate.of (2013,12,25) minusX plusX withX < Methods > get : Nano, Second, Minute, Hour, Year : Month, MonthValue : DayOfMonth ๏ƒ  1~31 : DayOfWeek ๏ƒ  SUNDAY ~ SATURDAY : DayOfYear ๏ƒ  1~366 truncatedTo isLeapYear
  • 4. 3 ์ž๋ฃŒ๊ตฌ์กฐ ๏‚ง Collection Framework . Collection ์ด๋ž€ ์—ฌ๋Ÿฌ Type ์„ ์ง€์›ํ•˜๋Š” ๋ฐฐ์—ด์„ ํ†ตํ•ด ์—ฐ์†๋œ ๊ณต๊ฐ„์— Data ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์กฐ์ž‘ํ•˜๊ธฐ ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“  ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๊ฐ์ฒด๋“ค์„ ๋งํ•œ๋‹ค (1) List : n*1 ๊ตฌ์กฐ์˜ ๋ฐฐ์—ด๋กœ์„œ, ์ˆœ์„œ๋ฅผ ์ง€๋‹ˆ๋ฉฐ data ์ค‘๋ณต์ด ๊ฐ€๋Šฅํ•˜๋‹ค (2) Set : n*1 ๊ตฌ์กฐ์˜ ๋ฐฐ์—ด๋กœ์„œ, ์ˆœ์„œ์˜ ์˜๋ฏธ๊ฐ€ ์—†์œผ๋ฉฐ data ์ค‘๋ณต์ด ๋ถˆ ๊ฐ€๋Šฅํ•˜๋‹ค (3) Map : n*2 ๊ตฌ์กฐ์˜ ๋ฐฐ์—ด๋กœ์„œ ์ˆœ์„œ์˜ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค. HashMap ๋‹ค์ˆ˜๊ฐœ ๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ธฐ๋ณธ์ ์ธ Data Base ๊ธฐ๋Šฅ์ด ๊ฐ€๋Šฅ ํ•˜๋‹ค . java.util ํ•˜๋ถ€์— Class ๊ฐ€ ์กด์žฌํ•œ๋‹ค . ๊ณ„์ธต๊ตฌ์กฐ (Implementation ๊ด€๊ณ„) Collection List Set Vector ArrayList Stack LinkedList SortedSet HashSet ์ˆœ์„œ ๋‚˜ ์ง‘ํ•ฉ์ ์ธ ์ €์žฅ๊ณต๊ฐ„ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ €์žฅ๊ณต๊ฐ„ ์ง‘ํ•ฉ์ ์ธ ์ €์žฅ๊ณต๊ฐ„ TreeSet Map SortedMap HashMap Hashtable ์Œ (ํ‚ค์™€ ๊ฐ’) ์˜ ๋ฐ์ดํ„ฐ TreeMap Interface
  • 5. 4 ์ž๋ฃŒ๊ตฌ์กฐ ๏‚ง Collection Framework . ๊ฐ ๊ฐ์ฒด ๋“ค Features ๊ฐ์ฒด ์„ค๋ช… LinkedList . Array ๊ฐ„ Linked ๋˜์–ด์žˆ์Œ, Queue ๊ธฐ๋Šฅ์— ์ด์šฉ . add(), addFirst(), addLast(), remove(), get(index), getFirst(), getLast(), isEmpty() . peek(), poll(), pop(), push() Stack . LIFO ๊ตฌ์กฐ . push(), pop(), peak(), search() ArrayList . ์ผ๋ฐ˜ ๋ฐฐ์—ด์— ์„œ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ์ฆ๊ฐ€ ๊ธฐ๋Šฅ (์ผ๋ฐ˜ Array ๋Š” size ๊ฐ€ ์ •์ ์œผ๋กœ ํ™•๋ณด) . ๋™๊ธฐํ™”๋ฅผ ๋ณด์žฅํ•ด ์ฃผ์ง€ ์•Š๋Š”๋‹ค (๋™๊ธฐํ™” ๋ฐฉ๋ฒ• List list = Collections.synchronizeList(new ArrayList(โ€ฆ)); . add(), get(), toArray(), contains(), size() Vector . ArrayList ์—์„œ ๋™๊ธฐํ™” ๊ฐ€ ๋ณด์žฅ ๋˜๋„๋ก ์ตœ์ ํ™”๋œ ๊ฒƒ ์ด๋‹ค (์ด๋Ÿฐ ์‚ฌ์œ ๋กœ AL ๋Œ€๋น„ ๋Š๋ฆฌ๋‹ค) . JAVA 5.0 ์ดํ›„ Auto Boxing ์ง€์› . addElement(), elementAt(), size(), contains(), indexOf(), insertElementAt(), setElementAt() HashSet . ์ˆœ์„œ์˜ ์˜๋ฏธ๊ฐ€ ์—†์œผ๋ฉฐ, Data ์ค‘๋ณต ์ด ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋‹ค . add(), next(), remove(), contains(), size() TreeSet . Set ๊ธฐ๋Šฅ์„ ์ง€๋‹ˆ๋ฉด์„œ ์ •๋ ฌ๊ธฐ๋Šฅ ์ถ”๊ฐ€ (์ž๋™ ์˜ค๋ฆ„์ฐจ์ˆœ) . ์‚ฌ์šฉ์ž ๊ฐ€ ์ง์ ‘ ์ •๋ ฌ๋ฐฉ์‹ ์ง€์ •๊ฐ€๋Šฅ (Comparator ๋ฅผ Implement ํ•˜์—ฌ compare() ๊ตฌํ˜„) Hashtable . Key ์™€ value ๋กœ data ๊ด€๋ฆฌ, ๋™๊ธฐํ™” ๋ณด์žฅ , Null ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค . ๊ฐ์ฒด ์ƒ์„ฑ : Hashtable<String, Object> h = new Hashtable<String, Object>(); . put(), get(), remove(), contains(), replace(), size(), keys(), elements() HashMap . Key ์™€ value ๋กœ data ๊ด€๋ฆฌ, ๋™๊ธฐํ™” ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค, Null ํ—ˆ์šฉํ•œ๋‹ค . ๊ฐ์ฒด ์ƒ์„ฑ : Map<String, Integer> map = new HashMap<String, Integer>(); . put(), get(), remove(), contains(), replace(), size(), . Enumeration ๋ณ€ํ™˜ method (keys, elements) ๊ฐ€ ์—†๋‹ค TreeMap . Map ๊ธฐ๋Šฅ์„ ์ง€๋‹ˆ๋ฉด์„œ ์ •๋ ฌ๊ธฐ๋Šฅ ์ถ”๊ฐ€ (Key ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ) . ์‚ฌ์šฉ์ž ๊ฐ€ ์ง์ ‘ ์ •๋ ฌ๋ฐฉ์‹ ์ง€์ •๊ฐ€๋Šฅ (Comparator ๋ฅผ Implement ํ•˜์—ฌ compare() ๊ตฌํ˜„)
  • 6. 5 ์ž๋ฃŒ๊ตฌ์กฐ ๏‚ง Collection Framework . Template Code < HashTable ๏ƒ  Enumber ๏ƒ  Search > Hashtable ht = new Hashtable() ; ht.put (โ€œa1โ€,obj1) ; // Key, Element Value ht.put (โ€œa2โ€,obj2) ; ht.put (โ€œa3โ€,obj3) ; Enumeration keys = ht.keys() ; Enumeration values = ht.elements() ; While(keys.hasMoreElements()){ // boolean for search String key = (String) keys.nextElements() ; // To get โ€œa1โ€, โ€œa2โ€, โ€œa3โ€ Object value = ht.get(key) ; // To get obj1,obj2,obj3 } < ๊ฐ์ฒด์ƒ์„ฑ > Hashtable ht1 = new Hashtable() ; // ht1 == ht2 Hashtable<Object, Object> ht2 = new Hashtable <Object,Object>() ; Hashtable<String, Object> ht3 = new Hashtable <String,Object>() ; Hashtable<String, Integer> ht4 = new Hashtable <String,Integer>() ; Vector<String> vt1 = new Vector<String>() ; Vector<Object> vt2 = new Vector<Object>() ; ArrayList<String> al1 = new ArrayList<String>() ; ArrayList<Object> al2 = new ArrayList<Object>() ; Stack<String> st1 = new Stack<String>() ; Stack<Object> st2 = new Stack<Object>() ; LinkedList<String> ll1 = new LinkedList<String>() ; LinkedList<Object> ll2 = new LinkedList<Object>() ;
  • 7. 6 I/O ๏‚ง ๊ธฐ๋ณธ๊ตฌ์กฐ . ๋ฌธ์ž์—ด Stream ์ฒ˜๋ฆฌ๋Š” Reader / Writer ๊ฐ€ ๋‹ด๋‹นํ•˜๊ณ , Byte Stream ์ฒ˜๋ฆฌ๋Š” Stream ์ด ๋‹ด๋‹นํ•œ๋‹ค . ๊ฐ ๊ฐ์ฒด ๋ณ„ ๊ณ„์ธต๊ตฌ์กฐ Reader --- BufferedReader --- IntputStreamReader โ€“- FileReader Writer --- BufferedWriter --- OutputtStreamWriter โ€“- FileWriter InputStream --- FileInputStream ---- SocketInputStream (Abstract) --- ByteArrayInputStream --- SequenceInputStream --- StringBufferInputStream --- FilteredInputStream ---- DataInputStream ---- BufferedIntputStream ---- PushbackInputStream ---- ObjectInputStream OutputStream --- FileOutputStream ---- SocketOutputStream (Abstact) --- ByteArrayOutputStream --- FilteredOutputStream ---- DataOutputStream ---- BufferedOutputStream ---- PrintStream ---- ObjectOutputStream InputStreamReader InputStream Socket File File FileReader ๋ฌธ์ž์—ด Stream Byte Stream OutputStreamWriter OutputStream Socket File File FileWriter Byte Stream ๋ฌธ์ž์—ด Stream Byte Byte
  • 8. 7 I/O ๏‚ง File Handling . File ๊ฐ์ฒด๋Š” File Descriptor ์ •๋ณด๋งŒ์„ ๊ฐ€์ง€๊ณ  Handling ํ•œ๋‹ค . ๋ฌธ์ž์—ด Stream ์— ๋Œ€ํ•˜์—ฌ๋Š” FileReader / FileWriter ๋ฅผ ํ†ตํ•˜์—ฌ ์ฒ˜๋ฆฌํ•œ๋‹ค File FileOutputStream DataOutputStream ObjectOutputStream BufferedOutputStream FileWriter BufferedWriter File Directory File FileInputStream DataInputStream ObjectInputStream BufferedInputStream FileReader BufferedReader get Name,Path,Parent,ParentFile get Absolute, AbsoluteFile list, listFiles is Directory, Hidden, File Mkdir, renameTo, delete, createNewFile File Directory Byte Stream Character Stream Character Stream Byte Stream
  • 9. 8 I/O ๏‚ง Stream ์„ธ๋ถ€์ข…๋ฅ˜ ๋น„๊ณ  Stream Description ์ฐธ๊ณ  ์ƒ์œ„ FileOuputStream ํŒŒ์ผ ๊ฐ์ฒด์˜ entry point ์—ญํ• . ์ง์ ‘ write ํ•˜๊ฑฐ๋‚˜ Sub stream ์— Pipe line ๋˜์–ด์ง„๋‹ค ๊ฐ์ฒด ์ƒ์„ฑ์‹œ ์ธ์ž๋กœ File ๊ฐ์ฒด, Append ์œ ๋ฌด write (buffer,index,size) ByteArrayOuputStream Write ๋˜์–ด์ง„ Byte ๋ฅผ ์ „์ฒด๋กœ Byte[] ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ toByteArray() ๋กœ Byte[] ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค ๊ฐ์ฒด ์ƒ์„ฑ์‹œ ์ธ์ž๋Š” ์—†๋‹ค write (buffer,index,size) ํ•˜์œ„ DataOutputStream 8๊ฐ€์ง€ Primitive data type ์œผ๋กœ write ๊ฐ€๋Šฅ ํ•˜๋ฉฐ Pipe Line ์„ ํ†ตํ•˜์—ฌ ์ƒ์œ„ Output Stream ๊ณผ ์—ฐ๊ฒฐ๋œ๋‹ค ๊ฐ์ฒด ์ƒ์„ฑ์‹œ ์ธ์ž๋Š” ์ƒ์œ„ OS writeByte, writeInt, writeDouble, writeUTF ObjectOutputStream ์ง๋ ฌํ™” ๊ฐ€ ๋œ Object ์„ write ๊ฐ€๋Šฅ, Pipe Line ์„ ํ†ตํ•˜์—ฌ ์ƒ์œ„ Output Stream ๊ณผ ์—ฐ๊ฒฐ๋œ๋‹ค ๊ฐ์ฒด ์ƒ์„ฑ์‹œ ์ธ์ž๋Š” ์ƒ์œ„ OS writeObject (obj) BufferedOutputStream Stream ์ž…์ถœ๋ ฅ ํšจ์œจ์„ ์œ„ํ•œ ๋ณด์กฐ Stream ๊ฐ์ฒด ์ƒ์„ฑ์‹œ ์ธ์ž๋Š” ์ƒ์œ„ OS, Buffered Size write(buffer) PrintStream ๋ฌธ์ž๊ธฐ๋ฐ˜ Stream ์œผ๋กœ์„œ ํ‘œ์ค€ ์ถœ๋ ฅ์žฅ์น˜ (System.out) ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์‚ฌ์šฉ. ํ˜น์€, Pipe Line ์„ ํ†ตํ•˜์—ฌ ์ƒ์œ„ Output Stream ๊ณผ ์—ฐ๊ฒฐ๋œ๋‹ค ๊ฐ์ฒด ์ƒ์„ฑ์‹œ ์ธ์ž๋Š” ์ƒ์œ„ OS println , printf()
  • 10. 9 Network ๏‚ง Socket . Socket ์ด๋ž€ : App ๊ณผ TCP/UDP ๋ฅผ ์—ฐ๊ฒฐ ํ•ด์ฃผ๋Š” ์žฅ์น˜ ์ด๋‹ค (Port Number ๋กœ ๊ด€๋ฆฌ) . Socket ๊ฐ์ฒด ๊ฐ€ ๋งŒ๋“ค์–ด ์ง€๋ฉด, ํ•ด๋‹น OS Socket ๊ณผ ๋Œ€์‘๋˜๋Š” InputStream ๊ณผ OutputStream ๊ฐ์ฒด๋Š” ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค . ์‚ฌ์šฉ์ž๋Š” IS ์™€ OS ๋งŒ์„ ๋ณด๊ณ  Handling ํ•˜๋ฉด ๋œ๋‹ค. . read / write ํ–‰์œ„๋Š” ์ผ๋ฐ˜์ ์ธ I/O ์™€ ๋™์ผํ•˜๋‹ค. . TCP ์šฉ (Connection Oriented) Client Socket ์ผ๋ฐ˜์ ์ธ ๋ชจ์Šต (Server ์šฉ์€ ServerSocket ์œผ๋กœ ๋ณ„๋„ ์กด์žฌ) . UDP ์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ„๋„์˜ Socket ์œผ๋กœ ์กด์žฌํ•œ๋‹ค Socket Socket InputStream Socket OutputStream OS Socket OS Socket Out TCP/IP packetIn TCP/IP packet read() write() Socket DatagramPacketDatgramSocket MulticastSocket send(packet) receive (packet)
  • 11. 10 Network ๏‚ง HTTP . Socket ๊ตฌ์กฐ ์œ„์— HttpURLConnection ๊ฐ์ฒด๊ฐ€ Header ๋ฅผ ๋ฐœ์†กํ•˜๊ณ  ์ˆ˜์‹ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•œ๋‹ค (Socket ๊ฐ์ฒด๋ฅผ App ์—์„œ ์ง์ ‘ ๋งŒ๋“ค์ง€๋Š” ์•Š๊ณ , ๋‚ด๋ถ€์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค) . Entity Body ์˜ data ์— ๋Œ€ํ•˜์—ฌ๋Š” App ์—์„œ ์ง์ ‘ Handling ํ•œ๋‹ค Socket InputStream OutputStream OS Socket OS Socket Out TCP/IP packetIn TCP/IP packet read() write() Socket HttpURLConnectionURL . openConnection() ์˜ ๊ฒฐ๊ณผ๋กœ HttpUrlConnection ๊ฐ์ฒด๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค Request HeaderResponse Header setRequestMethod : GET/PUT/POST ์ง€์ • setRequestProperty : Header Parameter ์ง€์ • setConnectTimeout setUseCaches setDoOutput setDoInput getResponseCode getHeaderField getContentLength disconnect Entity Body Entity Body
  • 12. 11 Security (์•”ํ˜ธ) ๏‚ง ์ผ๋ฐ˜ . ๋น„๋Œ€์นญ Key (RSA) ๋ฐ ๋Œ€์นญ Key (AES,DES,3DES) ๋ฐœํ–‰ . ๋น„๋Œ€์นญ Key ๋ฅผ ์ด์šฉํ•œ ์„œ๋ช… ๋ฐ ์ฆ๋ช… (Signature & Verify) , Encryption ๋ฐ Decryption ์ฒ˜๋ฆฌ . ๋Œ€์นญ Key ๋ฅผ ์ด์šฉํ•œ Encryption ๋ฐ Decryption ์ฒ˜๋ฆฌ . ์ธ์ฆ์„œ ๋ฐœํ–‰ ๊ธฐ๋Šฅ์€ ์—†๊ณ  (3rd Party Class ๋Š” ๋ณธ ๊ธฐ๋Šฅ์ œ๊ณต), ์ธ์ฆ์„œ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„๋“ค์—ฌ ์ฆ๋ช… ๋ฐ ์ •๋ณด๋งŒ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์Œ . ์ฃผ๋กœ Single Tone ๊ฐ์ฒด๋กœ ๊ตฌํ˜„ํ•จ . ๋น„๋Œ€์นญ Key ์•Œ๊ณ ๋ฆฌ์ฆ˜ : SHA1 with DSA, MD5 with RSA, SHA1 with RSA, SHA256 with RSA . ๋น„๋Œ€์นญ Key ์‚ฌ์šฉ . Signature / Verify : Private key ๋กœ Signature ๏ƒ  ์ˆ˜์‹ ์ธก ์€ Public Key ๋กœ Verify . Encryption / Decryption : Public Key ๋กœ Encryption ๏ƒ  ์ˆ˜์‹ ์ธก ์€ Private Key ๋กœ Decryption . Public Key (๊ณต๊ฐœ Key) ๋Š” X509 ์ธ์ฆ์„œ์— ์กด์žฌํ•จ . HTTPS ๋Š” ๋น„๋Œ€์นญ Key ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ encryption / decryption ์ฒ˜๋ฆฌ
  • 13. 12 Security (์•”ํ˜ธ) ๏‚ง Class ๋ณ„ ๊ธฐ๋Šฅ . KeySpec ์—†์ด๋„ Cipher , Signature ์— ์ง์ ‘ Input ์œผ๋กœ ๊ฐ€๋Šฅ . KeySpec ์€ ๊ณต์œ (์ „์†ก) ํ˜น์€ ์ €์žฅ์„ ์œ„ํ•˜์—ฌ ํ‘œ์ค€์— ์ •ํ•œ data format ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ž„ ์˜ˆ. PKCS#8 ์—์„œ ์ •์˜๋œ PrivateKeyInfo = { [privateKey] } X509 ์—์„œ ์ •์˜๋œ SubjectPublicKeyInfo = { [publicKey] } SecretKeySpec ๋Œ€์นญ.key KeyGenerator private.key public.key KeyFactory Cipher Signature prvkeySpec pubkeySpec CertificateFactory X509.cer KeyPairGenerator keySpec SecretKeyFactory SecretKey DESKeySpec
  • 14. 13 GUI ๏‚ง ์†Œ๊ฐœ . ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ GUI ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค : AWT Components ํ˜น์€ Swing Components ๋ฅผ ์‚ฌ์šฉ . Swing ์€ AWT ์˜ ์•„๋ž˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ ๊ฒƒ์ด๋‹ค 1) Lightweight component ๋ฅผ ์ œ๊ณต : ์šด์˜์ฒด์ œ ๊ฐ€ native ๋กœ ๊ตฌํ˜„ ํ•œ component (Heavyweight ) ์˜ ์‚ฌ์šฉ์— ๋”ฐ๋ฅธ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ 2) AWT ์— ์—†๋Š” ์ถ”๊ฐ€๋œ Component ์˜ ์ œ๊ณต 3) AWT ๊ฐ€ ์ œ๊ณตํ•˜๋Š” Component ์˜ ๊ธฐ๋Šฅ์  ๋ณด๊ฐ• : ๋ฒ„ํŠผ์— ๋กค์˜ค๋ฒ„ ์ด๋ฏธ์ง€ ์‚ฌ์šฉ, ํ’์„ ๋ง ๊ธฐ๋Šฅ ๋“ฑ,, 4) Drag & Drop ๊ธฐ๋Šฅ : MIME ๊ธฐ๋ฐ˜ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ type ์‹œ์Šคํ…œ์„ ํ†ตํ•˜์—ฌ JAVA ์™€ Non-Java ๊ฐ„ data ๊ตํ™˜๋ชฉ์  OS Component User Application AWT Package JVM Component User Application Swing Package AWT Package
  • 15. 14 GUI ๏‚ง ๊ณ„์ธต๊ตฌ์กฐ . Swing ์˜ JComponent ๋Š” AWT ์˜ Container ๋ฅผ ์ƒ์†ํ•œ๋‹ค . Swing ์˜ ์ตœ์ƒ์œ„ Container ๋Š” AWT ์˜ ์ตœ์ƒ์œ„ Container ๋ฅผ ์ƒ์†ํ•œ๋‹ค
  • 16. 15 GUI ๏‚ง Container . ์ž์‹ ์˜ ์˜์—ญ์— ์ปดํฌ๋„ŒํŠธ๋ฅผ ํฌํ•จ์‹œํ‚ค๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํฌํ•จํ•  ์ˆ˜๋„ ์žˆ๋‹ค. . ์ปจํ…Œ์ด๋„ˆ์˜ ์ข…๋ฅ˜์—๋Š” (1) ์ตœ์ƒ์œ„ Container : Frame, Applet, Dialog (JFrame, JApplet, JDialog) (2) Sub Container : Panel, Window . Frame ์€ Window ๋ฅผ ์ƒ์† ๋ฐ›์€ ๊ฐ์ฒด๋กœ์„œ Window ์— ๊ฒฝ๊ณ„์„ , ํƒ€์ดํ‹€, ๋ฉ”๋‰ด, ์‹œ์Šคํ…œ์ƒ์ž ๋“ฑ์ด ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์ด๋‹ค . Applet ์€ Panel ์„ ์ƒ์†๋ฐ›์€ ๊ฐ์ฒด๋กœ์„œ, HTML ๋‚ด์— ํฌํ•จ๋˜์–ด์ ธ HTML ์˜ Window ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค ๏‚ง Panel . Sub Container ์ด๋ฉฐ, ๋‹ค๋ฅธ Sub container (Panel) ๋„ ํฌํ•จ ๊ฐ€๋Šฅํ•˜๋‹ค . Container ์™€ ๊ฐ™์ด ๋‹ค๋ฅธ component ๋ฅผ ์ž์‹ ์˜ ์˜์—ญ์— ํฌํ•จ ๊ฐ€๋Šฅํ•˜๋‹ค . ์ตœ์ƒ์œ„ Container (Frame) ์— ํฌํ•จ ๋˜์–ด์ ธ ์‚ฌ์šฉ๋œ๋‹ค (์Šค์Šค๋กœ ๊ทธ๋ฆด ์ˆ˜ ๋Š” ์—†๋‹ค) ๏‚ง Layout ๊ฐ์ฒด . Container ๋‚ด์˜ Component ๋“ค์„ ๋ฐฐ์น˜ ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค . Layout ์ข…๋ฅ˜ : Flow (์ขŒ์šฐ ์‚ฌํ•ญ ๋ฐฐ์น˜) , Grid (ํ–‰๋ ฌ๋ฐฐ์น˜) , Border (๋™์„œ๋‚จ๋ถ์ค‘์•™ ๋ฐฐ์น˜ - Default) , Card (๋’ค์— ์ˆจ๊ธฐ ๋ฐฐ์น˜) ๏‚ง AWT Components . OS ์—์„œ ์‹ค์ œ ๊ตฌํ˜„์„ ๋‹ด๋‹นํ•˜๋Š” Heavyweight Component ์ด๋‹ค ๏‚ง Swing Components . JVM ์—์„œ ์‹ค์ œ ๊ตฌํ˜„์„ ๋‹ด๋‹นํ•˜๋Š” Lightweight Component ์ด๋‹ค
  • 17. 16 GUI ๏‚ง AWT ์—ฐ๊ฒฐ๊ตฌ์กฐ . ์—ฐ๊ฒฐ ๊ด€๊ณ„๊ฐ€ Tree ๊ตฌ์กฐ๋ฅผ ์ง€๋‹Œ๋‹ค . Container.add() method ๋ฅผ ํ†ตํ•˜์—ฌ ์—ฐ๊ฒฐ๊ด€๊ณ„๋ฅผ ํ˜•์„ฑ์‹œํ‚จ๋‹ค . Panel ์€ Panel ์„ ํ•˜๋ถ€์— ์ง€๋‹ ์ˆ˜ ์žˆ๋‹ค public static void main(String[] args) { Frame fr = new Frame() ; FlowLayout flo = new FLowLayout() ; fr.setlayout(flo) ; Panel pan1 = new Panel() ; Panel pan2 = new Panel() ; Button btn1 = new Button() ; pan1.add(pan2) ; pan1.add(btn1) ; Button btn2 = new Button() ; fr.add(pan1) ; fr.add(btn2) ; } Frame Panel Panel Component Component Component Layout Layout Layout
  • 18. 17 GUI - Applet ๏‚ง Applet . ์ž‘์€ Application ์ด๋ž€ ๋œป์œผ๋กœ, Client ์—์„œ Web Browser (Webkit) ๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ•˜๋Š” JAVA class ๋ฅผ ๋งํ•œ๋‹ค (1) HTML ๋‚ด์—์„œ applet tag ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ (HTML5 ์—์„œ deprecated ๋˜์—ˆ์œผ๋ฉฐ object tag ์‚ฌ์šฉ) ์‹คํ–‰๋  class ๋ฅผ ์ง€์ •ํ•œ๋‹ค (2) ํ•ด๋‹น class ๋Š” Webkit ์ด ๋‹ค์šด๋กœ๋“œ ํ•˜์—ฌ Local ์— ์œ„์น˜ ์‹œํ‚ค๊ณ  JRE ์—๊ฒŒ ์‹คํ–‰์„ ์š”์ฒญ ํ•œ๋‹ค (3) Window ์—์„œ๋Š” jp2launcher.exe ๊ฐ€ java.exe ๋ฅผ (java plug-in) ์‹คํ–‰์‹œํ‚ค๋Š” ๊ตฌ์กฐ . ๋ฐ˜๋“œ์‹œ Applet ์„ ์ƒ์† ํ•˜์—ฌ์•ผ ํ•œ๋‹ค (Applet ์€ Panel ์„ ์ƒ์†ํ•œ๋‹ค) . Main thread ์—์„œ Life Cycle ์„ ๊ด€๋ฆฌํ•œ๋‹ค (init ๏ƒ  start or paint ๏ƒ  stop ๏ƒ  destroy) HTML <applet codebase = URL code=AppleTest.class width=200 height=100 </applet> Webkit public class AppletTest extends Applet { public AppletTest(){ // Constructor } @Override public void init(){} @Override public void start(){} @Override public void paint(Graphic g){} @Override public void stop(){} @Override public void destroy(){} } Applet Panel Component Layout Layout Applet Class JAVA Plug-In HTML <object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="200" height="200" codebase= URL <param name="code" value="Applet1.class"> </object>
  • 19. 18 GUI ๏‚ง Swing Pane . Swing ์—์„œ๋Š” Pane ๊ฐ์ฒด๋ฅผ ํ†ตํ•˜์—ฌ ๊ณต๊ฐ„์ ์ธ ์œ„์น˜์˜ ์—ฐ๊ฒฐ ๊ด€๊ณ„๊ฐ€ ํ˜•์„ฑ๋œ๋‹ค . ์ƒ์œ„ Container (JFrame, JApplet, JDialog) ๊ฐ์ฒด ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์„ธ๊ฐ€์ง€ Pane (JRoot, JLayered, JContent) ์€ ์ž๋™ ์ƒ์„ฑ๋œ๋‹ค . JRootPane ์€ ๊ฐ€์žฅ ์•ˆ์ชฝ์— ์žˆ์œผ๋ฉด์„œ ControlPnae ์ด ์ฐจ์ง€ํ•˜๋Š” ์˜์—ญ ๋ฐ”๊นฅ์œผ๋กœ Border ๋ฅผ ์ง€๋‹ˆ๊ณ  ์žˆ๋‹ค. . JLayeredPane ์„ ๊ฐ€์ ธ๊ฐ€๋Š” ์ด์œ ๋Š” ๊ตฌ์„ฑ๋˜๋Š” Component ์— ๋Œ€ํ•˜์—ฌ ๊ณต๊ฐ„์  dimension ์ธ Z-Order ๋ฅผ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค JLayeredpane ์€ JContentPane ํ•˜๋ถ€ ์— ๋„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค . JContentPane ์€ JMenuBar ๊ฐ€ ์—†๋‹ค๋ฉด JLayeredPane ์˜ ์ „์ฒด ์˜์—ญ์— ๋†“์ด๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ, Component ๋ฅผ ๋ฐ”๋กœ LayeredPane ์— ๋ถ™์—ฌ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค . JMenuBar ๋Š” JLayredPane ์— ๋ถ™์—ฌ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด๋Š” MenuItem ์ด ๋ณด์ผ๋•Œ High Priority Z order ๋ฅผ ๊ฐ€์ ธ๊ฐ€๊ธฐ ์œ„ํ•จ์ด๋‹ค JRoot Pane JLayered Pane JContent Pane JMenuBar JFrame
  • 20. 19 GUI ๏‚ง Swing Pane . ์•„๋ž˜์™€ ๊ฐ™์ด ์„ธ๊ฐ€์ง€ ๋ชจ์Šต์œผ๋กœ ์‚ฌ์šฉ Pattern ์€ ๋ถ„๋ฅ˜ ํ•  ์ˆ˜ ์žˆ๋‹ค (1) ์‚ฌ์šฉ๋ชจ์Šต 1 : JMENU ๋ฅผ ๊ฐ€์ ธ๊ฐ€๋Š” ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ (2) ์‚ฌ์šฉ๋ชจ์Šต 2 : JMENU ์—†์ด ๊ฐ€์ ธ๊ฐ€๋ฉด์„œ, ๊ตฌ์„ฑ๋œ Component ๊ฐ„ Z order ๋ฅผ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒฝ์šฐ (3) ์‚ฌ์šฉ๋ชจ์Šต 3 : JLayeredPane ์„ ContenPane ํ•˜๋ถ€์— ๊ตฌ์„ฑํ•˜์—ฌ, Component ์— ๋Œ€ํ•˜์—ฌ Z order ๋ฅผ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒฝ์šฐ JFrame Jroot Pane JLayered Pane JContent Pane Component JMenuBar ์‚ฌ์šฉ๋ชจ์Šต 1 JFrame Jroot Pane JLayered Pane Component ์‚ฌ์šฉ๋ชจ์Šต 2 JFrame Jroot Pane JLayered Pane Jcontent Pane JLayered Pane JMenuBar Component ์‚ฌ์šฉ๋ชจ์Šต 3
  • 21. 20 GUI ๏‚ง Swing JLayeredPane . JLayeredPane adds depth to a JFC/Swing container, allowing components to overlap each other when needed. An Integer object specifies each component's depth in the container, where higher-numbered components sit "on top" of other components. Component 3 (Priority Order 1) Component 2 (Priority Order 2) Component 1 (Priority Order 3) Layered Pane (jlp) jlp.add(c1,3) jlp.add(c2,2) jlp.add(c3,1) moveToBack(component) moveToFront(component) getPosition(component) getLayer()
  • 22. 21 GUI ๏‚ง AWT Event Handling . Listener Interface ๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด๋ฅผ Event ์†Œ์Šค๊ฐ์ฒด์— ๋“ฑ๋ก (addXListener) ํ•œ๋‹ค ๊ตฌ๋ถ„ Event Type ๊ฐ์ฒด Event ์†Œ์Šค ๊ฐ์ฒด ์„ค๋ช… Listener Interface AWT KeyEvent Component ๋ชจ๋“  Component ์— ํ‚ค ๋™์ž‘ ๋ฐœ์ƒ์‹œ KeyListener MouseEvent Component ๋ชจ๋“  Component ์— ๋งˆ์šฐ์Šค ๋™์ž‘ ๋ฐœ์ƒ์‹œ MouseListener MouseMotionLister FocusEvent Component ๋ชจ๋“  Component ์— focus On/Off ์‹œ FoxusListener ComponentEvent Component ๋ชจ๋“  Component ์˜ ์ƒํƒœ๊ฐ์‹œ ComponentListener TextEvent TextField TextArea Text ๋ณ€๊ฒฝ ์‹œ TextListener WindowEvent Window Window ์ƒํƒœ๊ฐ์‹œ WindowListener ContainerEvent Container Component ์ถ”๊ฐ€ ํ˜น์€ ์‚ญ์ œ ์‹œ ContainerListener Swing ActionEvent JButton JList JMenuItem JTextField Item ์„ ํƒ ์‹œ ActionListener ItemEvent JCheckBox JList JCheckBoxMenuItem ์„ ํƒ ํ˜น์€ ํ•ด์ง€ ์‹œ ItemListener AdjustEvent JScrollBar ์‚ฌ์šฉ์ž ๊ฐ€ ์›€์ง ์˜€์„ ๋•Œ AdjustmentListener Event ์†Œ์Šค๊ฐ์ฒด Event X Event ๊ฐ์ฒด App Listener Class App Main Class addXListener Method(event) event.getSource() ๋ฅผ ํ†ตํ•˜์—ฌ ์†Œ์Šค๊ฐ์ฒด๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค
  • 23. 22 GUI ๏‚ง AWT Event Handling . Template package a.b.gui; import java.awt.* ; import javax.swing.* ; public class Main{ public static void main(String[] args) { JButton bt1 = new JButton() ; bt1.addMouseListener (new AWTListenerClass . MouseListenerClass()) ; } } package a.b.gui; import java.awt.event.* ; import java.util.* ; public class AWTListenerClass { public static class ActionListenerClass implements ActionListener{ @Override public void actionPerformed (ActionEvent arg0){} } public static class KeyListenerClass implements KeyListener{ @Override public void keyPressed(KeyEvent arg0) {} public void keyReleased(KeyEvent arg0) {} public void keyTyped(KeyEvent arg0) {} } public static class MouseListenerClass implements MouseListener{ @Override public void mouseClicked(MouseEvent arg0) {} public void mouseEntered(MouseEvent arg0) {} public void mouseExited(MouseEvent arg0) {} public void mousePressed(MouseEvent arg0) {} public void mouseReleased(MouseEvent arg0) {} } }
  • 24. 23 GUI ๏‚ง ์‚ฌ์šฉ์ž ์ •์˜ Graphics . AWT : Canvas ์˜ paint() ๋ฅผ Override ํ•˜์—ฌ ๊ตฌํ˜„ ํ•œ๋‹ค. . Swing : JPanel ์˜ paintComponent() ๋ฅผ Override ํ•˜์—ฌ ๊ตฌํ˜„ ํ•œ๋‹ค. public class CustomJP extends JPanel(){ public CustomJP(){ this.setLayout(null) ; this.setBounds(100,100,300,300) ; } @Override in Component protected void paintComponent (Graphic g){ // ์‚ฌ์šฉ์ž ์ •์˜ Graphic } } public class CustomCanvas extends Canvas(){ public CustomCanvas (){ this.setBounds(100,100,300,300) ; } @Override in Component public void paint (Graphic g){ // ์‚ฌ์šฉ์ž ์ •์˜ Graphic } }
  • 25. 24 EE ๏‚ง Enterprise Edition . ์„œ๋ฒ„ ์ธก ์—์„œ EE ์˜ ๋Œ€๋žต์ ์ธ ๋ชจ์Šต์ด๋‹ค Web Server Web Container Servlets JSP Web Application Server (WAS) EJB Container E JavaBean E JavaBean JavaMail JMS JNDI JDBC Browser Client Application Client Mail Server Message Tx. Directory Service Oracle
  • 26. 25 EE ๏‚ง JSP (Java Server Page) , Servlet . ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๋Š” Java Class ๋กœ์„œ , ์•„๋ž˜ ์™€ ๊ฐ™์€ ๋ชฉ์  ์ด๋‹ค (1) Dynamic html page ; ์ฃผ์–ด์ง„ Parameter ์— ๋Œ€์‘ํ•˜๋Š” HTML page ๋ฅผ ๋™์ ์œผ๋กœ ๋งŒ๋“ค์–ด์„œ client ์— ์ œ๊ณตํ•œ๋‹ค, http://URL/index.jsp (2) Interact with FORM ; Post ๋˜์–ด์ง„ FORM ๊ฐ์ฒด์— ๋Œ€ํ•˜์—ฌ ํŠน์ •ํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค , FORM action = /Servlet/test1 . MVC (Model View Control) ์‚ฌ์šฉ๋ชจ๋ธ (1) JSP Only : View, Controller ์—ญํ• ์„ JSP ํ˜ผ์ž ๋‹ด๋‹น (2) JSP / Servlet : View ๋Š” JSP ๊ฐ€ ๋‹ด๋‹นํ•˜๊ณ , Controller ์—ญํ• ์€ Servlet ์ด ๋‹ด๋‹น (3) JSP / JavaBean : View ๋Š” JSP ๊ฐ€ ๋‹ด๋‹นํ•˜๊ณ , Controller ์—ญํ• ์€ JavaBean ์ด ๋‹ด๋‹น Web Client Web Server Servlet (test1) HTTP Post ?action=/Servelt/test1 Form action=/Servlet/test1 Do Action Web Client Web Server JSP index.html HTTP Get ?name=kwon HTTP Response index.jsp ๋™์  ์ƒ์„ฑ ์ฐธ๊ณ  (HTTP) . abs_path ๋ฐ Parameter ๋Š” URL ์˜ Optional ์ •๋ณด๋กœ์„œ Request Line ์— ํฌํ•จ๋œ๋‹ค
  • 27. 26 EE JSP ๏‚ง JSP . HTML ๋ฌธ์„œ (Page) ๋‚ด์— 3๊ฐ€์ง€ (์ง€์‹œ์–ด, Scripting, Action) Element ๋กœ ํ‘œํ˜„๋œ๋‹ค . HTML ํŒŒ์ผ ํ™•์žฅ ์ž ๋ช… ์€ โ€œjspโ€ ๋กœ ํ•œ๋‹ค . Runtime ์— javax.servlet.http.HttpServlet ์„ ์ƒ์†๋ฐ›๋Š” Servlet class ๊ฐ€ ๋งŒ๋“ค์–ด ์ง€๊ณ  JSP Container ๊ฐ€ life cycle ์„ ์ฃผ๊ด€ํ•œ๋‹ค (๊ถ๊ทน์  ์œผ๋กœ๋Š” Servlet ๊ณผ ๋™๋ฅ˜์˜ ๊ฐœ๋…์ด๋‹ค) . Servlet ์„ ์‚ฌ์šฉํ•˜๋ฉด HTML ๋ฌธ์„œ๋ฅผ ๋งŒ๋“ค๊ธฐ๊ฐ€ ๋‚œ์ด ํ•˜์—ฌ (PrintWriter ๋ฅผ ์ด์šฉ) , ํŽธ์˜ ๋ชฉ์ ์œผ๋กœ ๋‚˜์˜ด . EE ์—์„œ ์ œ๊ณตํ•˜๋Š” JSP ์˜ ์•”๋ฌต์  ๊ฐ์ฒด : request, response, out, session, application, config, pageContext, page, exception . MS ์˜ ASP (Active Server Page) ๋‚˜ PHP ์™€ ๋™์ผํ•œ ๊ธฐ๋Šฅ์ด๋‹ค . ์ง€์‹œ์–ด Element : <%@ page โ€ฆ.. > , Page ์™€ Include ์ง€์‹œ์–ด ๋‘ ๊ฐ€์ง€ ์ด๋‹ค . Page ์ง€์‹œ์–ด : language, import, session, buffer, autoFlush, isThreadSafe, info, errorPage, isErrorPage, : contentType, pageEncoding, extends .Scripting Element : (1) Declaration <%! โ€ฆโ€ฆ. %> : ๋ฉค๋ฒ„๋ณ€์ˆ˜ ๋‚˜ ๋ฉ”์†Œ๋“œ ๋ฅผ ์„ ์–ธํ•  ๋•Œ ์‚ฌ์šฉ (2) Expression <%= โ€ฆโ€ฆ %> : ๊ฐ„๋‹จํ•œ data ์ถœ๋ ฅ์ด๋‚˜ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์— ์‚ฌ์šฉ (3) Scriptlet <% โ€ฆโ€ฆ.. %> : ์ˆœ์ˆ˜ Java code ๋งŒ ๊ฐ€๋Šฅ, Page ์˜ ๊ฐ„๊ฒฐ์„ฑ์„ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉ์ด ๊ถŒ๊ณ ๋˜์ง€ ์•Š๊ณ  JavaBeans ๋ฅผ ๋Œ€์‹ ์‚ฌ์šฉ . Action Element : <jsp: โ€ฆ.. />
  • 28. 27 EE - Servlet ๏‚ง Servlet . Client HTTP message ์—์„œ URL (Parameter ๊ฐ€ ํฌํ•จ๋œ) ๋กœ ์‚ฌ์šฉ์ด ๋˜์–ด์ง„๋‹ค (HTTP POST ?action=/Servlet/test1) . Server ์ธก์—์„œ ์ˆ˜ํ–‰๋˜๋Š”, JAVA ๋กœ ๊ตฌํ˜„๋œ CGI (Common Gateway Interface) ์ด๋‹ค . Web.xml ํŒŒ์ผ์„ ํ•„์š”๋กœ ํ•œ๋‹ค . ๋ฐ˜๋“œ์‹œ javax.servlet.http.HttpServlet ์„ ์ƒ์† ํ•˜์—ฌ์•ผ ํ•œ๋‹ค . Servlet Container ๊ฐ€ Life Cycle ์„ ๊ด€๋ฆฌํ•œ๋‹ค (init ๏ƒ  service ๏ƒ  destroy) . ์ฃผ์š”ํ•œ Servlet Container ๋กœ๋Š” Tomcat, Jetty, Jboss ๋“ฑ์ด ์žˆ๋‹ค public class ServletTest extends HttpServelet { @Override public void init(){} @Override public void service(){} @Override public void doGet(){} @Override public void doPost(){} @Override public void destroy(){} } Web Server Servlet Container Web Client Servlet Class Web Server HTTP Request HTTP Response service doGet or doPost By doGet or doPost Web Application ์„ค์ •ํŒŒ์ผ 1) Servlet ์ •๋ณด 2) Error Page ์ •๋ณด 3) Listener ์ •๋ณด 4) Filter ์ •๋ณด 5) ๋ณด์•ˆ์„ค์ • ์ •๋ณด web.xml