728x90
반응형
■ Ajax
□ 설명
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title></title>
</head>
<body>
<pre>
<h3>
Ajax : Asynchronous javascript + xml(비동기 통신)
#. 페이지 바뀜이 없이 서버와 통신 (background 통신)
(구글맵, 쇼핑몰의 경우 장바구니에 넣을 때 해당 페이지 아래 부분으로 드래그하는 경우)
#. 주로 많이 보는 것이 아이디 중복체크
#. 일반통신 vs 백그라운드 통신
(일반통신)
receive receive
+-------- +-------
| | |
-------+ +-------+
send send
(비동기통신)
receive receive
+--------+ +-------
-------+ +-------+
send send
client - request -----> 통신객체(XMLHttpRequest) -----> server
<- response <-----
#. Ajax가 response로 취급하는 값은 2가지
text, xml (파일확장자도 .txt(UTF-8 only) .xml .jsp (euc-kr, utf-8))
ㄴ text는 (1) 메모장형식으로 작성 예) aa.txt
(2) jsp 파일 안에 text를 넣어서 사용
aa.xml
ㄴ xml로 response 되면 다시 xml을 html로 concersion 해야 제대로 사용
#. ajax가 다루는 코드
ㄴ 기본이 UTF-8, BUT 예외는 jsp에서 EUC-KR, UTF-8로 선언하면 취급
#. 이제부터 배울 것
Ajax(자바스크립트 문법) ------------> jQuery-ajax ($.ajax)
</h3>
</pre>
</body>
</html>
□ ajax 1
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<script>
var xhr1 = null;
function getXHR(){
try{ // 통신객체 // cross browsing
if(window.XMLHttpRequest) // 표준형 // edge, ff, chrome
return new XMLHttpRequest; // xhr 통신객체 생성
else if(window.ActiveXObject) // old IE?
return new ActiveXObject("MSXML2.XMLHTTP");
else
return new ActiveXObject("Microsoft.XMLHTTP");
} catch(e){
xhr1 = null;
}
} // getXHR-end
function kajaServer(){
xhr1 = getXHR(); // 메소드 3형식 호출문 // xhr 통신객체를 생성하기 위해 // getXHR() 이름은 임의
// 이 작업을 통해 통신객체가 만들어져서 xhr1에 들어감
// 그러므로 먼저 통신객체를 만들디 위해 getXHR() 호출문을 따라가보자.
// new XMLHttpRequest;
// 객체.속성 = 값 // 콜백함수(함수명은 임의)
xhr1.onreadystatechange = callback1; // onReadyStateChange라고 코딩하게 됨 // 현재 상태를 알기 위해 사용
// onreadystatechange : readyState의 값이 변할 때마다 호출됨, callback을 5번 찾아감
// xhr1.readyState 속성 : XMLHttpRequest 통신객체의 현재 상태를 알고 있음
// 0 : xhr이 생성될 때(전송되는 것 x)
// 1 : open() 성공할 때, send()전
// 2 : send()
// 3 : 응답이 오는중(처리중)
// 4 : 완전한 응답
// xhr1.open("get", "/kaja.jsp", true)
xhr1.open("get", "kaja.jsp", true); // 비동기
// get 방식, 서버의 kaja.jsp를 찾아감, 비동기
xhr1.send(null);
}
function callback1(){
var ta = document.getElementById("ta");
switch(xhr1.readyState){
case 0:
ta.value += "통신객체생성\n"; break;
case 1:
ta.value += "send메소드사용전\n"; break;
case 2:
ta.value += "send메소드호출\n"; break;
case 3:
ta.value += "아직 결과 다 안 옴\n"; break;
case 4:
ta.value += "결과 다왔다고 전해라\n"; break;
}
}
function kajaClear(){
var ta = document.getElementById("ta");
ta.value = ""; // 빈문자열
}
</script>
</head>
<body>
<h3>AJax Kaja - 화면이 바뀌는감?</h3>
<br>
<textarea rows="20" cols="100" id="ta"></textarea>
<br>
<input type="button" value="서버로가자" onclick="kajaServer()">
<input type="button" value="초기화" onclick="kajaClear()">
</body>
</html>
□ ajax 2
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<script>
var xhr1 = null;
function getXHR(){
try{
if(window.XMLHttpRequest)
return new XMLHttpRequest;
else if(window.ActiveXObject)
return new ActiveXObject("MSXML2.XMLHTTP");
else
return new ActiveXObject("Microsoft.XMLHTTP");
} catch(e){
xhr1 = null;
}
} // getXHR-end
function kajaServer(){
xhr1 = getXHR();
xhr1.onreadystatechange = callback1;
// xhr1.open("get", "kaja.jsp", true);
// xhr1.open("get", "kaja_utf8.txt", true);
xhr1.open("get", "kaja.jsp", true);
// kaja.txt
// kaja.xml
xhr1.send(null);
}
// 일단 메모장을 열어 ansi로 한글입력하여 만들되 kaja_euckr.txt로 작성
function callback1(){
var ta = document.getElementById("ta");
switch(xhr1.readyState){
case 4: // 중간과정은 편의상 생략
ta.value += "결과 다왔다고 전해라\n";
// cf. c언어 : errno() : 에러를 체크해주는 기억창고, perror() : 에러를 처리해주는 메소드
// 자바 : message 에러 넘버가 들어간 곳, getmessage
// 정상(200)으로 왔는지, 에러인지 체크해야 한다.
if(xhr1.status == 200){ // 정상이야?
ta.value += "정상으로 왔구만\n";
ta.value += xhr1.responseText + "\n";
// 응답 결과는 responseText or responseXML에 있음.
}
else{
ta.value += "에러!\n";
ta.value += xhr1.status + "\t" + xhr1.statusText + "\n"
// 에러 번호 // 에러 내용
}
break;
}
}
function kajaClear(){
var ta = document.getElementById("ta");
ta.value = "";
}
</script>
</head>
<body>
<h3>AJax Kaja - 화면이 바뀌는감?</h3>
<br>
<textarea rows="20" cols="100" id="ta"></textarea>
<br>
<input type="button" value="서버로가자" onclick="kajaServer()">
<input type="button" value="초기화" onclick="kajaClear()">
</body>
</html>
* kaja.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
안녕 방가방가!
□ param_get
이번에는 get 방식으로 parameter를 보내서 response를 받아보자.
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<script>
var xhr1 = null;
function getXHR(){
try{
if(window.XMLHttpRequest)
return new XMLHttpRequest;
else if(window.ActiveXObject)
return new ActiveXObject("MSXML2.XMLHTTP");
else
return new ActiveXObject("Microsoft.XMLHTTP");
} catch(e){
xhr1 = null;
}
} // getXHR-end
function kajaServer(){
xhr1 = getXHR();
xhr1.onreadystatechange = callback1;
// Q) 한글 이름을 입력받는 것과 같은 내용으로 처리하여 서버로 넘겨보자
// <input type="text" ... name="irum"> 대신에 ?irum=지호를 사용함
// xhr1.open("get", "kajaParam.jsp?irum=지호", true); // (1)번 방법
xhr1.open("get", "kajaParam.jsp?irum=" + encodeURIComponent("석호"), true); // (2)번 방법
// 이래야만 utf-8로 처리함
// (1) meta charset="EUC-KR"이 UTF-8로 되어 있으면 한글 잘 나옴
// irum = jiho (o), 한글일 때는 meta를 UTF-8 (o)
// (2) 다른 방법은 UTF-8로 수정하지 않고 encodeURIComponent
// ===> 이때 kajaParam.jsp를 만들려면
// wencontent - 마우스우클릭 - new - jsp file - kajaParam.jsp 주고
// 맨위 문장 외 나머지는 삭제
xhr1.send(null);
}
// 일단 메모장을 열어 ansi로 한글입력하여 만들되 kaja_euckr.txt로 작성
function callback1(){
var ta = document.getElementById("ta");
switch(xhr1.readyState){
case 4: // 중간과정은 편의상 생략
ta.value += "결과 다왔다고 전해라\n";
// cf. c언어 : errno() : 에러를 체크해주는 기억창고, perror() : 에러를 처리해주는 메소드
// 자바 : message 에러 넘버가 들어간 곳, getmessage
// 정상(200)으로 왔는지, 에러인지 체크해야 한다.
if(xhr1.status == 200){ // 정상이야?
ta.value += "정상으로 왔구만\n";
ta.value += xhr1.responseText + "\n";
// 응답 결과는 responseText or responseXML에 있음.
}
else{
ta.value += "에러!\n";
ta.value += xhr1.status + "\t" + xhr1.statusText + "\n"
// 에러 번호 // 에러 내용
}
break;
}
}
function kajaClear(){
var ta = document.getElementById("ta");
ta.value = "";
}
</script>
</head>
<body>
<h3>AJax Kaja - 화면이 바뀌는감?</h3>
<br>
<textarea rows="20" cols="100" id="ta"></textarea>
<br>
<input type="button" value="서버로가자" onclick="kajaServer()">
<input type="button" value="초기화" onclick="kajaClear()">
</body>
</html>
* kajaParam.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
안녕! 반가워!
오늘도 즐거운 날입니다!
열심히 공부하는 당신은 짱~
우리는 자랑스러운 IT 인재들
<% // scriptlet // 스크립트릿
String name = request.getParameter("irum"); // irum 이라는 이름으로 석호가 넘어옴
// 자바스크립트 : html + script
// jsp : html + java
// 아래 <%=name...형식은 expression // 표현식
%>
그리고 당신의 이름은 <%= name%>이군요~
□ parameter_get
get 방식으로 보낼 때는 인코딩 방식을 server.xml을 통해 작업해야 한다.
<Connector connectionTimeout="20000" maxParameterCount="1000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
var xhr1 = null;
function getXHR(){
try{
if(window.XMLHttpRequest)
return new XMLHttpRequest;
else if(window.ActiveXObject)
return new ActiveXObject("MSXML2.XMLHTTP");
else
return new ActiveXObject("Microsoft.XMLHTTP");
} catch(e){
xhr1 = null;
}
} // getXHR-end
function kajaServer(){
xhr1 = getXHR();
xhr1.onreadystatechange = callback1;
// Q) 한글 이름을 입력받는 것과 같은 내용으로 처리하여 서버로 넘겨보자
// <input type="text" ... name="irum"> 대신에 ?irum=지호를 사용함
// xhr1.open("get", "kajaParam.jsp?irum=지호", true); // (1)번 방법
xhr1.open("get", "kajaParam.jsp?irum=" + encodeURIComponent("석호"), true); // (2)번 방법
// 이래야만 utf-8로 처리함
// (1) meta charset="EUC-KR"이 UTF-8로 되어 있으면 한글 잘 나옴
// irum = jiho (o), 한글일 때는 meta를 UTF-8 (o)
// (2) 다른 방법은 UTF-8로 수정하지 않고 encodeURIComponent
// ===> 이때 kajaParam.jsp를 만들려면
// wencontent - 마우스우클릭 - new - jsp file - kajaParam.jsp 주고
// 맨위 문장 외 나머지는 삭제
xhr1.send(null);
}
// 일단 메모장을 열어 ansi로 한글입력하여 만들되 kaja_euckr.txt로 작성
function callback1(){
var ta = document.getElementById("ta");
switch(xhr1.readyState){
case 4: // 중간과정은 편의상 생략
ta.value += "결과 다왔다고 전해라\n";
// cf. c언어 : errno() : 에러를 체크해주는 기억창고, perror() : 에러를 처리해주는 메소드
// 자바 : message 에러 넘버가 들어간 곳, getmessage
// 정상(200)으로 왔는지, 에러인지 체크해야 한다.
if(xhr1.status == 200){ // 정상이야?
ta.value += "정상으로 왔구만\n";
ta.value += xhr1.responseText + "\n";
// 응답 결과는 responseText or responseXML에 있음.
}
else{
ta.value += "에러!\n";
ta.value += xhr1.status + "\t" + xhr1.statusText + "\n"
// 에러 번호 // 에러 내용
}
break;
}
}
function kajaClear(){
var ta = document.getElementById("ta");
ta.value = "";
}
</script>
</head>
<body>
<h3>AJax Kaja - 화면이 바뀌는감?</h3>
<br>
<textarea rows="20" cols="100" id="ta"></textarea>
<br>
<input type="button" value="서버로가자" onclick="kajaServer()">
<input type="button" value="초기화" onclick="kajaClear()">
</body>
</html>
□ parameter_post
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<script>
var xhr1 = null;
function getXHR(){
try{
if(window.XMLHttpRequest)
return new XMLHttpRequest;
else if(window.ActiveXObject)
return new ActiveXObject("MSXML2.XMLHTTP");
else
return new ActiveXObject("Microsoft.XMLHTTP");
} catch(e){
xhr1 = null;
}
} // getXHR-end
// 이것은 get 방식일 때의 open-send
/*
function kajaServer(){
xhr1 = getXHR();
xhr1.onreadystatechange = callback1;
xhr1.open("get", "kajaParam.jsp?irum=" + encodeURIComponent("석호"), true);
xhr1.send(null);
}
*/
// get : head를 통해서, post : body를 통해서
// 여기는 post 방식일 때의 open-send
function kajaServer(){
xhr1 = getXHR();
xhr1.onreadystatechange = callback1;
xhr1.open("post", "kajaParam2.jsp", true);
// header에 전송하려는 body 데이터 타입을 정확히 명시해 줌
xhr1.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
// key=value&key=value&key=value
xhr1.send("name="+encodeURIComponent("호영"));
// (1) application/x-www-form-urlencoded는 서버전송 전 모든 문자를 인코딩하며
// 기본 지정 형태로 key=value&key=value&key=value를 의미하고
// 기본적으로 사용하는 <form> <input type="text">의 형태
// (2) 만일 ContentType을 application/json으로 선언하면 ==> {key:value}
// (3) 파일업로드시 이름이나 파일을 전송시 서로 다른 형태이므로
// 그러므로 enctype="multipart/form-data"를 지정하여 boundary로
// 서로 다른 data간 구분도 되고 이미지 파일 등은 binary로 처리 (이미지 파일을 문자형태로 변환하여 파일 업로드)
// (예) 서버쪽에서 multipart/form-data 때문에 이미 형태를 알고 있고 boundary 등으로
// 각각의 형태를 구분
// 사진 올리는 회원 이름
// ----------------------- boundary
// 실제 사진
}
function callback1(){
var ta = document.getElementById("ta");
switch(xhr1.readyState){
case 4:
ta.value += "결과 다왔다고 전해라\n";
if(xhr1.status == 200){ // 정상이야?
ta.value += "정상으로 왔구만\n";
ta.value += xhr1.responseText + "\n";
// 응답 결과는 responseText or responseXML에 있음.
}
else{
ta.value += "에러!\n";
ta.value += xhr1.status + "\t" + xhr1.statusText + "\n"
// 에러 번호 // 에러 내용
}
break;
}
}
function kajaClear(){
var ta = document.getElementById("ta");
ta.value = "";
}
</script>
</head>
<body>
<h3>AJax Kaja - 화면이 바뀌는감?</h3>
<br>
<textarea rows="20" cols="100" id="ta"></textarea>
<br>
<input type="button" value="서버로가자" onclick="kajaServer()">
<input type="button" value="초기화" onclick="kajaClear()">
</body>
</html>
* kajaParam2.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%
// scriptlet
// <%는 jsp에서 자바사용시 필요한 태그
// 나는 post 방식으로 넘어오는 request를 처리하는 kajaParam2.jsp
// scriptlet을 만들어 놓고 내용이 없으면 그냥 무시됨.
// 아래 문장은 get방식에서 사용한 것으로 주석을 단다.
// String name = request.getParameter("irum"); // irum 이라는 이름으로 석호가 넘어옴
%>
<%-- jsp 주석 --%>
<!-- html 주석 -->
<%
String name = "";
if("POST".equals(request.getMethod()))
request.setCharacterEncoding("UTF-8"); // post 방식이면 한글처리는 이렇게
name = request.getParameter("name");
// <input type="text" name="tel"> ==> 웹클라이언트에서 자료 입력
// or hello.jsp?tel="010-7777-8888" ==> 이것도 웹클라이언트에서 자료 입력과 같은 레벨
// String tel = request.getParameter("tel");
// ==> 웹 클라이언트에서 넘어오는 tel의 값 010-7777-8888을 받아서 기억창고 tel에 넣는 문법
%>
이름은 <%= name%>이군요
안녕! 방가방가
□ responseXML
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
var xhr1 = null;
function getXHR(){
try{
if(window.XMLHttpRequest)
return new XMLHttpRequest;
else if(window.ActiveXObject)
return new ActiveXObject("MSXML2.XMLHTTP");
else
return new ActiveXObject("Microsoft.XMLHTTP");
} catch(e){
xhr1 = null;
}
} // getXHR-end
function kajaServer(){
xhr1 = getXHR();
xhr1.onreadystatechange = callback1;
xhr1.open("get", "menu.jsp", true);
xhr1.send(null);
}
function callback1(){
var ta = document.getElementById("ta");
switch(xhr1.readyState){
case 4: // 중간과정은 편의상 생략
ta.value += "결과 다왔다고 전해라\n";
if(xhr1.status == 200){ // 정상이야?
ta.value += "정상으로 왔구만\n";
// ta.value += xhr1.responseText + "\n";
var xml22 = xhr1.responseText; // var xml22 = xhr1.responseXML;
alert(xml22); // alert(xml22.xml)
// 응답 결과는 responseText or responseXML에 있음.
}
else{
ta.value += "에러!\n";
ta.value += xhr1.status + "\t" + xhr1.statusText + "\n"
// 에러 번호 // 에러 내용
}
break;
}
}
function kajaClear(){
var ta = document.getElementById("ta");
ta.value = "";
}
</script>
</head>
<body>
<h3>AJax Kaja - 화면이 바뀌는감?</h3>
<br>
<textarea rows="20" cols="100" id="ta"></textarea>
<br>
<input type="button" value="서버로가자" onclick="kajaServer()">
<input type="button" value="초기화" onclick="kajaClear()">
</body>
</html>
* menu.jsp
<%@ page language="java" contentType="text/xml; charset=UTF-8"
pageEncoding="UTF-8"%>
<menuall>
<menu>
<title>스파게티</title>
<price>7000</price>
<result>맛있음</result>
</menu>
<menu>
<title>삼선짜장</title>
<price>6000</price>
<result>안느끼함</result>
</menu>
<menu>
<title>케밥</title>
<price>4000</price>
<result>입에딱맞음</result>
</menu>
</menuall>
□ ajax - jQuery - json
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<script src="js/jquery-3.7.0.min.js"></script>
<script>
function kaja(){
$.ajax({ // $.ajax() // $.get // $.post
url : "kaja1.jsp", /* url : "hello.jsp", // open(method, url, async) */
data : { // json (javascript object notation)
irum:"hong", // open, send, name:value
na2:35 // kaja.jsp?ireum=hong&na2=35
}, // <input type="text" name="irum"> <input type="text" name="na2">
dataType : "text", // responseText, responseXML
type : "get", // open
success : function(result1){ // json // 4, 200 // 메소드 2형식 정의문 // 모든 것은 인자를 통해서 들어온다.
alert("응답받는다 " + result1);
},
error : function(xhr1, status){
alert("에러상태 : " + "\t" + xhr1.status); // statusText
}
}); // $.ajax-end
} // kaja()-end
</script>
</head>
<body>
<h2>jQuery-Ajax 그러니까 $.ajax라는</h2>
<h2>[$.ajax]로 기본 Ajax처럼 프로그램 작성하기</h2>
<input type="button" value="가자 서버로" onclick="kaja()">
</body>
</html>
* kaja1.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
안녕!
□ ajax - jQuery로 xml을 html로 변환해보자
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>ajax kaja (xml to html)</title>
<script src="js/jquery-3.7.0.min.js"></script>
<!-- xml to html
xml ==> 변환 ==> html
parent
child
text
-->
<script>
$(function(){
$.ajax({
url:"menu.jsp", // xml data // 서버를 찾아갈 때 해당 url 표시
type:"get",
// 오리지널 ajax에서는 responseXML 사용한다
// 그래서 자바스크립트로 xml to html을 하려면 조금 복잡한 작업이 요구됨
// 그러나, jQuery에서는 상대적으로 작은 작업으로 가능하다.
// node 구조를 고려하여 풀어가면 된다.
success:function(data1){
$(data1).find("menu").each(function(){
var t1 = $(this).find("title").text()
var p1 = $(this).find("price").text()
var s1 = $(this).find("result").text()
$("<h3></h3>").text(t1 + "\t" + p1 + "\t" + s1) // <h3>스파게티 7000 맛있음</h3>
.appendTo("#result");
/* <div id="result"><h3>스파게티 7000 맛있음</h3></div> */
});
},
error:function(xhr1, status){
alert(xhr1.status);
}
});
});
</script>
</head>
<body>
<h3>AJax Kaja(responseXML)</h3>
그러니까 이번에는 XML을 받아서 출력해보자<br>
그런데 xml은 서버쪽에 2가지 확장자 menu.jsp menu.xml 가능<br>
<br><br /> <!-- xhtml에서 만들어진 것(열고 닫고가 정확한 태그이어야 하기 때문에 -->
<div id="result"></div>
</body>
</html>
□ ajax - jQuery를 이용해 json 형식 데이터 받기
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<script src="js/jquery-3.7.0.min.js"></script>
<script>
$(function(){ // getJSON은 서버로부터 json 배열 형태를 get
// menu.jsp에 있는 ,형식은 string으로 받음
$.getJSON("menu1.jsp", function(data1){ // data1으로 json 배열 전부 받고
$.each(data1, function(index1, jool1){ // 반복문 // value1에는 data1에서 한 줄 꺼내서
$("<h3></h3>").text(jool1.title + " "
+ jool1.price + " " + jool1.evaluation).appendTo("div");
});
});
});
</script>
</head>
<body>
<h3>AJax kaja</h3>
앞으로 만날 data 교환에너 json을 자주 만나게 될 것이므로<br>
json을 좀더 알아보자는
<br>
<div id="result"></div>
<!--
div 자리에 server에서 가지고 온 json data를 넣어줌
json 데이터이므로 json read에 맞게 갖고 와야 함
$.getJSON() $.Ajax $.get ==> $.getJSON()
-->
</body>
</html>
* menu1.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
[{"title" : "스파게티", "price" : "7000", "evaluation" : "맛있음"},
{"title" : "짜장", "price" : "5000", "evaluation" : "굳드"}]
□ ajax - jQuery를 이용해 json 형식 데이터를 배열로 받기
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<script src="js/jquery-3.7.0.min.js"></script>
<script>
function kaja(){
$.ajax({
url:"kajaServer.jsp",
data:{
name:"hong",
tel:"010-234-6789"
},
dataType:"text",
type:"get",
success:function(data1){
alert(data1);
},
error:function(xhr1, status){
alert(xhr1.status);
}
});
}
</script>
</head>
<body>
<h3>ajax - json - array </h3>
<hr>
<input type="button" value="서버로" onclick="kaja()">
</body>
</html>
.kajaServer.jsp
<%@page import="org.json.simple.JSONArray"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%
String name = request.getParameter("name");
String tel = request.getParameter("tel");
JSONArray jsa1 = new JSONArray();
jsa1.add(name);
jsa1.add(tel);
out.println(jsa1.toString());
%>
□ textarea - text
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<script src="js/jquery-3.7.0.min.js"></script>
<script>
function kaja(){
var ta = document.getElementById("ta")
$.ajax({
url:"novel.txt",
type:"get", // open
success:function(result1){
ta.value = result1; // 서버로부터 오는 결과를 textarea로
},
error:function(xhrs1, status){
alert("에러상태 :" + "\t" + xhrs1.status) // statusText
}
});
}
</script>
</head>
<body>
<h1>Ajax를 사용하여 메모장에 있는 소설을 읽는 웹앱을 작성하시오.</h1>
<textarea cols="100" rows="20" id="ta"></textarea><br>
<input type="button" value="소설텍뷰" onclick="kaja()">
</body>
</html>
* novel.txt
오늘부터 지지관계에서 벗어나
송선형 나는 한몸으로 일체가 된다.
송선형에 대한 공격은 나에 대한 공격으로 간주한다.
송선형 70억명의 송선형 팬이 있다면, 나는 그들 중 한명일 것이다.
세상에 1억명의 송선형 팬이 있다면, 나 또한 그들 중 한명일 것이다.
세상에 천 만명의 송선형 팬이 있다면, 나는 여전히 그들 중 한명일 것이다.
세상에 백 명의 송선형 팬이 있다면, 나는 아직도 그들 중 한명일 것이다.
세상에 한 명의 송선형 팬이 있다면, 그 사람은 아마도 나일 것이다.
세상에 단 한 명의 송선형 팬도 없다면, 나는 그제서야 이 세상에 없는 것이다.
송선형, 나의 사랑.
송선형, 나의 빛.
송선형, 나의 어둠.
송선형, 나의 삶.
송선형, 나의 기쁨.
송선형, 나의 슬픔.
송선형, 나의 고통.
송선형, 나
□ ajax_cms_parameter
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<script src="js/jquery-3.7.0.min.js"></script>
<script>
var xhr1 = null;
var serverURL = "";
function getXHR(){
if(window.ActiveXObject){
try{
return new ActiveXObject("MSXML2.XMLHTTP");
} catch(e){
try{
return new ActiveXObject("Microsoft.XMLHTTP");
} catch(e1){
return null;
}
}
} else if(window.XMLHttpRequest){
return new XMLHttpRequest;
} // if-end
return null;
}
function kajaServer(url){ // url은 member.jsp를 말함
//==================================
var name= document.form1.name.value;
var age= document.form1.age.value;
//==================================
serverURL = url + "?name=" + encodeURIComponent(name) + "&age=" + age;
// 한글처리 encoding-decoding // 홍 ==> %23A ==> 홍
//==================================
xhr1 = getXHR();
xhr1.onreadystatechange = callback1;
xhr1.open("get", serverURL, true);
xhr1.send(null);
}
function callback1(){
var ta = document.getElementById("ta");
var result = "";
switch(xhr1.readyState){
case 4:
if(xhr1.status == 200){
result = xhr1.responseText + "\n";
}
else{
result = "웹서버에서 오류남\n"
+ "오류코드는 " + xhr1.status + "\n"
+ "오류결과는 " + xhr1.statusText + "\n"
}
break;
}
ta.value = ta.value + result;
}
function kajaClear(){
var ta = document.getElementById("ta");
ta.value = "";
document.form1.name.value = "";
document.form1.age.value = "";
}
</script>
</head>
<body>
<h3>회원관리</h3>
<hr>
<form name="form1">
<textarea rows="20" cols="80" id="ta"></textarea>
<br><br><br>
이름 : <input type="text" name="name" size="20"> <br><br>
나이 : <input type="text" name="age" size="3" maxlength="3"><br>
<!--
통신객체를 통해 background 통신형태로 서버 member.jsp를 찾아가도록
그러므로 open-send가 있는 곳으로 가야됨.
그곳에서 member.jsp?name=value 형식으로 처리하도록 하려면
길동 이름과 35 나이도 같이 넘겨주어야 함.
-->
<br><br><br>
<input type="button" value="가자회원입력" onclick="kajaServer('member.jsp')">
<input type="button" value="초기화" onclick="kajaClear()">
</form>
</body>
</html>
* member.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%--
member.jsp 만들고 html 이하 삭제, 필요시 위에 보이는 문장에서 EUC-KR을 UTF-8로 변경
request.getParameter() 함수가 클라이언트에서 넘어오는 값을 받는다. 당연히 하나만 받음.
--%>
<%
String name = request.getParameter("name");
String age = request.getParameter("age");
%>
안녕하세요 <%=name%> 회원님!!
회원님이 입력하신 자료는
name = <%=name%>
age = <%=age%>
입니다.
입력하신 자료는
회원관리에 사용됩니다.
□ 정규표현식 - email 유효성 확인하기
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>정규표현식</title>
<script src="js/jquery-1.4.4.min.js"></script>
<script src="js/jquery.alerts.js"></script>
<link rel="stylesheet" href="js/jquery.alerts.css"/>
<script>
function kajaprompt(aa){
if(!email_regexp.test(aa))
alert("email error");
else
alert("goooooooood");
}
</script>
</head>
<body>
<script>
var email_regexp = /[a-z0-9]{3,}@[a-z0-9]{3,}\.[a-z0-9]{2,}/i;
// 슬래시와 슬래시 사이
// [a-z0-0]{3,} 영어 소문자, 숫자포함 단 반드시 3글자 이상(,)이어야 함.
// @ : AT sign
// \. : . 하나 그냥 .만 쓰면 all이란 의미
// i : option, 쉽게 말하면 ignore case, i는 대소문자 구분을 무시하겠다. 즉 영어 대문자도 가능.
jPrompt("enter your email", "abc@abc.com", "welcome!",
function(aa){
if(aa){kajaprompt(aa)};
});
</script>
</body>
</html>
<!-- 정규표현식 : regular expression -->
728x90
반응형
'IT&코딩 > 국비지원' 카테고리의 다른 글
JSP, EL, JSTL - 2 (0) | 2023.05.26 |
---|---|
JSP, EL, JSTL - 1 (0) | 2023.05.25 |
jQuery (0) | 2023.05.22 |
자바스크립트 - 2 (0) | 2023.05.18 |
자바스크립트 - 1 (0) | 2023.05.16 |