728x90
반응형
model2 방식에서 뷰는 jsp페이지를 가장 많이 사용하지만 jsp가 아닌 json 이나 xml등의 문자 포맷 방식도 가능하다. 다음의 예는 컨트롤러 레이어(servlet)에서 뷰를 json포맷방식으로 보내는 방법이다. json방식이나 xml방식의 뷰는 html페이지에서 ajax방식으로 읽을 수도 있고, 스마트폰의 앱에서도 읽을 수 있다.

  1. package controller;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import java.util.ArrayList;
  6.  
  7. import javax.servlet.ServletException;
  8. import javax.servlet.annotation.WebServlet;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12.  
  13. import com.google.gson.Gson;
  14.  
  15. import domain.User;
  16.  
  17. @WebServlet("/JSONController")
  18. public class JSONController extends HttpServlet {
  19.     private static final long serialVersionUID = 1L;
  20.    
  21.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  22.         response.setCharacterEncoding("utf-8");
  23.         response.setContentType("application/json");
  24.        
  25.     //  문자열 타입
  26.     //  String str = "안녕하세요";
  27.     //  배열 타입
  28.     //  int[] arr = {1,2,3,4,5};
  29.         // 객체 타입
  30.     //  User user = new User(0,"guest");
  31.     //  컬렉션 타입
  32.         ArrayList<User> list = new ArrayList<User>();
  33.         list.add(new User(1,"ruffy"));
  34.         list.add(new User(2,"zoro"));
  35.         list.add(new User(3,"nami"));
  36.        
  37.         Gson gsonnew Gson();
  38.     //  String jsonStr = gson.toJson(str);
  39.     //  String jsonArr = gson.toJson(arr);
  40.     //  String jsonUser = gson.toJson(user);
  41.         String jsonList = gson.toJson(list);
  42.        
  43.     //  System.out.println(jsonStr);
  44.     //  System.out.println(jsonArr);
  45.     //  System.out.println(jsonUser);
  46.     //  System.out.println(jsonList);
  47.        
  48.         PrintWriter out = response.getWriter();a
  49.     //  out.write(str);
  50.     //  out.write(arr);
  51.     //  out.write(user);
  52.         out.write(jsonList);
  53.         out.flush();
  54.         out.close();
  55.     }
  56.  
  57.     protected void doPost(HttpServletRequest request, HttpServletaResponse response) throws ServletException, IOException {
  58.         doGet(request, response);
  59.     }
  60.  
  61. }

ajax요청으로 json 응답받기

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <title>Insert title here</title>
  7.  
  8. <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
  9. <script type="text/javascript">
  10.     $(document).ready(function(){
  11.         $('button').on('click',function(){
  12.            
  13.             /* $.ajax({
  14.                 url:'/view_test/JSONController',
  15.                 type:'POST',
  16.                 success:function(data){
  17.                     alert(data);
  18.                 }
  19.             }); */
  20.            
  21.             $.getJSON('/view_test/JSONController',function(data){
  22.                 $(data).each(function(indexitem){
  23.                     $('div').append('id:'+item.id+', ');
  24.                     $('div').append('name:'+item.name);
  25.                     $('div').append('<br>');
  26.                 });
  27.             });
  28.         });
  29.     });
  30. </script>
  31.  
  32. </head>
  33. <body>
  34.     <button>User목록</button>
  35.     <div>
  36.     </div>
  37. </body>
  38. </html>

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,