티스토리 뷰

 

 

명세서 다시 보기 

 

 

 

 

 

 

jQuery를 사용하여 Ajax 요청을 보내고, 응답을 처리하여 HTML을 동적으로 생성하는 기능을 구현한 것이다. 
- type : HTTP 요청 방식->  GET
- url : 서버로 요청할 URL -> ../search.do
여기서  '..'

 현재 페이지의 URL이 'http://localhost:8080/Web08_Ajax/03_JQuery_Ajax/index.html'인 경우, 

'../search.do'는 'http://localhost:8080/Web08_Ajax/search.do'로 해석된다.

 '03_JQuery_Ajax' 디렉토리의 상위 디렉토리인 'Web08_Ajax'로 이동하라는 의미

 

data : 요청 시 함께 전송할 데이터 
여기서는  'keyword'라는 이름으로 사용자가 입력한 검색어를 전송 
success : 요청이 성공했을 때 실행할 콜백 함수

 

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="https://code.jquery.com/jquery-3.7.1.js"></script>
<title>Insert title here</title>
</head>
<body>
	<h3>검색 키워드를 입력하세요.</h3>
	<p>
		검색 : <input type="text" id="txt">
	</p>
	<p>
		추천 : <br><span id="txtHint"></span>
	</p>
	<script type="text/javascript">
	$(document).ready(function(){
		$('#txt').keyup(function(){
			let keyword = $('#txt').val();
			console.log(keyword);
			
			
		// Ajax 요청 보내기
$.ajax({
    type: 'get', // HTTP 요청 방식은 GET
    url: '../search.do', // 서버로 요청할 URL
    data: {'keyword': keyword}, // 요청 시 함께 전송할 데이터 (여기서는 'keyword'라는 이름으로 사용자가 입력한 검색어를 전송)
    success: function(result) { // 요청이 성공했을 때 실행할 콜백 함수
        console.log(typeof(result)); // 응답 데이터의 타입을 콘솔에 출력
        // JSON 형식의 응답 데이터를 JavaScript 객체로 변환
        let obj = JSON.parse(result);
        let list = ''; // HTML 리스트를 저장할 변수
        // 응답으로 받은 객체를 순회하며 HTML 리스트 아이템을 생성
        for (let x in obj) {
            list += "<a href='https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=" + obj[x].title + "'>" +
                obj[x].title + '</a><br>'; // 각 아이템은 제목과 해당 제목을 검색하는 네이버 링크로 구성
        }
        // 생성한 HTML 리스트를 화면의 특정 요소에 삽입
        $('#txtHint').html(list);
    }
});

		}); // end txt.keyup()
	}); // end document
	</script>

</body>
</html>

 

 

 

 

 

package edu.web.ajax;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;


@WebServlet("/search.do")
public class SearchServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    private static SearchDAOImple dao;   

    public SearchServlet() {
    	dao = SearchDAOImple.getInstance();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		String keyword = request.getParameter("keyword");
		System.out.println(keyword);
		
		List<String> list = dao.select(keyword);
		System.out.println(list.toString());
		
		JSONArray jsonArray = new JSONArray();
		for(String title : list) {
			JSONObject jsonObject = new JSONObject();
			jsonObject.put("title", title);
			jsonArray.add(jsonObject);
		}
		
		response.setCharacterEncoding("UTF-8");
		response.getWriter().append(jsonArray.toString());
		
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	}

}

 

 

 

request.setCharacterEncoding() : 

서버에서 문자를 가져올 때, 한글이나 다른 문자가 포함된 데이터가 깨지지 않고 잘 표시되게 해준다

 

request.getParameter() : 

request 에서 'keyword' 매개변수를 읽어온다.

 

 

 

dao. select() 를 사용하여 해당 검색어에 대한 결과를 데이터베이스에서 가져온다.

 

 

 

검색 결과를 리스트로 받아온 후, 

JSONObject를 생성하여 각 항목의 제목을 담고,

JSONArray에 추가한다.

 

 

서버에서 클라이언트로 문자를 가져올때,  한글이나 다른 문자가 포함된 데이터가 깨지지 않고 잘 표시되게 해준다
 JSON 형식의 결과를 클라이언트에게 전송한다.

 

 

 

 

 

히든 퀴즈

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함