내가 보려고 정리하는/JAVA

DB와 연결하여 Lprod자료 가져오기

보동이용용 2023. 1. 27. 09:36
반응형

첫화면

"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 : 어떤 형태로 주고받을지

 

를 작성한다.

 

결과 화면

반응형