Scenario: 사정상 Spring이 아닌 '무려' 서블릿으로 프로젝트를 진행하게 되었다. 너무 비효율적이고 힘들었지만 그래도 해내야만 했다.

그러다가 리플을 블러오는 기능을 동적으로 구현 하려고 ajax를 쓰려고 했는데, 스프링에서는 그냥 return값을 map으로 해주면 됬는데, 

이거 servlet은 return 값을 따로 넣어줄수가 없었다. (ViewPage를 넣어주면 무조건 redirect가 되버리므로 아주 복잡해졌다.)

그래서 command단에서 return으로 끝내버리고 끝내기전에 list<dto> 객체를 보내주어야 했다 (리플이 들어있는) 



Solution: 일단 list<dto>를 jason형태로 바꾸면 됐다. 이 부분은 구글의 Gson 라이브러리를 받아 해결 할 수 있었다.


view단 (ajax부분)

jQuery 0.59 KB
  1.   $.ajax({
  2.      type : "POST",
  3.      url : "/BoardProject/listreply.ref",
  4.      data : "BID="+selBid,
  5.      dataType: "json", !-- 꼭 jason으로 할 것 찍어주는 부분 -->
  6.      success : function(data, textStatus, xhr) {
  7.          $('#reply').empty();
  8.          $.each(data, function(key, val){
  9.              <!-- 로그 찍어주는 부분 -->
  10.              console.log('key:' + key + ' / ' + 'value:' + val['reply']);
  11.              $('#reply').append(val['reply']+'<br>');
  12.          });
  13.      },
  14.      error : function(request,status,error) {  
  15.         alert("code:"+request.status+"\n"+"error:"+error);
  16.      }
  17.   });



Contorller단 (command 오랜만에쓰는 부분)

Java 0.91 KB
  1. public class BoardReplyListCommand implements BoardCommand {
  2.     @Override
  3.     public void execute(HttpServletRequest request, HttpServletResponse response) {
  4.            
  5.             DAO dao = new DAO();
  6.             String bid = request.getParameter("BID");
  7.             System.out.println(bid);
  8.             ArrayList<DTO> list = dao.listreply(bid);
  9.             request.setAttribute("rlist", list);
  10.            
  11.             //타입을 json으로 바꿔줘야됨
  12.             response.setContentType("application/json");
  13.             response.setCharacterEncoding("UTF-8");
  14.            
  15.             //DTO 타입의 어레이리스트를 json 형태로 바꿔주는 구문(라이브러리 필수, zip->jar 확장자명 꼭 확인)
  16.             String gson = new Gson().toJson(list);
  17.            
  18.             try {
  19.                 //ajax로 리턴해주는 부분
  20.                 response.getWriter().write(gson);
  21.             } catch (JsonIOException e) {
  22.                 e.printStackTrace();
  23.             } catch (IOException e) {
  24.                 e.printStackTrace();
  25.             }
  26.            
  27.     }
  28. }


+ Recent posts