티스토리 뷰
평소 개발시 스프링 프레임워크 또는 전자정부 표준프레임워크, model2 방식으로 ajax를 사용하는 것은 생각보다 쉽다.
하지만 순수 jsp로, model1 방식으로 ajax를 사용해야 할 때 요청은 보낼 수 있지만 요청을 받는 응답부분에서는 어떻게 return 또는 처리를 해야하나?
생각이 들고 궁금했다.
생각보다 간단했다.
요청을 받고 응답하는 jsp에서 EL, <%=%>, XML, JSON형식으로 출력해주면 된다. 쉽게 말하면 그냥 HTML을 작성(출력)하듯이 하면 된다.
밑의 소스는 사용자의 아이디가 있는지 없는지 중복여부를 체크하는 간단한 요청에 응답해주는 페이지 소스이다.
밑에서 보면 <%=result%> 부분이 있는데 저 부분이 ajax로 요청시 응답해주는 부분이다.
XML이나 JSON으로 응답(return)할 때에는 물론 그에 따른 변환을 해주면 되는 것.
예를들어 JSON으로 응답을 해준다면....
out.println("JSON형식"); 이렇게
<%@page import="org.apache.catalina.Session"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%!
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String URL = "jdbc:oracle:thin:@localhost:1521:XE";
String ID = "hr";
String PWD = "hr";
Session session = null;
int result;
%>
<%
try{
String user_id = request.getParameter("user_id");
String sql = "SELECT COUNT(1) FROM TEST_MEMBER WHERE USER_ID='"+user_id+"'";
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(URL, ID, PWD);
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
rs.next();
result = rs.getInt(1);
}catch(Exception e){
e.printStackTrace();
}finally{
if(rs != null){
rs.close();
}
if(stmt != null){
stmt.close();
}
if(conn != null){
conn.close();
}
}
%>
<%=result%>