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("올바른 요청이 아닙니다."); } %> |