'jsp servlet'에 해당되는 글 1건

[데이터베이스] 마리아DB(MariaDB) - JSP,Servlet - ajax 연동 예제


[데이터베이스] MariaDB 설치하기 보러가기

[데이터베이스] 마리아DB(MariaDB) - 이클립스 연동 보러가기



 [데이터베이스] 마리아DB(MariaDB) - 이클립스 연동  다음편으로 이번에는 

마리아DB(MariaDB) - JSP - ajax 연동 예제를 다뤄 보겠습니다.


사용할 sql 구문은 show databases; 입니다.




JSP 화면 


JSP에서는 버튼 클릭 할때, jsonSend 함수가 실행됩니다

jsonSend함수에서는 Objet data = {sql : 'show databases'} 구문을 넘겨줍니다.


show databases의 결과 값을 object 값을 받아서 

alert로 띄어줍니다.




<body>
<p>테스트</p>
<button id="jsonSend" type="button"> show databases; 구문 실행</button>
<script>
$('#jsonSend').click(function () {
jsonSend();
});

function jsonSend() {
$.ajax({
type: "POST",
url: "/TistoryExample/MariaDB_test1",
data: {sql : 'show databases;'}, //json을 보내는 방법
success: function (data) { //서블렛을 통한 결과 값을 받을 수 있습니다.
alert(data);
},
error: function (e) {
console.log(e);
alert('저장에 실패했습니다.');
}
});
}
</script>
</body>


java servlet 페이지


sql를 사용하기 위해서는 sql에 필요한 import를 해줍니다.


또한, 예제에서는 json array 방식으로 돌려주기위해서 

json-simple-1.1.jar를 파일이 필요합니다. 

추가적으로 json import도 해줍니다.


jsp 페이지에 보내준 sql 구문의 값을 통해서 

jsp 페이지에 결과 값을 보내줍니다.


//추가 import
import java.io.PrintWriter;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        //doGet(request, response);
        System.out.println("MariaDB_test1 doPost 메소드가 실행되었습니다.");
        request.setCharacterEncoding("UTF-8");
        //response.setContentType("text/html;charset=utf-8");//string으로 반환
        response.setContentType("application/json"); //json으로 방식으로 반환하기 위해서

        String sql = (String)request.getParameter("sql");
        //show databases; sql 구문이 옵니다.

        Connection conn = null//mariadb와 연결르 위한 conn
        Statement stmt = null; //
        ResultSet resultset = null; //query의 테이블 결과를 받기 위해서
        
        JSONArray r_arr = new JSONArray(); /// 결과를 보내줄 Array
        PrintWriter out = response.getWriter(); //Array 값을 보내주기 위해서

        String db_id = "root";
        String db_pass = "";
        String db_server = "jdbc:mysql://localhost:3306/test";
        try {
            Class.forName("org.mariadb.jdbc.Driver"); //mariadb jar를 통한 연결
            conn = DriverManager.getConnection(db_server, db_id, db_pass);
            
     try {
     stmt = conn.createStatement(); //데이터베이스 sql문을 보내기 위한 개

     if (stmt.execute(sql)) { // 실행이 성공한 경우
     resultset = stmt.getResultSet();
                }else{ // 실패한 경우
                    resultset = null;
                }
     while (resultset.next()) { // 커서의 위치를 false나올때까지 돕니다
                    System.out.println(resultset.getString("Database"));
                    // 칼럼의 헤더 Database의 값을 가져옴
                    r_arr.add(resultset.getString("Database"));
     }
     }
     catch (SQLException ex){
     ex.printStackTrace();
     }
     finally {
                // 사용한 자원 해제 resultset , stmt , conn 순으로 해제해주세요!
     if (resultset != null) {
     try {
     resultset.close();
     } catch (SQLException sqlEx) { }
     resultset = null;
     }

     if (stmt != null) {
     try {
     stmt.close();
     } catch (SQLException sqlEx) { }
     stmt = null;
     }

     if (conn != null) {
     try {
     conn.close();
     } catch (SQLException sqlEx) { }
     conn = null;
     }
     }
            
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }       
        out.print(r_arr); //찾은 arr 값을 반환
    }





결과화면 - jsp 페이지





결과화면 - 이클립스













도움이 되셨다면, 구독과 좋아요.... 아니아니 ...

공감 버튼 꾸욱 눌러주세요 ~~




블로그 이미지

미나미나미

,