Ajax을 이용한 Servlet의 요청과 응답
서버
Ajax(XML) 활용 예제
<div>
<div>
<input type="text" id="name" placeholder="이름">
</div>
<div>
<input type="text" id="age" placeholder="나이">
</div>
<div>
<button type="button" id="btn1">XML요청</button>
</div>
<div id="content1"></div>
</div>
<script>
$('#btn1').click(function() {
$.ajax({
type: 'get',
url: '/servlet/getXML',
data: 'name=' + $('#name').val() + '&age=' + $('#age').val(),
dataType: 'xml',
success: function(resData) {
var ul = '<ul>';
ul += '<li>' + $(resData).find('name').text() + '</li>';
ul += '<li>' + $(resData).find('age').text() + '</li>';
$('#content1').html(ul);
},
error: function(jqXHR) {
alert(jqXHR.status + '(' + jqXHR.statusText + ')');
}
})
})
</script>
Ajax(JSON) 활용 예제
<div>
<form id="frm">
<div>
<input type="text" name="title" placeholder="제목">
</div>
<div>
<input type="text" name="writer" placeholder="작성자">
</div>
<div>
<button type="button" id="btn2">JSON요청</button>
</div>
</form>
<div id="content2"></div>
</div>
<script>
$('#btn2').click(function() {
$.ajax({
type: 'get',
url: '/servlet/getJSON',
data: $('#frm').serialize(),
dataType: 'json',
success: function(resData) {
var str = '';
str += '<h4>' + resData.title + '</h4>';
str += '<h4>' + resData.writer + '</h4>';
$('#content2').html(str);
},
error: function(jqXHR) {
alert(jqXHR.status + '(' + jqXHR.statusText + ')');
}
})
})
</script>
XML Servlet
doGet() 메소드로 받아오는 파라미터 처리 예제
요청 인코딩
request.setCharacterEncoding("UTF-8");
요청 파라미터 (null & 빈문자열 처리)
String name = request.getParameter("name");
String strAge = request.getParameter("age");
int age = 0;
if(strAge != null && !strAge.isEmpty()) {
age = Integer.parseInt(strAge);
}
XML 만들기
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>alice</name>
<age>30</age>
</person>
JSONObject person = new JSONObject();
person.put("name", name);
person.put("age", age);
JSONObject resJSON = new JSONObject();
resJSON.put("person", person);
String responseXML = XML.toString(resJSON);
응답 데이터 타입과 인코딩
response.setContentType("application/xml; charset=UTF-8");
응답 스트림 생성
PrintWriter out = response.getWriter();
응답
out.println(responseXML);
out.flush();
out.close();
JSON Servlet
doGet() 메소드로 받아오는 파라미터 처리 예제
요청 인코딩
request.setCharacterEncoding("UTF-8");
요청 파라미터
String title = request.getParameter("title");
String writer = request.getParameter("writer");
JSON 만들기
JSONObject responseJSON = new JSONObject();
responseJSON.put("title", title);
responseJSON.put("writer", writer);
외부 라이브러리를 사용하지 않고 순수하게 Java만 가지고 만드는 기본적인 방식
String str = "{\"writer\":\"" + writer + "\", \"title\":\"" + title + "\"}";
응답 데이터 타입과 인코딩
response.setContentType("application/json; charset=UTF-8");
응답 스트림 생성
PrintWriter out = response.getWriter();
응답
out.println(responseJSON);
out.flush();
out.close();