반응형
"Lprod자료 가져오기" 버튼을 누르면 DB에서 자료 검색하여 가져오기
(간단히 연결만 해볼 거라서 service는 생략)
1. Config에 Lprod 추가
// config에 Lprod 정보 추가
// Alias
<typeAlias alias="LprodVo" type="kr.or.ddit.vo.LprodVO"/>
// mapper
<sqlMap resource="kr/or/ddit/ibatis/mappers/lprod-mapper.xml" />
2. mapper에 쿼리문 작성
<?xml version="1.0" encoding="UTF-8"?>
<!--
이 문서는 iBatis에서 처리할 SQL문을 작성하는 무선입니다.
-->
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EM"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="Lprod">
<select id="getLprod" resultClass="LprodVo">
select * from Lprod
</select>
</sqlMap>
3. dao에 싱글톤추가, mapper에서 반환된 LprodVo 받아오기
package kr.or.ddit.session;
import java.sql.SQLException;
import java.util.List;
import com.ibatis.sqlmap.client.SqlMapClient;
import kr.or.ddit.util.SqlMapClientFactory;
import kr.or.ddit.vo.LprodVO;
public class LprodDao {
//SqlMapClient 변수 선언
private SqlMapClient smc;
//싱글톤
private static LprodDao dao;
private LprodDao() {
smc = SqlMapClientFactory.getSqlMapClient();
}
public static LprodDao getInstance() {
if(dao==null) dao = new LprodDao();
return dao;
}
// namespace.메서드명 으로 쿼리문 반환값 받아오기
public List<LprodVO> getLprod(){
List<LprodVO> lprodList = null;
try {
lprodList = smc.queryForList("Lprod.getLprod");
} catch (SQLException e) {
e.printStackTrace();
}
return lprodList;
}
}
4.Servlet으로 문서 이동하기
package kr.or.ddit.json;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
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 com.google.gson.Gson;
import kr.or.ddit.session.LprodDao;
import kr.or.ddit.vo.LprodVO;
@WebServlet("/jsonLprodAll.do")
public class JsonLprodAll extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("allication/json; charset=utf-8");
//-------------------------
// 전송할 JSON데이터 만들기
Gson gson = new Gson(); // Gson객체 생성
String jsonData = null; // JSON데이터가 저장될 변수
LprodDao dao = LprodDao.getInstance();
List<LprodVO> lprodList = dao.getLprod();
// 응답으로 보낼 데이터를 JSON데이터로 변환하기
jsonData = gson.toJson(lprodList);
// 변환된 JSON데이터를 응답으로 보내기
PrintWriter out = response.getWriter();
out.write(jsonData);
response.flushBuffer();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
==> request, response모두 utf-8설정해주고 시작
==> dao객체 생성하고, 반환받을 변수 생성후 받음
==>Gson 생성, gson의 toJson()이라는 메서드로 받아온 정보가 저장된 lprodList를 gson형태에서 json으로 변경
==>Printwriter 생성해서 jsonData를 응답해주면 끝!
5. 결과 띄우기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!--
'Lprod자료 가져오기'버튼을 클릭하며 DB에 저장된 LPROD테이블의 전체 데이터를
가져와서 아래의 id속성값이 'result'인 div태그 영역에 출력하는 페이지를 작성하시오.
Ajax를 사용하고 응답 데이터는 JSON으로 받아서 처리하시오.
-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript"
src="<%=request.getContextPath()%>/js/jquery-3.6.3.min.js"></script>
<script type="text/javascript">
$(function(){
// 리스트
$('#lprodBtn').on('click', function() {
$.ajax({
url : "<%=request.getContextPath()%>/jsonLprodAll.do",
//data : 없음,
type : "post",
success : function(resData) {
let htmlCode = "<table border='1'>";
htmlCode += "<tr><td>LPROD_ID</td><td>LPROD_GU</td><td>LPROD_NM</td></tr>"
$.each(resData, function(i,v){
htmlCode += "<tr><td>" + v.lprod_id + "</td>";
htmlCode += "<td>" + v.lprod_gu + "</td>";
htmlCode += "<td>" + v.lprod_nm + "</td></tr>";
});
htmlCode += "</table>";
$('#result').html(htmlCode);
},
error : function(xhr) {
alert("오류코드 : " + xhr.status);
},
dataType : "json"
});
});
// ----------------------------------------------------------------
})
</script>
</head>
<body>
<form>
<input type="button" id="lprodBtn" value="Lprod자료 가져오기">
</form>
<h3>Lprod 자료 목록</h3>
<div id="result"></div>
</body>
</html>
==>ajax이용하여 작성하기
==>key:value형식과 비슷하게
url : 이동할 주소,
data : 보낼 데이터,
type : 전송방식 get/post,
success : 성공시 수행할 함수,
error : 에러났을 시 코드 보여주기,
dataType : 어떤 형태로 주고받을지
를 작성한다.
반응형
'내가 보려고 정리하는 > JAVA' 카테고리의 다른 글
JDBC Util (0) | 2023.03.20 |
---|---|
ajax는 왜 쓰는지? 동기/비동기 (0) | 2023.01.27 |
Network Test - TCP / UDP - TCP써보자! (0) | 2023.01.24 |
Network Test - InetAddress (0) | 2023.01.24 |
한 문서에서 다른 문서로 실행 문서를 이동시키기(forward, sendRedirect 방식) (2) | 2023.01.24 |