際際滷

際際滷Share a Scribd company logo
www.javaspecialist.co.kr
www.javaspecialist.co.kr
AJAX
觜蠍 豌  覦ろ襴渚 APIれ  覲碁.
1
www.javaspecialist.co.kr
1. AJAX(Asynchronous JavaScript and XML)
 "觜蠍 覦 覦ろ襴渚語 XML" 襦 "覦ろ襴渚語 XML" 襷  殊 '覦' '
覯伎' 蠏碁Μ螻 'C'  螳 襦蠏碁覦 語 企 手 螳讌襷 れ襦 覲企 襷 蠍一 覲牛
朱  襦蠏碁 螳覦   螳覦 (蠍一)企手  .
 蠍一ヾ 轟危 蟲 覦 轟
1. 企殊伎誤( 貉危) 豪殊一(誤磯血旧ろ襦)螳 轟覯(豺)蟆 豌 
″.
2. 轟覯 豌 豌襴襯 蠍  DB 磯 伎狩 DB 磯 蠍 伎
JSP/ASP/PHP 煙 覯 豸 危襴貅伎 伎 讀 覯危 ろ襴渚語  覦
 豌 豌襴.
3. 豌襴 蟆郁骸襯 HTML(FORM 蠏) 燕伎(伎伎) 企殊伎誤 豸 豪殊一(誤磯血旧
襦)蟆 ′ .
4. 企殊伎誤 豸 豪殊一(誤磯血旧ろ襦) 旧朱 覦 HTML 覿  蠏 伎
覃伎 蠏碁れ.
 蠍一ヾ 轟危語 
 一危磯ゼ 豌襴 HTML(FORM 蠏)襯 伎伎 螳   submit() 牛伎 螳 覲企願
 企  伎 覯 旧螻 response 螳 伎り鍵 蟾讌 覓願 覈
 螳 .
 讀, 螳 覯豸′朱 豌 覲企企  覯 旧  蟾讌 企 るジ 覃企
覲  螻, 螳 豌 覃 覯襦覿 旧 覦朱 觚殊一 蟆郁骸襯 覲  .
 Ajax レ
 Ajax 覦ろ襴渚碁ゼ 牛伎 覯 旧螻 螳 覦.
 覯 旧螻 螳 覦る 譴 るジ 殊   .
2
www.javaspecialist.co.kr
2. XMLHttpRequest
 觜蠍 豌 蠍  JavaScript API
 XMLHttpRequest(XHR) 螳豌企 旧ろ襦 5 ActiveX 貉危 朱 螳 襾殊 螻給

 XHR W3C 譴 覃 觚殊一襷 覦 伎 所 谿願 蠍 覓語 覈
讌殊 襴 豪殊一  螳豌企ゼ 蠍 蟾讌 襷 螳覦れ XMLHttpRequest
螳豌伎  蟶朱ろ.
  覿覿 觚殊一れ XHR 蠍磯レ 襦 觜訣蟆 蟲螻 朱  覿覿 觚殊
れ れ危磯 覦ろ襴渚(native javascript) 螳豌企 XHR  讌螻 .
 Ajax 蟲  XHR 螳豌伎 煙 .
 XHR  W3C  譴 覩襦, 螻手碓 旧ろ襦 5, 6 ActiveX Component 朱 蟲
螻, 蠏 覦 るジ 觚殊一(FireFox, Chrome, Safari, Opera) れ危磯 覦ろ襴渚
螳豌企 蟲.
 旧ろ襦 7危覿磯 XMLHttpRequest襯 れ危磯 覦ろ襴渚 螳豌企 讌. 襷 
覿 旧ろ襦 6, 7螻 蠏 危 旧ろ襦 覯, 蠏碁Μ螻 蠏  るジ 觚殊一 XHR
 蠍 伎 XHR 螳豌企ゼ 詞伎る 覦ろ襴渚 貊襯 れ螻 螳 燕  .
 XMLHttpRequest 螳豌企ゼ 視 覦覯
var xmlHttp;
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest(); //IE7+, Firefox, Chrome, Opera, Safari

} else {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE6, IE5襯  蟆.
}
3
www.javaspecialist.co.kr
3. XMLHttpRequest 覃
覃 る
open()
void open(string method, string url, boolean async, string username, string password)
豌 豐蠍壱.
- method : POST, GET, PUT 3螳讌 譴 襯 (覈)
- url : 豌螻  覯 url(覈)
- async : 豌 觜蠍一語 覿襯  覈. true(蠍磯蓋螳) 蟆曙 豌 觜蠍磯 豌襴螻手,
false企 豌 蠍磯 豌襴.
- username螻 password : 語  蟆曙 企螻 觜覦覯
send()
void send(content)
れ朱 豌 覯襦 覲企碁. 豌 觜蠍一企  覃 覦襦 襴企. 蠏碁 豌 
蠍一企 覯 旧 覦 蟾讌 蠍壱.
- content : content 朱誤磯 HttpRequest body   覿覿朱 覯襦 . DOM 螳豌(XML 螳
豌), input stream, string 螳朱 れ  . content  螳 蠍磯る open() 覃 覦
POST 襦 れ伎 覃, GET 覦朱 豌る null  れ. send(null), send(), send("")
覈 螳 覩語企.
setRequestHeader()
void setRequestHeader(string header, string value)
header  企麹 value 螳朱 HttpRequest る 螳 れ 覃. 覦 open() 覃
れ 豺伎 .
- header : る 企.
- value : る れ 螳.
* POST覦 豌 朱誤郁 蠍  key=value   蟆曙 Content-type る 螳
application/x-www-form-urlencoded襦 れ伎 .
abort()
void abort()
豌 譴讌.
getAllResponseHeaders()
string getAllResponseHeaders()
豌  旧 る覲企ゼ 襴危. Content-Length, Date, URI煙  る覲企ゼ
string 朱 覦.
getResponseHeader()
string getResponseHeader(string header)
旧 る覲 譴 header   螳 string 朱 覦.
- header : る 企.
4
www.javaspecialist.co.kr
4. XMLHttpRequest 
 る
readyState
readyState 煙 覯 豌襴 襯 0 4蟾讌  螳朱 碁.
0: open() 覃  
1: 襦(Loading) 譴  (send()  )
2: 襦 襭 (覯螳 Request襯 覦 )
3: 覯螳 豌襴 譴 
4: 覯 豌襴 襭
responseText
覯 旧 string 朱 碁.  text襯 innerHTML 煙朱   
. 蠏碁 朱Μ朱 燕蟇磯 朱 伎 貉豸襯 燕蠍磯 る.
responseXML 覯 旧 XML 襦 碁.  煙 DOM 螳豌企 燕  .
responseBody 覯 旧 覦一企 碁.  煙 DOM 螳豌企 燕  .
responseStream 覯 旧 ADO Stream朱 碁.  煙 DOM 螳豌企 燕  .
status
覯襦覿一 HTTP 貊. 200(OK), 204(No Content), 403(Forbidden), 404(
Not Found), 500(Internal Server Error) 煙 .
statusText
HTTP 貊  ろ 螳. OK, NOT Found  螳  貊れ  
ろ 螳.
5
www.javaspecialist.co.kr
5. readystatechange 企欧語 readyState 
 readystatechange readyState 螳 覦  襷 覦 企欧
 onreadystatechange 企欧 碁る襯 牛 readyState 螳 覲蟆曙 磯ジ 豌襴襯 燕伎
.
 覯襦覿 旧 覦 蟆曙 一危 豌襴
 readyState 螳 COMPLETED(4)襦 覲蟆暑 蟆曙
 state 螳 200 蟆曙(覯襦覿 朱 旧 覦 蟆曙)
xmlHttp.onreadystatechange = function() { //豌襴 覲蟆曙 覦 
if (xmlHttp.readyState == 4) { //覯 豌襴 襭
if (xmlHttp.status == 200) { //覯 OK
doMainProcess(xmlHttp); //覃 豌襴
}
}
};
 readyState  る
貊  る
0 UNINITIALIZED
XMLHttpRequest 螳豌企ゼ 燕讌襷, 豐蠍壱讌 .
讀, open() 覃襯 ろ讌  
1 LOADING
XMLHttpRequest 螳豌企ゼ 燕螻, open() 覃襯 讌襷, send() 覃襯 讌 
 .
2 LOADED send() 覃襯 讌襷, 覯螳 豌襴襯 譴觜螻  .
3 INTERACTIVE 豌襴襯 襭讌 讌襷, 讌 譴 .
4 COMPLETED 豌襴襯 襭 .
6
www.javaspecialist.co.kr
6. 觜蠍 豌 貊 
1. <script>
2. var xmlHttp;
3. function createXMLHttpRequest() {
4. if (window.ActiveXObject) {
5. xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
6. }
7. else if (window.XMLHttpRequest) {
8. xmlHttp = new XMLHttpRequest();
9. }
10. }
11. function startRequest() {
12. createXMLHttpRequest();
13. xmlHttp.onreadystatechange = handleStateChange;
14. xmlHttp.open("GET", "result.jsp", true);
15. xmlHttp.send(null);
16. }
17.
18. function handleStateChange() {
19. if(xmlHttp.readyState == 4) {
20. if(xmlHttp.status == 200) {
21. alert("The server replied with: " + xmlHttp.responseText);
22. }
23. }
24. }
25. </script>
7
www.javaspecialist.co.kr
Tomcat れ
8
 Tomcat.apache.org  tomcat 7.0  8.0 download 企Ν
 Zip  れ企
 C:Project 启 豢 伎
  貉危 ->  -> 螻蠍 ろ れ -> 蟆暑 -> ろ 覲 襦 蟆暑 豢螳
www.javaspecialist.co.kr
襦 觜 
9
 襦  -> 貉ろ 覃 -> Build Path -> Configure Build Path -> Libraries 
Catalina-7.0.39.2.jar 手骸
tomcat_juli.jar殊
WebSocket 襯 ろ
蠍  殊企襴 .
WebSocket  Tomcat
覯 7 ろ 螳ロ.
www.javaspecialist.co.kr
 襦碁ゼ ろ 覯 れ
 File -> New -> Other -> Server -> Server
 覯  -> 一 れ 襴 讌 -> ろ 襦   Add
1
2
3
4
10
www.javaspecialist.co.kr
ろ
 ろ  殊  れ
 Run  Run As  Run on server
11
www.javaspecialist.co.kr
7. AHOH(Asynchronous HTML over HTTP) (1/2)
 AHOH 觚殊一 HTTP襯 牛 豌 ajax襯 伎 觜蠍 朱 伎朱 蟆 覩誤
.
 AHOH 覯 觜蠍 豌  覦ろ襴渚碁ゼ 覦覲旧朱 燕 蟆 譴譴  .
1. //朱 : ahoh.js
2. function ahoh(url, target) {
3. document.getElementById(target).innerHTML = ' Fetching data...';
4. if (window.XMLHttpRequest) {
5. req = new XMLHttpRequest();
6. } else if (window.ActiveXObject) {
7. req = new ActiveXObject("Microsoft.XMLHTTP");
8. }
9. if (req != undefined) {
10. req.onreadystatechange = function() {
11. ahohDone(target);
12. };
13. req.open("GET", url, true);
14. req.send("");
15. }
16. }
17. function ahohDone(target) {
18. if (req.readyState == 4) { // only if req is "loaded"
19. if (req.status == 200) { // only if "OK"
20. document.getElementById(target).innerHTML = req.responseText;
21. } else {
22. document.getElementById(target).innerHTML=" AHOH Error:n"+ req.status + "n"
+req.statusText;
23. }
24. }
25. }
12
www.javaspecialist.co.kr
7. AHOH(Asynchronous HTML over HTTP) (2/2)
 AHOH襯 伎覃 <a> 襴襾狩碁ゼ 伎 焔 襷襯 企Ν  觜蠍 豌 覦
蟆   .
1. <!-- 朱 : ahoh.html -->
2. <!DOCTYPE html>
3. <html>
4. <head>
5. <meta charset="EUC-KR">
6. <title>AHOH(Asynchronous HTML over HTTP)</title>
7. <script src=/slideshow/42-ajax/53043804/"ahoh.js"></script>
8. <script>
9. //Calls the library function 'ahoh' - defined in 'ahoh.js' file.
10. function load(filename) {
11. ahoh(filename,"content");
12. }
13. </script>
14. </head>
15. <body>
16. <ul id="tabs">
17. <li><a href="result.jsp">蠍 豌</a></li>
18. <li><a href="javascript:load('result.jsp');">觜蠍 豌</a></li>
19. </ul>
20. <div id="content"></div>
21. </body>
22. </html>
13
www.javaspecialist.co.kr
8.  覃 豈(CORS)
 CORS(Cross-Origin Resource Sharing)   CORS HTTP る襯  
螳  覃 豢豌 豈朱  覃 螳  豌 螳ロ蟆 .
 蠍磯蓋朱 狩 危 豢豌 豈  危瑚 るジ 覃語  覯 襴るゼ 
豌讌 覈詩襦 . 蠏碁 XHR 螳豌企 豌   覯 襴 URL   
.
 讀, 蠏    覯 襴 URL  XHR 螳豌願 譟伎 覃語 伎 .
 XHR 螳豌願 蠍郁 伎 覃語  蠏 覦  覯 URL  語覃 觚殊
 襷 所 谿願 讌襷 豌豌企ゼ 觚殊一 谿.
るジ 覃語  Ajax API 伎 豌 蟆曙
讌 觚殊一(觚殊一 讌)
 Gecko 1.9.1 伎.
 WebKit(Safari 4伎, Google Chrome 3 伎)
 MSHTML/Trident 6.0 (Internet Explorer 10) 伎
 MSHTML/Trident 4.0 & 5.0 (Internet Explorer 8 & 9)
XDomainRequest 螳豌伎  讌
 Opera 12.00 伎, Opera Mobile 12 伎, Opera Mini 讌  .
14
www.javaspecialist.co.kr
9.  覃 豈 
 るジ 覃語 伎襯 觜蠍一朱 豌伎  蟆曙
 願屋覦覯 1
 覯 牛  ろ 覃語 Access-Control-Allow-Origin る襯 れ 願屋
 覃語 *襦 覃 覈 覃語  螳ロ襦 
 る 企 Access-Control-Allow-Origin, 蠏碁Μ螻 螳  覃語企 伎伎 .
 ) - JSP 貊
<%
response.setHeader("Access-Control-Allow-Origin", "*");
%>
 覲 螻旧螳 伎 
 願屋 覦覯 2
 螳 覃 伎 碁 覃 伎襯  覯伎襯 伎.
 ) - JSP 貊(曙 伎襦 伎)
<%@ page language="java" contentType="text/xml; charset=EUC-KR"
pageEncoding="EUC-KR" trimDirectiveWhitespaces="true"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:import charEncoding="UTF-8" url="http://otherdomain/reqpage.jsp"></c:import>
 覲 豌螳 讌 願屋   
 JSP jstl.jar 手骸 standard.jar 殊 
覯 蟲 語
襷 牛る襯
れ 覦覯
るゼ  .
  螳讌 覦覯 語
iframe 螻 Communication
API襯 伎  .
15
www.javaspecialist.co.kr
10. Proxy page襯 伎 CORS 
Client
Web Server(Domain A)
-----------------------------------------------------
-----------------------------------------------------Browser
Web Container
<<HTTP>>
HTTP response
(Data)
HTTP request
(Asynchronous)
HTML CSS JS
蟲譟  
Server Side Page襯 伎
 るジ 覃語 一危
襯 豌襦 .
Web Server(Domain B)
RSS feed page
<?xml
--------
--------
-----
-------
--------
-----
<%
--------
--------
-----
-------
--------
-----
%>
Proxy
page
覓語螳 覲襦 譟伎 蟆
 覩誤 蟆  襦
 伎 ろ 蟆郁骸螳
XML  JSON  
朱 螻給 覩誤
16
www.javaspecialist.co.kr
Lab - 覓語
 伎 蟲 覈覦  襷り鍵
 螻給 HTML 覓語 UI 螳覦 ク襯  jQuery mobile 殊企襴襯 
 觚襴酔 ろ   Tomcat 轟覯螳 
  覃 豈 覓語襯 豌螳 願屋蠍 
 螻給 
 proxy_common.jsp
 豌  伎朱 曙 貊
 news_rss.html
 伎 蟲 覈覦 伎
 jquery mobile 殊企襴襯 伎
 燕伎  
 rss.js
 危企曙れ 一今 覯 Proxy れ
 Run -> Run Configuration
 Apache Tomcat
- Tomcat v7.0 Server at localhost
 Arguments 
 VM Arguments   伎 豢螳
-Dhttp.proxyHost=168.219.61.252
-Dhttp.proxyPort=8080
 一今 覯 Proxy れ
 bin/catalina.bat(Window)  catalina.sh(Linux)  
set PROXYHOST_CONFIG=-Dhttp.proxyHost=168
set PROXYPORT_CONFIG=-Dhttp.proxyPort=8080
JAVA_OPTS = %PROXYHOST_CONFIG%
%PROXYPORT_CONFIG%
17
www.javaspecialist.co.kr
Lab - Solution (Ajax/end/news_rss.html)
1. <!-- samples/rss/news_rss.html -->
2. <!DOCTYPE html>
3. <html>
4. <head>
5. <meta charset="utf-8">
6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
7. <title>伎RSS</title>
8. <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.css" />
9. <script src=/slideshow/42-ajax/53043804/"http:/code.jquery.com/jquery-1.8.2.min.js"></script>
10.<script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>
11.<script src="./rss.js" defer></script>
12.</head>
13.<body>
14.<div data-role="page">
15. <div data-role="header">
16. <h1>伎 る</h1>
17. </div>
18.
19. <div data-role="content">
20. <p>
21. <!-- data-rssurl    炎企. (data- 蟾讌 螻牛 焔覈豺) -->
22. <a href="#news_rss" data-rssurl="http://file.mk.co.kr/news/rss/rss_30000001.xml">襷れ手化</a><br>
23. <a href="#news_rss" data-rssurl="http://rss.etnews.com/Section901.xml">覓</a><br>
24. <a href="#news_rss" data-rssurl="http://www.khan.co.kr/rss/rssdata/total_news.xml">蟆渚ル血惨</a><br>
25. <a href="#news_rss" data-rssurl="http://rss.nocutnews.co.kr/nocutnews.xml">語桟伎</a><br>
26. <a href="#news_rss" data-rssurl="http://www.hani.co.kr/rss/">蟆</a><br>
27. <a href="#news_rss" data-rssurl="http://www.chosun.com/site/data/rss/rss.xml">譟一朱慨</a><br>
28. </p>
29. </div>
30.
18
www.javaspecialist.co.kr
Lab - Solution (Ajax/end/news_rss.html)
31. <div data-role="footer">
32. <h4>誤</h4>
33. </div>
34.</div>
35.
36.<!--  #news_rss a 蠏 譴  企Ν  伎 朱 企 RSS覲願  -->
37.<div data-role="page" id="news_rss">
38. <div data-role="header">
39. <a data-rel="back">る</a>
40. <h1>RSS る</h1>
41. </div>
42.
43. <div data-role="content">
44. <p class="content-list">RSS 伎</p>
45. <div class="content-desc"></div>
46. </div>
47.</div>
48.
49.</body>
50.</html>
19
www.javaspecialist.co.kr
Lab - Solution (Ajax/end/proxy_common.jsp)
1. <%-- proxy_common.jsp --%>
2. <%@ page language="java" contentType="text/xml; charset=EUC-KR"
3. pageEncoding="EUC-KR" trimDirectiveWhitespaces="true"%>
4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
5. <c:import charEncoding="UTF-8" url="${param.rssurl}"></c:import>
6. <!--  螳レ 覿覿 param.rssurl 碁 願朱 jquery mobile 螻 蟲 一
 譯殊 朱誤 螳朱 .-->
7. <!-- import 蠏語 charEncoding 煙 螳 RSS覯 XML 語螻 殊伎 . -->
 る
  貊 ろ 5殊 url 螳朱  伎襯  語 譴.
  伎 ろ 蟆郁骸 XML覓語企.
 XML 覓語 蟆曙 Well-formed 蠏豺 襷譟燕伎 煙 螳ロ.
 Well-formed 蠏豺 豕 XML 覓語 蠏豺 襷譟燕伎 る 蟆
 覓語 豌 覦 <?xml 襦 伎 
 蠏瑚 朱 覦  蠏瑚 伎 .
 蠏碁磯  貊 1~4殊語 JSP  貊碁 ろ  觜 殊語 曙.
 蠏碁 3殊語 trimDirectiveWhitespaces="true"襯 l 蟆企, 企 <% %>襦 誤
覦 螻給葦螻 觜譴 蟇壱 譴.
  覓語 XML 覓語襦 襴企 覩襦 伎 貉  text/xml襦 れ伎 .
20
www.javaspecialist.co.kr
Lab - Solution (Ajax/end/rss.js)
1. var xhr = new XMLHttpRequest(); //ajax襯  螳豌 
2.
3. function init(){
4. var links = document.querySelectorAll("div[data-role='content'] p > a");
5.
6. for(var i=0, n=links.length ; i<n; i++) {
7. //console.log(links[i]);
8. links[i].addEventListener('click', getRssData);
9. }
10.};
11.
12.function getRssData(event) {
13. //event.preventDefault(); //l朱 伎  
14. var rss_url = this.dataset.rssurl;
15. if (rss_url == "") {
16. alert('RSS address is empty.');
17. return false;
18. }
19. xhr.onreadystatechange = function() {
20. if(xhr.readyState == 4 && xhr.status == 200){
21. displayResult(xhr.responseXML); //蟆郁骸襯 XML襦 覦 煙 螳ロ
22. }
23. };
24. rss_url = encodeURIComponent(rss_url); //譯殊 語,譯殊 蠍   蟆曙
25. xhr.open("GET", "./proxy_common.jsp?rssurl=" + rss_url, true);
26. xhr.send(null);
27.}
21
www.javaspecialist.co.kr
Lab - Solution (Ajax/end/rss.js)
28.function displayResult(result) {
29. var items = result.querySelectorAll('item');
30. //console.log(items.length);
31.
32. var target = document.querySelector("#news_rss div[data-role=content] .content-list");
33.
34. target.innerHTML = "";
35.
36. for(var i=0, n=items.length; i<n; i++) {
37. var title = items[i].querySelector('title').textContent;
38. //var title = items[i].getElementsByTagName('title')[0].textContent; // 貊 狩 
覩
39. var link = items[i].querySelector('link').textContent;
40. var desc = items[i].querySelector('description').textContent;
41. var temp_el = document.createElement("p"); //<p> 襯 燕, 伎り鍵 1螳 
42.
43. temp_el.innerHTML = (i+1) +". <a href='" + link + "'>" + title + "</a><span>" + desc +
"</span>";
44. target.appendChild(temp_el);
45. }
46.};
47.
48.init();
22
www.javaspecialist.co.kr
Lab - 碁 RSS 朱 URL
 SBS http://api.sbs.co.kr/xml/news/rss.jsp?pmDiv=all
 MBC http://imnews.imbc.com/rss/news/news_00.xml
 譟一血惨 http://www.chosun.com/site/data/rss/rss.xml
 譴朱慨 http://rss.joinsmsn.com/joins_news_list.xml
 語桟伎 http://rss.nocutnews.co.kr/nocutnews.xml
 血惨 http://rss.donga.com/total.xml
 瑚朱慨 http://rss.segye.com/segye_recent.xml
 る企伎 http://rss.ohmynews.com/rss/ohmynews.xml
 蟆 http://www.hani.co.kr/rss/
 襷れ手化 http://file.mk.co.kr/news/rss/rss_30000001.xml
 蟆渚ル血惨 http://www.khan.co.kr/rss/rssdata/total_news.xml
 企一朱Μ http://rss.edaily.co.kr/edaily_news.xml
 企語伎 http://www.fnnews.com/rss/fn_realnews_all.xml
 覓 http://rss.etnews.com/Section901.xml
 ろ豸 http://www.sportsseoul.com/rss/rss.asp?cp_flag=1
 企伎 http://www.inews24.com/rss/news_inews.xml
 る企蟆曙 http://biz.heraldm.com/rss/010000000000.xml
 貎る伎 http://rss.kukinews.com/data/kukiRssAll.xml
RSS覯覲襦 
一危一 語 
 る 譯殊
. 覦譴 豺 碁
RSS 朱 EUC-
KR 企.
23
www.javaspecialist.co.kr
Lab - Advanced
 覯襷 給一危一 語  るゴ覃 企至 讌?
1. HTML 覓語 貉れろ 一危 煙朱 語 讌.
<a href="#news_rss" data-charset="UTF-8" data-rssurl="http://file.mk.co.kr/news/rss/rss_30000001.xml">襷れ手化</a><br>
<a href="#news_rss" data-charset="EUC-KR" data-rssurl="http://imnews.imbc.com/rss/news/news_00.xml">MBC</a><br>
2. 覦ろ襴渚語 OPEN 覃 URL 朱誤磯 語 .
var param = "";
if(this.dataset.charset) {
param = "rssurl=" + rss_url + "&charset=" + this.dataset.charset;
}else {
param = "rssurl=" + rss_url;
}
xhr.open("GET", "./proxy_common.jsp?" + param, true);
3. 覯伎(JSP)  朱誤磯 語 れ.
<c:import charEncoding="${empty param.charset ? 'UTF-8' : param.charset}" url="${param.rssurl}"></c:import>
 覦ろ襴渚 手骸 JSP 殊  豌 覲旧″  . HTML 覓語 data-charset
煙 讌  蟆曙 吴 語 UTF-8 襦 蠍  所 譟郁唄覓
 豢螳 蟆企.
24

More Related Content

What's hot (20)

5-3. html5 device access
5-3. html5 device access5-3. html5 device access
5-3. html5 device access
JinKyoungHeo
JSP 襦蠏碁覦 #05 HTML螻 JSP
JSP 襦蠏碁覦 #05 HTML螻 JSPJSP 襦蠏碁覦 #05 HTML螻 JSP
JSP 襦蠏碁覦 #05 HTML螻 JSP
Myungjin Lee
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
蠍磯
JSP 襦蠏碁覦 #04 JSP 蠍磯蓋
JSP 襦蠏碁覦 #04 JSP  蠍磯蓋JSP 襦蠏碁覦 #04 JSP  蠍磯蓋
JSP 襦蠏碁覦 #04 JSP 蠍磯蓋
Myungjin Lee
讌讌蠍一 Node.js
讌讌蠍一 Node.js讌讌蠍一 Node.js
讌讌蠍一 Node.js
Woo Jin Kim
Express
Express Express
Express
Choonghyun Yang
JSP 襦蠏碁覦 #01 襦蠏碁覦
JSP 襦蠏碁覦 #01  襦蠏碁覦JSP 襦蠏碁覦 #01  襦蠏碁覦
JSP 襦蠏碁覦 #01 襦蠏碁覦
Myungjin Lee
ECMAScript 6 襦 蟆!
ECMAScript 6 襦 蟆!ECMAScript 6 襦 蟆!
ECMAScript 6 襦 蟆!
WooYoung Cho
2 1. html4.01
2 1. html4.012 1. html4.01
2 1. html4.01
JinKyoungHeo
REST API り
REST API りREST API り
REST API り
Terry Cho
Hacosa jquery 1th
Hacosa jquery 1thHacosa jquery 1th
Hacosa jquery 1th
Seong Bong Ji
襷 ろ磯 豌 覯讌 襷 Node.js
襷 ろ磯 豌 覯讌 襷 Node.js襷 ろ磯 豌 覯讌 襷 Node.js
襷 ろ磯 豌 覯讌 襷 Node.js
一 譟
[Hello world ろ碁碁]open api client螳覦
[Hello world ろ碁碁]open api client螳覦[Hello world ろ碁碁]open api client螳覦
[Hello world ろ碁碁]open api client螳覦
NAVER D2
[D2 CAMPUS] 襦企 ろ ろ磯襭 - OkHttp
[D2 CAMPUS] 襦企 ろ ろ磯襭 - OkHttp[D2 CAMPUS] 襦企 ろ ろ磯襭 - OkHttp
[D2 CAMPUS] 襦企 ろ ろ磯襭 - OkHttp
NAVER D2
Web server page_ed10
Web server page_ed10Web server page_ed10
Web server page_ed10
hungrok
3-1. css
3-1. css3-1. css
3-1. css
JinKyoungHeo
Html5 performance
Html5 performanceHtml5 performance
Html5 performance
yongwoo Jeon
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summary
HoChul Shin
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modificationSecrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
Hyuncheol Jeon
5-3. html5 device access
5-3. html5 device access5-3. html5 device access
5-3. html5 device access
JinKyoungHeo
JSP 襦蠏碁覦 #05 HTML螻 JSP
JSP 襦蠏碁覦 #05 HTML螻 JSPJSP 襦蠏碁覦 #05 HTML螻 JSP
JSP 襦蠏碁覦 #05 HTML螻 JSP
Myungjin Lee
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
蠍磯
JSP 襦蠏碁覦 #04 JSP 蠍磯蓋
JSP 襦蠏碁覦 #04 JSP  蠍磯蓋JSP 襦蠏碁覦 #04 JSP  蠍磯蓋
JSP 襦蠏碁覦 #04 JSP 蠍磯蓋
Myungjin Lee
讌讌蠍一 Node.js
讌讌蠍一 Node.js讌讌蠍一 Node.js
讌讌蠍一 Node.js
Woo Jin Kim
JSP 襦蠏碁覦 #01 襦蠏碁覦
JSP 襦蠏碁覦 #01  襦蠏碁覦JSP 襦蠏碁覦 #01  襦蠏碁覦
JSP 襦蠏碁覦 #01 襦蠏碁覦
Myungjin Lee
ECMAScript 6 襦 蟆!
ECMAScript 6 襦 蟆!ECMAScript 6 襦 蟆!
ECMAScript 6 襦 蟆!
WooYoung Cho
REST API り
REST API りREST API り
REST API り
Terry Cho
Hacosa jquery 1th
Hacosa jquery 1thHacosa jquery 1th
Hacosa jquery 1th
Seong Bong Ji
襷 ろ磯 豌 覯讌 襷 Node.js
襷 ろ磯 豌 覯讌 襷 Node.js襷 ろ磯 豌 覯讌 襷 Node.js
襷 ろ磯 豌 覯讌 襷 Node.js
一 譟
[Hello world ろ碁碁]open api client螳覦
[Hello world ろ碁碁]open api client螳覦[Hello world ろ碁碁]open api client螳覦
[Hello world ろ碁碁]open api client螳覦
NAVER D2
[D2 CAMPUS] 襦企 ろ ろ磯襭 - OkHttp
[D2 CAMPUS] 襦企 ろ ろ磯襭 - OkHttp[D2 CAMPUS] 襦企 ろ ろ磯襭 - OkHttp
[D2 CAMPUS] 襦企 ろ ろ磯襭 - OkHttp
NAVER D2
Web server page_ed10
Web server page_ed10Web server page_ed10
Web server page_ed10
hungrok
Html5 performance
Html5 performanceHtml5 performance
Html5 performance
yongwoo Jeon
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summary
HoChul Shin
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modificationSecrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
Hyuncheol Jeon

Viewers also liked (20)

メ梶戟≡梶 ==梶梶求午, 求 #3
メ梶戟≡梶 ==梶梶求午, 求 #3メ梶戟≡梶 ==梶梶求午, 求 #3
メ梶戟≡梶 ==梶梶求午, 求 #3
メ梶戟≡梶 ==梶梶求午, 求 #1
メ梶戟≡梶 ==梶梶求午, 求 #1メ梶戟≡梶 ==梶梶求午, 求 #1
メ梶戟≡梶 ==梶梶求午, 求 #1
jQuery 蟲譟一 蠍磯
jQuery 蟲譟一 蠍磯jQuery 蟲譟一 蠍磯
jQuery 蟲譟一 蠍磯
Kenu, GwangNam Heo
干援顎艶姻霞矧旧堝誤
干援顎艶姻霞矧旧堝誤干援顎艶姻霞矧旧堝誤
干援顎艶姻霞矧旧堝誤
jeong seok yang
メ梶戟≡梶 ==梶梶求午, 求 #4
メ梶戟≡梶 ==梶梶求午, 求 #4メ梶戟≡梶 ==梶梶求午, 求 #4
メ梶戟≡梶 ==梶梶求午, 求 #4
[貊碁碁] 螳 襷 覦一磯 Jquery
[貊碁碁]  螳 襷 覦一磯 Jquery[貊碁碁]  螳 襷 覦一磯 Jquery
[貊碁碁] 螳 襷 覦一磯 Jquery
jQuery Trend
jQuery TrendjQuery Trend
jQuery Trend
Taegon Kim
メ梶戟≡梶 ==梶梶求午, 求 #2
メ梶戟≡梶 ==梶梶求午, 求 #2メ梶戟≡梶 ==梶梶求午, 求 #2
メ梶戟≡梶 ==梶梶求午, 求 #2
Chapter 14. json
Chapter 14. jsonChapter 14. json
Chapter 14. json
kidoki
Change my perspective designer&developer
Change my perspective designer&developerChange my perspective designer&developer
Change my perspective designer&developer
Tae Young Lee
Ajax ellen seon_ss
Ajax ellen seon_ssAjax ellen seon_ss
Ajax ellen seon_ss
Ellen Seon
10 ajax
10 ajax10 ajax
10 ajax
jQuery る レ蠍
 jQuery る レ蠍 jQuery る レ蠍
jQuery る レ蠍
JavaSript Template Engine
JavaSript Template EngineJavaSript Template Engine
JavaSript Template Engine
Ohgyun Ahn
WEB Front-End ≡=メ =п
WEB Front-End ≡=メ =пWEB Front-End ≡=メ =п
WEB Front-End ≡=メ =п
6 javaScript 求==
6  javaScript 求==6  javaScript 求==
6 javaScript 求==
Clean Front-End Development
Clean Front-End DevelopmentClean Front-End Development
Clean Front-End Development
2. template
2. template2. template
2. template
seung-hyun Park
貊碁碁_貂覯 願係 襷り鍵
貊碁碁_貂覯 願係 襷り鍵貊碁碁_貂覯 願係 襷り鍵
貊碁碁_貂覯 願係 襷り鍵
メ梶戟≡梶 ==梶梶求午, 求 #3
メ梶戟≡梶 ==梶梶求午, 求 #3メ梶戟≡梶 ==梶梶求午, 求 #3
メ梶戟≡梶 ==梶梶求午, 求 #3
メ梶戟≡梶 ==梶梶求午, 求 #1
メ梶戟≡梶 ==梶梶求午, 求 #1メ梶戟≡梶 ==梶梶求午, 求 #1
メ梶戟≡梶 ==梶梶求午, 求 #1
干援顎艶姻霞矧旧堝誤
干援顎艶姻霞矧旧堝誤干援顎艶姻霞矧旧堝誤
干援顎艶姻霞矧旧堝誤
jeong seok yang
メ梶戟≡梶 ==梶梶求午, 求 #4
メ梶戟≡梶 ==梶梶求午, 求 #4メ梶戟≡梶 ==梶梶求午, 求 #4
メ梶戟≡梶 ==梶梶求午, 求 #4
[貊碁碁] 螳 襷 覦一磯 Jquery
[貊碁碁]  螳 襷 覦一磯 Jquery[貊碁碁]  螳 襷 覦一磯 Jquery
[貊碁碁] 螳 襷 覦一磯 Jquery
jQuery Trend
jQuery TrendjQuery Trend
jQuery Trend
Taegon Kim
メ梶戟≡梶 ==梶梶求午, 求 #2
メ梶戟≡梶 ==梶梶求午, 求 #2メ梶戟≡梶 ==梶梶求午, 求 #2
メ梶戟≡梶 ==梶梶求午, 求 #2
Chapter 14. json
Chapter 14. jsonChapter 14. json
Chapter 14. json
kidoki
Change my perspective designer&developer
Change my perspective designer&developerChange my perspective designer&developer
Change my perspective designer&developer
Tae Young Lee
Ajax ellen seon_ss
Ajax ellen seon_ssAjax ellen seon_ss
Ajax ellen seon_ss
Ellen Seon
10 ajax
10 ajax10 ajax
10 ajax
jQuery る レ蠍
 jQuery る レ蠍 jQuery る レ蠍
jQuery る レ蠍
JavaSript Template Engine
JavaSript Template EngineJavaSript Template Engine
JavaSript Template Engine
Ohgyun Ahn
WEB Front-End ≡=メ =п
WEB Front-End ≡=メ =пWEB Front-End ≡=メ =п
WEB Front-End ≡=メ =п
6 javaScript 求==
6  javaScript 求==6  javaScript 求==
6 javaScript 求==
Clean Front-End Development
Clean Front-End DevelopmentClean Front-End Development
Clean Front-End Development
貊碁碁_貂覯 願係 襷り鍵
貊碁碁_貂覯 願係 襷り鍵貊碁碁_貂覯 願係 襷り鍵
貊碁碁_貂覯 願係 襷り鍵

Similar to 4-2. ajax (20)

Node.js 豌蟇語
Node.js 豌蟇語Node.js 豌蟇語
Node.js 豌蟇語
SeungHyun Lee
Servlet3
Servlet3Servlet3
Servlet3
Sukjin Yun
Ksug 碁碁 (れ煙) (20121208)
Ksug 碁碁 (れ煙) (20121208)Ksug 碁碁 (れ煙) (20121208)
Ksug 碁碁 (れ煙) (20121208)
Sungjoon Yoon
Node.js and react
Node.js and reactNode.js and react
Node.js and react
HyungKuIm
One-day-codelab
One-day-codelabOne-day-codelab
One-day-codelab
WebFrameworks
JQuery襯 伎 燕蠍_(譯)ろ伎れ
JQuery襯 伎   燕蠍_(譯)ろ伎れJQuery襯 伎   燕蠍_(譯)ろ伎れ
JQuery襯 伎 燕蠍_(譯)ろ伎れ
sys4u
[Codelab 2017] ReactJS 蠍一
[Codelab 2017] ReactJS 蠍一[Codelab 2017] ReactJS 蠍一
[Codelab 2017] ReactJS 蠍一
襷ろ磯 覯讌碁 Express(20151025)
襷ろ磯 覯讌碁 Express(20151025)襷ろ磯 覯讌碁 Express(20151025)
襷ろ磯 覯讌碁 Express(20151025)
一 譟
伎 襦蠏碁覦 2
伎  襦蠏碁覦 2 伎  襦蠏碁覦 2
伎 襦蠏碁覦 2
SeongHyun Ahn
#22.ろ襷 & 襷企一 (Spring Framework, MyBatis)_ろ襷 螳譬, 讌蠍蟲,れ蟲觜讌...
#22.ろ襷 & 襷企一 (Spring Framework, MyBatis)_ろ襷 螳譬, 讌蠍蟲,れ蟲觜讌...#22.ろ襷 & 襷企一 (Spring Framework, MyBatis)_ろ襷 螳譬, 讌蠍蟲,れ蟲觜讌...
#22.ろ襷 & 襷企一 (Spring Framework, MyBatis)_ろ襷 螳譬, 讌蠍蟲,れ蟲觜讌...
襴(蟲襦讌碁讌3覯豢蟲 2覿蟇磯Μ)
HTTP web server 蟲
HTTP web server 蟲HTTP web server 蟲
HTTP web server 蟲
Javajigi Jaesung
GKAC 2015 Apr. - Battery, 襦企襯 API 語
GKAC 2015 Apr. - Battery, 襦企襯    API 語GKAC 2015 Apr. - Battery, 襦企襯    API 語
GKAC 2015 Apr. - Battery, 襦企襯 API 語
GDG Korea
What's new in IE11
What's new in IE11What's new in IE11
What's new in IE11
Jae Sung Park
Spring portfolio2
Spring portfolio2Spring portfolio2
Spring portfolio2
ssuser25d7ff
7. html5 api
7. html5 api7. html5 api
7. html5 api
7螳讌 覈 れろ豌
7螳讌  覈  れろ豌7螳讌  覈  れろ豌
7螳讌 覈 れろ豌
Sunggon Song
Node js[stg]onimusha 20140822
Node js[stg]onimusha 20140822Node js[stg]onimusha 20140822
Node js[stg]onimusha 20140822
vert.x 襯 覿一覯 螳覦蠍
vert.x 襯  覿一覯 螳覦蠍vert.x 襯  覿一覯 螳覦蠍
vert.x 襯 覿一覯 螳覦蠍
John Kim
Node.js 豌蟇語
Node.js 豌蟇語Node.js 豌蟇語
Node.js 豌蟇語
SeungHyun Lee
Ksug 碁碁 (れ煙) (20121208)
Ksug 碁碁 (れ煙) (20121208)Ksug 碁碁 (れ煙) (20121208)
Ksug 碁碁 (れ煙) (20121208)
Sungjoon Yoon
Node.js and react
Node.js and reactNode.js and react
Node.js and react
HyungKuIm
JQuery襯 伎 燕蠍_(譯)ろ伎れ
JQuery襯 伎   燕蠍_(譯)ろ伎れJQuery襯 伎   燕蠍_(譯)ろ伎れ
JQuery襯 伎 燕蠍_(譯)ろ伎れ
sys4u
[Codelab 2017] ReactJS 蠍一
[Codelab 2017] ReactJS 蠍一[Codelab 2017] ReactJS 蠍一
[Codelab 2017] ReactJS 蠍一
襷ろ磯 覯讌碁 Express(20151025)
襷ろ磯 覯讌碁 Express(20151025)襷ろ磯 覯讌碁 Express(20151025)
襷ろ磯 覯讌碁 Express(20151025)
一 譟
伎 襦蠏碁覦 2
伎  襦蠏碁覦 2 伎  襦蠏碁覦 2
伎 襦蠏碁覦 2
SeongHyun Ahn
#22.ろ襷 & 襷企一 (Spring Framework, MyBatis)_ろ襷 螳譬, 讌蠍蟲,れ蟲觜讌...
#22.ろ襷 & 襷企一 (Spring Framework, MyBatis)_ろ襷 螳譬, 讌蠍蟲,れ蟲觜讌...#22.ろ襷 & 襷企一 (Spring Framework, MyBatis)_ろ襷 螳譬, 讌蠍蟲,れ蟲觜讌...
#22.ろ襷 & 襷企一 (Spring Framework, MyBatis)_ろ襷 螳譬, 讌蠍蟲,れ蟲觜讌...
襴(蟲襦讌碁讌3覯豢蟲 2覿蟇磯Μ)
GKAC 2015 Apr. - Battery, 襦企襯 API 語
GKAC 2015 Apr. - Battery, 襦企襯    API 語GKAC 2015 Apr. - Battery, 襦企襯    API 語
GKAC 2015 Apr. - Battery, 襦企襯 API 語
GDG Korea
What's new in IE11
What's new in IE11What's new in IE11
What's new in IE11
Jae Sung Park
Spring portfolio2
Spring portfolio2Spring portfolio2
Spring portfolio2
ssuser25d7ff
7. html5 api
7. html5 api7. html5 api
7. html5 api
7螳讌 覈 れろ豌
7螳讌  覈  れろ豌7螳讌  覈  れろ豌
7螳讌 覈 れろ豌
Sunggon Song
Node js[stg]onimusha 20140822
Node js[stg]onimusha 20140822Node js[stg]onimusha 20140822
Node js[stg]onimusha 20140822
vert.x 襯 覿一覯 螳覦蠍
vert.x 襯  覿一覯 螳覦蠍vert.x 襯  覿一覯 螳覦蠍
vert.x 襯 覿一覯 螳覦蠍
John Kim

4-2. ajax

  • 2. www.javaspecialist.co.kr 1. AJAX(Asynchronous JavaScript and XML) "觜蠍 覦 覦ろ襴渚語 XML" 襦 "覦ろ襴渚語 XML" 襷 殊 '覦' ' 覯伎' 蠏碁Μ螻 'C' 螳 襦蠏碁覦 語 企 手 螳讌襷 れ襦 覲企 襷 蠍一 覲牛 朱 襦蠏碁 螳覦 螳覦 (蠍一)企手 . 蠍一ヾ 轟危 蟲 覦 轟 1. 企殊伎誤( 貉危) 豪殊一(誤磯血旧ろ襦)螳 轟覯(豺)蟆 豌 ″. 2. 轟覯 豌 豌襴襯 蠍 DB 磯 伎狩 DB 磯 蠍 伎 JSP/ASP/PHP 煙 覯 豸 危襴貅伎 伎 讀 覯危 ろ襴渚語 覦 豌 豌襴. 3. 豌襴 蟆郁骸襯 HTML(FORM 蠏) 燕伎(伎伎) 企殊伎誤 豸 豪殊一(誤磯血旧 襦)蟆 ′ . 4. 企殊伎誤 豸 豪殊一(誤磯血旧ろ襦) 旧朱 覦 HTML 覿 蠏 伎 覃伎 蠏碁れ. 蠍一ヾ 轟危語 一危磯ゼ 豌襴 HTML(FORM 蠏)襯 伎伎 螳 submit() 牛伎 螳 覲企願 企 伎 覯 旧螻 response 螳 伎り鍵 蟾讌 覓願 覈 螳 . 讀, 螳 覯豸′朱 豌 覲企企 覯 旧 蟾讌 企 るジ 覃企 覲 螻, 螳 豌 覃 覯襦覿 旧 覦朱 觚殊一 蟆郁骸襯 覲 . Ajax レ Ajax 覦ろ襴渚碁ゼ 牛伎 覯 旧螻 螳 覦. 覯 旧螻 螳 覦る 譴 るジ 殊 . 2
  • 3. www.javaspecialist.co.kr 2. XMLHttpRequest 觜蠍 豌 蠍 JavaScript API XMLHttpRequest(XHR) 螳豌企 旧ろ襦 5 ActiveX 貉危 朱 螳 襾殊 螻給 XHR W3C 譴 覃 觚殊一襷 覦 伎 所 谿願 蠍 覓語 覈 讌殊 襴 豪殊一 螳豌企ゼ 蠍 蟾讌 襷 螳覦れ XMLHttpRequest 螳豌伎 蟶朱ろ. 覿覿 觚殊一れ XHR 蠍磯レ 襦 觜訣蟆 蟲螻 朱 覿覿 觚殊 れ れ危磯 覦ろ襴渚(native javascript) 螳豌企 XHR 讌螻 . Ajax 蟲 XHR 螳豌伎 煙 . XHR W3C 譴 覩襦, 螻手碓 旧ろ襦 5, 6 ActiveX Component 朱 蟲 螻, 蠏 覦 るジ 觚殊一(FireFox, Chrome, Safari, Opera) れ危磯 覦ろ襴渚 螳豌企 蟲. 旧ろ襦 7危覿磯 XMLHttpRequest襯 れ危磯 覦ろ襴渚 螳豌企 讌. 襷 覿 旧ろ襦 6, 7螻 蠏 危 旧ろ襦 覯, 蠏碁Μ螻 蠏 るジ 觚殊一 XHR 蠍 伎 XHR 螳豌企ゼ 詞伎る 覦ろ襴渚 貊襯 れ螻 螳 燕 . XMLHttpRequest 螳豌企ゼ 視 覦覯 var xmlHttp; if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); //IE7+, Firefox, Chrome, Opera, Safari } else { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE6, IE5襯 蟆. } 3
  • 4. www.javaspecialist.co.kr 3. XMLHttpRequest 覃 覃 る open() void open(string method, string url, boolean async, string username, string password) 豌 豐蠍壱. - method : POST, GET, PUT 3螳讌 譴 襯 (覈) - url : 豌螻 覯 url(覈) - async : 豌 觜蠍一語 覿襯 覈. true(蠍磯蓋螳) 蟆曙 豌 觜蠍磯 豌襴螻手, false企 豌 蠍磯 豌襴. - username螻 password : 語 蟆曙 企螻 觜覦覯 send() void send(content) れ朱 豌 覯襦 覲企碁. 豌 觜蠍一企 覃 覦襦 襴企. 蠏碁 豌 蠍一企 覯 旧 覦 蟾讌 蠍壱. - content : content 朱誤磯 HttpRequest body 覿覿朱 覯襦 . DOM 螳豌(XML 螳 豌), input stream, string 螳朱 れ . content 螳 蠍磯る open() 覃 覦 POST 襦 れ伎 覃, GET 覦朱 豌る null れ. send(null), send(), send("") 覈 螳 覩語企. setRequestHeader() void setRequestHeader(string header, string value) header 企麹 value 螳朱 HttpRequest る 螳 れ 覃. 覦 open() 覃 れ 豺伎 . - header : る 企. - value : る れ 螳. * POST覦 豌 朱誤郁 蠍 key=value 蟆曙 Content-type る 螳 application/x-www-form-urlencoded襦 れ伎 . abort() void abort() 豌 譴讌. getAllResponseHeaders() string getAllResponseHeaders() 豌 旧 る覲企ゼ 襴危. Content-Length, Date, URI煙 る覲企ゼ string 朱 覦. getResponseHeader() string getResponseHeader(string header) 旧 る覲 譴 header 螳 string 朱 覦. - header : る 企. 4
  • 5. www.javaspecialist.co.kr 4. XMLHttpRequest る readyState readyState 煙 覯 豌襴 襯 0 4蟾讌 螳朱 碁. 0: open() 覃 1: 襦(Loading) 譴 (send() ) 2: 襦 襭 (覯螳 Request襯 覦 ) 3: 覯螳 豌襴 譴 4: 覯 豌襴 襭 responseText 覯 旧 string 朱 碁. text襯 innerHTML 煙朱 . 蠏碁 朱Μ朱 燕蟇磯 朱 伎 貉豸襯 燕蠍磯 る. responseXML 覯 旧 XML 襦 碁. 煙 DOM 螳豌企 燕 . responseBody 覯 旧 覦一企 碁. 煙 DOM 螳豌企 燕 . responseStream 覯 旧 ADO Stream朱 碁. 煙 DOM 螳豌企 燕 . status 覯襦覿一 HTTP 貊. 200(OK), 204(No Content), 403(Forbidden), 404( Not Found), 500(Internal Server Error) 煙 . statusText HTTP 貊 ろ 螳. OK, NOT Found 螳 貊れ ろ 螳. 5
  • 6. www.javaspecialist.co.kr 5. readystatechange 企欧語 readyState readystatechange readyState 螳 覦 襷 覦 企欧 onreadystatechange 企欧 碁る襯 牛 readyState 螳 覲蟆曙 磯ジ 豌襴襯 燕伎 . 覯襦覿 旧 覦 蟆曙 一危 豌襴 readyState 螳 COMPLETED(4)襦 覲蟆暑 蟆曙 state 螳 200 蟆曙(覯襦覿 朱 旧 覦 蟆曙) xmlHttp.onreadystatechange = function() { //豌襴 覲蟆曙 覦 if (xmlHttp.readyState == 4) { //覯 豌襴 襭 if (xmlHttp.status == 200) { //覯 OK doMainProcess(xmlHttp); //覃 豌襴 } } }; readyState る 貊 る 0 UNINITIALIZED XMLHttpRequest 螳豌企ゼ 燕讌襷, 豐蠍壱讌 . 讀, open() 覃襯 ろ讌 1 LOADING XMLHttpRequest 螳豌企ゼ 燕螻, open() 覃襯 讌襷, send() 覃襯 讌 . 2 LOADED send() 覃襯 讌襷, 覯螳 豌襴襯 譴觜螻 . 3 INTERACTIVE 豌襴襯 襭讌 讌襷, 讌 譴 . 4 COMPLETED 豌襴襯 襭 . 6
  • 7. www.javaspecialist.co.kr 6. 觜蠍 豌 貊 1. <script> 2. var xmlHttp; 3. function createXMLHttpRequest() { 4. if (window.ActiveXObject) { 5. xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 6. } 7. else if (window.XMLHttpRequest) { 8. xmlHttp = new XMLHttpRequest(); 9. } 10. } 11. function startRequest() { 12. createXMLHttpRequest(); 13. xmlHttp.onreadystatechange = handleStateChange; 14. xmlHttp.open("GET", "result.jsp", true); 15. xmlHttp.send(null); 16. } 17. 18. function handleStateChange() { 19. if(xmlHttp.readyState == 4) { 20. if(xmlHttp.status == 200) { 21. alert("The server replied with: " + xmlHttp.responseText); 22. } 23. } 24. } 25. </script> 7
  • 8. www.javaspecialist.co.kr Tomcat れ 8 Tomcat.apache.org tomcat 7.0 8.0 download 企Ν Zip れ企 C:Project 启 豢 伎 貉危 -> -> 螻蠍 ろ れ -> 蟆暑 -> ろ 覲 襦 蟆暑 豢螳
  • 9. www.javaspecialist.co.kr 襦 觜 9 襦 -> 貉ろ 覃 -> Build Path -> Configure Build Path -> Libraries Catalina-7.0.39.2.jar 手骸 tomcat_juli.jar殊 WebSocket 襯 ろ 蠍 殊企襴 . WebSocket Tomcat 覯 7 ろ 螳ロ.
  • 10. www.javaspecialist.co.kr 襦碁ゼ ろ 覯 れ File -> New -> Other -> Server -> Server 覯 -> 一 れ 襴 讌 -> ろ 襦 Add 1 2 3 4 10
  • 11. www.javaspecialist.co.kr ろ ろ 殊 れ Run Run As Run on server 11
  • 12. www.javaspecialist.co.kr 7. AHOH(Asynchronous HTML over HTTP) (1/2) AHOH 觚殊一 HTTP襯 牛 豌 ajax襯 伎 觜蠍 朱 伎朱 蟆 覩誤 . AHOH 覯 觜蠍 豌 覦ろ襴渚碁ゼ 覦覲旧朱 燕 蟆 譴譴 . 1. //朱 : ahoh.js 2. function ahoh(url, target) { 3. document.getElementById(target).innerHTML = ' Fetching data...'; 4. if (window.XMLHttpRequest) { 5. req = new XMLHttpRequest(); 6. } else if (window.ActiveXObject) { 7. req = new ActiveXObject("Microsoft.XMLHTTP"); 8. } 9. if (req != undefined) { 10. req.onreadystatechange = function() { 11. ahohDone(target); 12. }; 13. req.open("GET", url, true); 14. req.send(""); 15. } 16. } 17. function ahohDone(target) { 18. if (req.readyState == 4) { // only if req is "loaded" 19. if (req.status == 200) { // only if "OK" 20. document.getElementById(target).innerHTML = req.responseText; 21. } else { 22. document.getElementById(target).innerHTML=" AHOH Error:n"+ req.status + "n" +req.statusText; 23. } 24. } 25. } 12
  • 13. www.javaspecialist.co.kr 7. AHOH(Asynchronous HTML over HTTP) (2/2) AHOH襯 伎覃 <a> 襴襾狩碁ゼ 伎 焔 襷襯 企Ν 觜蠍 豌 覦 蟆 . 1. <!-- 朱 : ahoh.html --> 2. <!DOCTYPE html> 3. <html> 4. <head> 5. <meta charset="EUC-KR"> 6. <title>AHOH(Asynchronous HTML over HTTP)</title> 7. <script src=/slideshow/42-ajax/53043804/"ahoh.js"></script> 8. <script> 9. //Calls the library function 'ahoh' - defined in 'ahoh.js' file. 10. function load(filename) { 11. ahoh(filename,"content"); 12. } 13. </script> 14. </head> 15. <body> 16. <ul id="tabs"> 17. <li><a href="result.jsp">蠍 豌</a></li> 18. <li><a href="javascript:load('result.jsp');">觜蠍 豌</a></li> 19. </ul> 20. <div id="content"></div> 21. </body> 22. </html> 13
  • 14. www.javaspecialist.co.kr 8. 覃 豈(CORS) CORS(Cross-Origin Resource Sharing) CORS HTTP る襯 螳 覃 豢豌 豈朱 覃 螳 豌 螳ロ蟆 . 蠍磯蓋朱 狩 危 豢豌 豈 危瑚 るジ 覃語 覯 襴るゼ 豌讌 覈詩襦 . 蠏碁 XHR 螳豌企 豌 覯 襴 URL . 讀, 蠏 覯 襴 URL XHR 螳豌願 譟伎 覃語 伎 . XHR 螳豌願 蠍郁 伎 覃語 蠏 覦 覯 URL 語覃 觚殊 襷 所 谿願 讌襷 豌豌企ゼ 觚殊一 谿. るジ 覃語 Ajax API 伎 豌 蟆曙 讌 觚殊一(觚殊一 讌) Gecko 1.9.1 伎. WebKit(Safari 4伎, Google Chrome 3 伎) MSHTML/Trident 6.0 (Internet Explorer 10) 伎 MSHTML/Trident 4.0 & 5.0 (Internet Explorer 8 & 9) XDomainRequest 螳豌伎 讌 Opera 12.00 伎, Opera Mobile 12 伎, Opera Mini 讌 . 14
  • 15. www.javaspecialist.co.kr 9. 覃 豈 るジ 覃語 伎襯 觜蠍一朱 豌伎 蟆曙 願屋覦覯 1 覯 牛 ろ 覃語 Access-Control-Allow-Origin る襯 れ 願屋 覃語 *襦 覃 覈 覃語 螳ロ襦 る 企 Access-Control-Allow-Origin, 蠏碁Μ螻 螳 覃語企 伎伎 . ) - JSP 貊 <% response.setHeader("Access-Control-Allow-Origin", "*"); %> 覲 螻旧螳 伎 願屋 覦覯 2 螳 覃 伎 碁 覃 伎襯 覯伎襯 伎. ) - JSP 貊(曙 伎襦 伎) <%@ page language="java" contentType="text/xml; charset=EUC-KR" pageEncoding="EUC-KR" trimDirectiveWhitespaces="true"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <c:import charEncoding="UTF-8" url="http://otherdomain/reqpage.jsp"></c:import> 覲 豌螳 讌 願屋 JSP jstl.jar 手骸 standard.jar 殊 覯 蟲 語 襷 牛る襯 れ 覦覯 るゼ . 螳讌 覦覯 語 iframe 螻 Communication API襯 伎 . 15
  • 16. www.javaspecialist.co.kr 10. Proxy page襯 伎 CORS Client Web Server(Domain A) ----------------------------------------------------- -----------------------------------------------------Browser Web Container <<HTTP>> HTTP response (Data) HTTP request (Asynchronous) HTML CSS JS 蟲譟 Server Side Page襯 伎 るジ 覃語 一危 襯 豌襦 . Web Server(Domain B) RSS feed page <?xml -------- -------- ----- ------- -------- ----- <% -------- -------- ----- ------- -------- ----- %> Proxy page 覓語螳 覲襦 譟伎 蟆 覩誤 蟆 襦 伎 ろ 蟆郁骸螳 XML JSON 朱 螻給 覩誤 16
  • 17. www.javaspecialist.co.kr Lab - 覓語 伎 蟲 覈覦 襷り鍵 螻給 HTML 覓語 UI 螳覦 ク襯 jQuery mobile 殊企襴襯 觚襴酔 ろ Tomcat 轟覯螳 覃 豈 覓語襯 豌螳 願屋蠍 螻給 proxy_common.jsp 豌 伎朱 曙 貊 news_rss.html 伎 蟲 覈覦 伎 jquery mobile 殊企襴襯 伎 燕伎 rss.js 危企曙れ 一今 覯 Proxy れ Run -> Run Configuration Apache Tomcat - Tomcat v7.0 Server at localhost Arguments VM Arguments 伎 豢螳 -Dhttp.proxyHost=168.219.61.252 -Dhttp.proxyPort=8080 一今 覯 Proxy れ bin/catalina.bat(Window) catalina.sh(Linux) set PROXYHOST_CONFIG=-Dhttp.proxyHost=168 set PROXYPORT_CONFIG=-Dhttp.proxyPort=8080 JAVA_OPTS = %PROXYHOST_CONFIG% %PROXYPORT_CONFIG% 17
  • 18. www.javaspecialist.co.kr Lab - Solution (Ajax/end/news_rss.html) 1. <!-- samples/rss/news_rss.html --> 2. <!DOCTYPE html> 3. <html> 4. <head> 5. <meta charset="utf-8"> 6. <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7. <title>伎RSS</title> 8. <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.css" /> 9. <script src=/slideshow/42-ajax/53043804/"http:/code.jquery.com/jquery-1.8.2.min.js"></script> 10.<script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script> 11.<script src="./rss.js" defer></script> 12.</head> 13.<body> 14.<div data-role="page"> 15. <div data-role="header"> 16. <h1>伎 る</h1> 17. </div> 18. 19. <div data-role="content"> 20. <p> 21. <!-- data-rssurl 炎企. (data- 蟾讌 螻牛 焔覈豺) --> 22. <a href="#news_rss" data-rssurl="http://file.mk.co.kr/news/rss/rss_30000001.xml">襷れ手化</a><br> 23. <a href="#news_rss" data-rssurl="http://rss.etnews.com/Section901.xml">覓</a><br> 24. <a href="#news_rss" data-rssurl="http://www.khan.co.kr/rss/rssdata/total_news.xml">蟆渚ル血惨</a><br> 25. <a href="#news_rss" data-rssurl="http://rss.nocutnews.co.kr/nocutnews.xml">語桟伎</a><br> 26. <a href="#news_rss" data-rssurl="http://www.hani.co.kr/rss/">蟆</a><br> 27. <a href="#news_rss" data-rssurl="http://www.chosun.com/site/data/rss/rss.xml">譟一朱慨</a><br> 28. </p> 29. </div> 30. 18
  • 19. www.javaspecialist.co.kr Lab - Solution (Ajax/end/news_rss.html) 31. <div data-role="footer"> 32. <h4>誤</h4> 33. </div> 34.</div> 35. 36.<!-- #news_rss a 蠏 譴 企Ν 伎 朱 企 RSS覲願 --> 37.<div data-role="page" id="news_rss"> 38. <div data-role="header"> 39. <a data-rel="back">る</a> 40. <h1>RSS る</h1> 41. </div> 42. 43. <div data-role="content"> 44. <p class="content-list">RSS 伎</p> 45. <div class="content-desc"></div> 46. </div> 47.</div> 48. 49.</body> 50.</html> 19
  • 20. www.javaspecialist.co.kr Lab - Solution (Ajax/end/proxy_common.jsp) 1. <%-- proxy_common.jsp --%> 2. <%@ page language="java" contentType="text/xml; charset=EUC-KR" 3. pageEncoding="EUC-KR" trimDirectiveWhitespaces="true"%> 4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 5. <c:import charEncoding="UTF-8" url="${param.rssurl}"></c:import> 6. <!-- 螳レ 覿覿 param.rssurl 碁 願朱 jquery mobile 螻 蟲 一 譯殊 朱誤 螳朱 .--> 7. <!-- import 蠏語 charEncoding 煙 螳 RSS覯 XML 語螻 殊伎 . --> る 貊 ろ 5殊 url 螳朱 伎襯 語 譴. 伎 ろ 蟆郁骸 XML覓語企. XML 覓語 蟆曙 Well-formed 蠏豺 襷譟燕伎 煙 螳ロ. Well-formed 蠏豺 豕 XML 覓語 蠏豺 襷譟燕伎 る 蟆 覓語 豌 覦 <?xml 襦 伎 蠏瑚 朱 覦 蠏瑚 伎 . 蠏碁磯 貊 1~4殊語 JSP 貊碁 ろ 觜 殊語 曙. 蠏碁 3殊語 trimDirectiveWhitespaces="true"襯 l 蟆企, 企 <% %>襦 誤 覦 螻給葦螻 觜譴 蟇壱 譴. 覓語 XML 覓語襦 襴企 覩襦 伎 貉 text/xml襦 れ伎 . 20
  • 21. www.javaspecialist.co.kr Lab - Solution (Ajax/end/rss.js) 1. var xhr = new XMLHttpRequest(); //ajax襯 螳豌 2. 3. function init(){ 4. var links = document.querySelectorAll("div[data-role='content'] p > a"); 5. 6. for(var i=0, n=links.length ; i<n; i++) { 7. //console.log(links[i]); 8. links[i].addEventListener('click', getRssData); 9. } 10.}; 11. 12.function getRssData(event) { 13. //event.preventDefault(); //l朱 伎 14. var rss_url = this.dataset.rssurl; 15. if (rss_url == "") { 16. alert('RSS address is empty.'); 17. return false; 18. } 19. xhr.onreadystatechange = function() { 20. if(xhr.readyState == 4 && xhr.status == 200){ 21. displayResult(xhr.responseXML); //蟆郁骸襯 XML襦 覦 煙 螳ロ 22. } 23. }; 24. rss_url = encodeURIComponent(rss_url); //譯殊 語,譯殊 蠍 蟆曙 25. xhr.open("GET", "./proxy_common.jsp?rssurl=" + rss_url, true); 26. xhr.send(null); 27.} 21
  • 22. www.javaspecialist.co.kr Lab - Solution (Ajax/end/rss.js) 28.function displayResult(result) { 29. var items = result.querySelectorAll('item'); 30. //console.log(items.length); 31. 32. var target = document.querySelector("#news_rss div[data-role=content] .content-list"); 33. 34. target.innerHTML = ""; 35. 36. for(var i=0, n=items.length; i<n; i++) { 37. var title = items[i].querySelector('title').textContent; 38. //var title = items[i].getElementsByTagName('title')[0].textContent; // 貊 狩 覩 39. var link = items[i].querySelector('link').textContent; 40. var desc = items[i].querySelector('description').textContent; 41. var temp_el = document.createElement("p"); //<p> 襯 燕, 伎り鍵 1螳 42. 43. temp_el.innerHTML = (i+1) +". <a href='" + link + "'>" + title + "</a><span>" + desc + "</span>"; 44. target.appendChild(temp_el); 45. } 46.}; 47. 48.init(); 22
  • 23. www.javaspecialist.co.kr Lab - 碁 RSS 朱 URL SBS http://api.sbs.co.kr/xml/news/rss.jsp?pmDiv=all MBC http://imnews.imbc.com/rss/news/news_00.xml 譟一血惨 http://www.chosun.com/site/data/rss/rss.xml 譴朱慨 http://rss.joinsmsn.com/joins_news_list.xml 語桟伎 http://rss.nocutnews.co.kr/nocutnews.xml 血惨 http://rss.donga.com/total.xml 瑚朱慨 http://rss.segye.com/segye_recent.xml る企伎 http://rss.ohmynews.com/rss/ohmynews.xml 蟆 http://www.hani.co.kr/rss/ 襷れ手化 http://file.mk.co.kr/news/rss/rss_30000001.xml 蟆渚ル血惨 http://www.khan.co.kr/rss/rssdata/total_news.xml 企一朱Μ http://rss.edaily.co.kr/edaily_news.xml 企語伎 http://www.fnnews.com/rss/fn_realnews_all.xml 覓 http://rss.etnews.com/Section901.xml ろ豸 http://www.sportsseoul.com/rss/rss.asp?cp_flag=1 企伎 http://www.inews24.com/rss/news_inews.xml る企蟆曙 http://biz.heraldm.com/rss/010000000000.xml 貎る伎 http://rss.kukinews.com/data/kukiRssAll.xml RSS覯覲襦 一危一 語 る 譯殊 . 覦譴 豺 碁 RSS 朱 EUC- KR 企. 23
  • 24. www.javaspecialist.co.kr Lab - Advanced 覯襷 給一危一 語 るゴ覃 企至 讌? 1. HTML 覓語 貉れろ 一危 煙朱 語 讌. <a href="#news_rss" data-charset="UTF-8" data-rssurl="http://file.mk.co.kr/news/rss/rss_30000001.xml">襷れ手化</a><br> <a href="#news_rss" data-charset="EUC-KR" data-rssurl="http://imnews.imbc.com/rss/news/news_00.xml">MBC</a><br> 2. 覦ろ襴渚語 OPEN 覃 URL 朱誤磯 語 . var param = ""; if(this.dataset.charset) { param = "rssurl=" + rss_url + "&charset=" + this.dataset.charset; }else { param = "rssurl=" + rss_url; } xhr.open("GET", "./proxy_common.jsp?" + param, true); 3. 覯伎(JSP) 朱誤磯 語 れ. <c:import charEncoding="${empty param.charset ? 'UTF-8' : param.charset}" url="${param.rssurl}"></c:import> 覦ろ襴渚 手骸 JSP 殊 豌 覲旧″ . HTML 覓語 data-charset 煙 讌 蟆曙 吴 語 UTF-8 襦 蠍 所 譟郁唄覓 豢螳 蟆企. 24