728x90

JSP를 사용해본 적은 없지만, 네이버지식인에 PHP 를 JSP로 변환하는 것에 대한 질문이 있어서 나중에 사용하게 될 수도 있겠다 싶어 구글링 검색한 것과 알고 있는 지식을 적어둔다.


PHP

JSP

 <php

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>

<%@ page import = "java.sql.*" %>

<%

 ?>

%>

 if($_SERVER['REQUEST_METHOD'] == 'POST')

String requestMethod = request.getMethod();

if (requestMethod.equals("POST"))

$temperature = $_POST['temp'];

String temperature = request.getParameter("temp");



PHP 코드

<?php
// dbconnect.php 파일 내용
$db['host'] = 'localhost';
$db['name'] = 'testdb';
$db['user'] = 'root';
$db['pass'] = '패스워드';
$db['port'] = '3306';

$db = isConnectDb($db);

function isConnectDb($db){
    $conn = mysqli_connect($db['host'],$db['user'],$db['pass'],$db['name'],$db['port']);
    mysqli_set_charset($conn, "utf8");  // DB설정이 잘못되어 euc-kr 로 되어 있으면 문제가 됨
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        exit;
    } else {
        return $conn;
    }
}
?>

<?php
// 파라미터로 넘어온 변수
$temperature = $_POST['temp'];
$date = $_POST['date'];
$time = $_POST['time'];

if($_SERVER['REQUEST_METHOD'] == 'POST'){ // 본 파일 직접 실행 방지
    require_once 'dbconnect.php'; // DB 연결
    // 테이블에서 자동으로 증가되는 uid 값이 있어야 할 거 같아서 insert 필요한 칼럼만 발췌한다.
    $sql = "insert into data(date,time,temperature) values ('$date','$time','$temperature')";
    //echo "$sql"; // insert sql 내용을 화면으로 출력한다.
    mysqli_query($db,$sql);
}
?>


JSP 코드

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import = "java.sql.*" %> <!-- JSP에서 JDBC의 객체를 사용하기 위해 java.sql 패키지를 import 한다 -->

<%
request.setCharacterEncoding("UTF-8");// 파라미터로 넘어온 문자를 한글이 깨지지 않도록 UTF-8로 받음
String temperature = request.getParameter("temp");//temp라는 파라미터를 읽어온다.
String date  = request.getParameter("date");
String time  = request.getParameter("time");
String requestMethod = request.getMethod(); // POST전송인지 GET 전송인지 판별한다.

// URL 인증우회로  GET 방식일 경우 취약 하므로  jsp 에서 POST 방식으로 submit() 해 주는 것이 좋다
if (requestMethod.equals("POST")) { // POST 전송시 코드 내용
    Connection conn = null; // null 로 초기화
    PreparedStatement pstmt = null;//JDBC를 사용하여 테이블에 쿼리를 실행하기 위해서 PreparedStatement 객체를 사용
    try{
        String url = "jdbc:mysql://localhost:3306/testdb"; // 사용 DB명을 포함한 URL 기술
        String id = "root"; // 사용자 계정
        String pw = "패스워드"; // 사용자 계정의 패스워드
        String driver = "com.mysql.jdbc.Driver";
        Class.forName(driver); // MySQL DB와 연동하기 위해 DriverManager에 등록
        conn=DriverManager.getConnection(url,id,pw);// DB와 연동하기 위해 DriverManager에 등록

        String sql = "insert into data values(?,?,?)";//sql 쿼리
        pstmt = conn.prepareStatement(sql); // prepareStatement에서 해당 sql을 미리 컴파일
        pstmt.setString(1,temperature);
        pstmt.setString(2,date);
        pstmt.setString(3,time);
        // pstmt.setString(3,new Timestamp(System.currentTimeMillis())); // 현재 날짜와 시간
        pstmt.executeUpdate(); // sql문 실행
        out.println("data 테이블에 새로운 레코드를 추가했습니다."); // 성공시 메시지 출력
    }catch(Exception e){
        e.printStackTrace();
        out.println("data 테이블에 새로운 레코드 추가에 실패했습니다.");
    }finally{
        if(pstmt != null) try{pstmt.close();}catch(SQLException sqle){} // PreparedStatement 객체 해제
        if(conn != null) try{conn.close();}catch(SQLException sqle){}   // Connection 해제
    }
} else {
    out.println("올바른 요청이 아닙니다.");
}
%>


블로그 이미지

Link2Me

,