반응형

쉼없이 포스팅하니까 점점 지치네요.. 기존에 했던 것을 따라하는 것도 벅찬데 바로 작성하신 분들 존경합니다..


[게시판 만들기] JSP와 Oracle을 이용해 게시판을 만들어보자 -1-에서 oracle DB와 Sql Developer를 설치하셨을 겁니다.
이제 이 두 녀석을 사용해 봅시다!

먼저 실행 -> services.msc에 들어가서 정상적으로 구동중인지 확인합시다.

잘돌고있네요. 안돌고 있다면 데이터베이스를 실행시켜줍시다.

이 포스팅에서는 SQL에 대한 설명은 하지 않습니다.. 따로 검색해서 찾아보세용..

실행이 되고 있다면 이제 계정을 만들어주어야 합니다.

cmd -> sqlplus / as sysdba

create user board identified by board;
create user 아이디 identified by 비밀번호;
// 아이디 생성 


grant connect, resource dba to board;
grant connect, resource dba to 아이디;
// 권한 부여


이제 아이디와 권한 설정이 끝났으므로 SQL developer를 사용합시다.

가끔씩 Tomcat과 SQL developer간에 포트 충돌로 인하여 ecplise에서 실행이 안될 경우가 있는데 필요하다면
포트변경도 필요합니다.


왼쪽 상단에 +를 누르면 새창이 뜨는데 위와 같이 입력후 테스트(T)를 누르면 왼쪽하단에 상태가 나옵니다.
보고 접속하시면 됩니다.

접속이 된다면 좌측에  테이블 -> 새 테이블로 테이블 생성을 합니다.

(이름에 TABLE1이 아닌 board로 저장합시다)

생성하였다면 위에 캡처는 TABLE1인데 board여야합니다.
Board에서 데이터에 +를 눌러 값을 입력합니다. 그후 큰 X 오른쪽에 있는 √를 꼭 눌러주어야합니다.

데이터베이스에 임의의 값을 넣고 사용할 준비가 끝났습니다.

wirte.jsp에서 이제 값을 입력하면 DB에 연결이 되도록 만들어 보겠습니다.

먼저 write.jsp에 있는 form action 값을 insert.jsp로 바꿔주고, insert.jsp파일을 만들어 주세요.

그리고 index.jsp파일을 list.jsp로 이름만 변경해주세요.

그리고 index.jsp(list.jsp)에 있는 스크립트릿부분을 insert.jsp로 옮겨주세요.


그리고 데이터베이스 연결을 위한 구문이 필요합니다.

상단에 다음 구문을 입력하고 <%@ page import="java.sql.*" %>

아래의 내용을 스크립트릿 아래부분에 이어서 작성합니다. 만약 DB 계정이 다르다면 적절히 수정을 해야합니다.

try {

     String driverName = "oracle.jdbc.driver.OracleDriver"; //데이터베이스에 접속하기위한 드라이버를 로드합니다

     String url = "jdbc:oracle:thin:@localhost:1521:XE";            //접속 URL정보와 포트번호(oracle포트), sid(oracle버전)

     Class.forName(driverName);

     Connection con = DriverManager.getConnection(url,"board","board");    // getCo... : 계정정보 url, id, pw

     out.println("Oracle 데이터베이스 db에 성공적으로 접속했습니다");

     con.close();

} catch (Exception e) {

     out.println("Oracle 데이터베이스 db 접속에 문제가 있습니다. <hr>");

     out.println(e.getMessage());

     e.printStackTrace();

}


그리고 JSP에서 데이터베이스 접속하기 위해서는 오라클 드라이버가 있습니다. 아래의 파일을 다운받아서 WebContent -> WEB-INF -> lib 폴더안에 넣어주세요.

ojdbc14.jar

전체적인 흐름은 다음과 같습니다.

list.jsp -> 글쓰기버튼 클릭 -> write.jsp -> 데이터 입력후 submit -> insert.jsp


실행을 시켜봅시다. List에서 write로 접속하여 값을 입력하니 우측처럼 insert.jsp로 넘어가면서 db에 접속이 가능했다고 뜹니다. 그럼 이제 DB연결도 확인했으니 여기에다가 값을 넣어볼까요?

값을 넣어볼 구문을 다음과 같습니다..


     Statement stmt = con.createStatement();

     String sql = "INSERT INTO BOARD" +
                                 "(IDX, TITLE, WRITER, REGDATE, COUNT, CONTENT)" +
                                 "VALUES ("+2+", '"+title+"', '"+writer+"', '"+regdate+"', '1' , '"+content+"')";

     stmt.executeUpdate(sql);

방금 추가한 코드에서 커넥션이 닫히전에 (con.close()이전에 ) 위의 구문을 넣습니다. 왜 저기에 넣는지는 설명안해도 알겠죠? 

입력을하고 이제 실행을 시켜 봅시다!



값이 잘 들어갔네요!! 혹시 안나온다는 분들은 데이터에 있는 새로고침버튼을 눌러보도록 하세요~



혹시나 넣는부분을 못찾으시는 분이 있을까봐 첨부합니다. 



번개불에 콩구워먹듯 후다닥 진행되고 있네요~ 여기까지가 글쓰기버튼을 누르면 글 내용이 DB로갈 수 있도록 했습니다.

이제 게시글 조회, 수정, 삭제등의 기능을 추가 해보도록 합시다.


지금 이렇게 구성되어 있다면 보안으로나 기능상 매우 취약합니다. 이 포스팅으로 개발을 하여 쓰게된다면

필시 SQL injection이라는 치명적인 보안 결점이 발생하게 됩니다. 지금은 단순 개발을 위해 진행하지만

추후 시간이 된다면 SQL injection까지 대응하는 글을 써보겠습니다. 


반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기