데이터베이스 & SQL

이클립스와 DB 연결

황샐리 2022. 4. 22. 14:26

먼저 할일 ! 이클립스에서 프리퍼런스 들어가서 UTF-8인지 모두 확인해라.

당연히? 자바이이 여야하겠죠

 

서버를 톰캣10까지 해주고 프로젝트 만들어

 

 

암튼 실행하면

 

아이디, 비번, 이름 다 나오는데

여기서 잘못하면 null값이 나오는데 이것은 조인(디비)에서와의 파라미터 이름이 동일하지 않아서! 

이렇게 하면 콘솔 창에 내가 집어넣은 데이터들이 그대로 반영되어 나옵니다.

 

걍 다 적어볼게요.

데이터베이스 세팅부터 할게요!

서비스 물론 다 켜놨어야 했음.

프로젝트 만들고 라이브러리 넣어라. lib아래에

context xml 파일은 meta 잡고 other에서 xml선택하면 됩니다.

context 태그는 대문자로! <Context> 하고 

https://tomcat.apache.org/tomcat-10.0-doc/jndi-datasource-examples-howto.html

 

Apache Tomcat 10 (10.0.20) - JNDI Datasource How-To

JNDI Datasource configuration is covered extensively in the JNDI-Resources-HOWTO. However, feedback from tomcat-user has shown that specifics for individual configurations can be rather tricky. Here then are some example configurations that have been poste

tomcat.apache.org

1번 붙여넣기

<Resource name="jdbc/myoracle" auth="Container"
              type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
              url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
              username="scott" password="tiger" maxTotal="20" maxIdle="10"
              maxWaitMillis="-1"/>

이거 꼭 대문자로 시작하는 컨텍스트 사이에ㅣ 넣어야 한다구요.

 

웹 엑스엠엘은 제너레이터!! 큰 프로젝트 잡고요

2번 넣어줍니다.

 

- 리스너

src/main 잡고 리스너 만들어 줍니다. 그 전에 서블릿 컨텍스트에서 라이프 사이클 선택.

쓸데없는 주석들은 다 삭제하고 super 등등의 생성자도 삭제해줍니다. 

컨텍스트 이니셜라이즈에

3번 넣어줍니다. 빨간 줄 뜨는거? 다 임포트! 그런데 이제 네이밍을 곁들인

트라이캐치 해주고 다 트라이 안에 여!

추가적으로 SQL 익셉션도 해줍니다.

 

Connection 객체를 ServletContext에 저장.

왜 여기에 저장하나면 서버가 켜질때부터 꺼질때까지 여기에 저장해야 안 사라지거든ㅋ.

방법은? 이벤트 객체 통해서

sce.getServletContext().setAttribute("conn",conn);

이 모든것은 트라이 안에서 일어난 일입을 밝힙니다.

알아보려면? syso"dbcp준비완료"

 

위에 디스트로이 및에

Connection  채ㅜㅜ = (Connection) sce.getServletContext().setAttribute("conn");

 

여기로 바꾸고 드스트로이 안에 있는 트라이 안에서는 if(conn!=null)close(); 하고 syso"dbcp종료!"

 

여기서 프로젝트 실행전 서버를 확인해줍니다. 우클릭하여 애드엔 리무브에 어제거가 올라와 있지는 않은지,, 리무브 해주고 프로젝트 돌려야 한다는 점 잊지 마세요.

서버만 테스트 해볼게요. 재생버튼 누르시면 콘솔에 dbcp준비완료라고 나옵니다. 

스탑을 누르면? 콘솔에 dbcp 종료라고 나오지요~~!

앗참. 여기서 서버는 지금까지 톰캣9를 쓰고 있다는 점 잊지마시길.

여기까지 세팅입니다~~!

 

인덱스는요? 웹앱잡고 만들라고~~! meta나 web 하위아니고 걍 webapp아래있는애라고!

 자 이제 바디를 꾸며볼게여. 바꾸! 인덱스는,,,jsp야

<a href="write.jsp">게시글 입력</a>

 

인덱스에서 라이트라 했으니 함 만들어볼게요 물론 같은 위치에 있는 jsp이며 이름만 write인.

태그 아래 그대로 바디에 여!

</> 뒤에 붙는 태그는 생략함다

 

<h1>

  <form action="board/write" method="post">

     <p>

         <input type="text" name="email" placeholder="email 입력하세요.">

     </p> //이거로 여러개 복붙해라

     <p>

         <button type="submit">등록</button>

     </p>

는 여기까지 쌤이 준비해주신다는데여? 차암나~~!

 

밥먹느라 놓침ㅋ... 미래의 나 자신 화이팅

멤버콘트롤러 생성하라고요 src에요~~ 아까 생성했던 리스너와 같은곳에

-멤버컨트롤러

인코딩 처리하기

두겟 아래에요~!

request.setChara인코딩~("utf-8")

그아래에 파라미터 준비

Strinf email=request.getParameter("email"); 이렇게 해서 모든 항목들까지

 

이 아래에 

String sql="instert into mem"

+ "values(?,?,?, sysdate)"

PreparedStatement pstmt= conn.prepareStatement(sql);

쓰고요 예외처리 하라고! 뭐?? 트라이 캐치~!

그 아래에 finally로 클로지할게

finally{pstmt.close();}

try위에서 pstmt 선언하고 null처리 하렴!

다시 finally로 와서 트라이 캐치하고 if(pstmt!=null)을 넣는다.

 

아까 처음 했던 트라이 캐치로 와서 (파이널리 위에)

트라이에서 pstmt.setString(1,email); 이작업을 해준다.

 

이제 파이널까지 다 나와서 페이지 이동에 대해 만들어볼게요. 물론 두 겟아래에 있음.

인덱스 페이지로 이동한다고 하면은

request.setAttribute("email",email); 이거 복붙해라.

request.get디스패처("/done.jsp").forward(request, response);

 

done.jsp 는 또 꾸며줍닏. 태그등등을 활용하여서요. 아마 보드안에 있을거다.

 

다시 라이트로 돌아가서요

아까 메소드 적어준 form 있죠? 거기 옆에 onsubmit="return check()" 해주고요

스크립트 사이에 fuction check(){} 문자열의 공백을 제거하는 트

저 펑션 사이에{} 여기 안에

var email=document.getElementById("email").value();

alert("email : " +email);

return flase;

'데이터베이스 & SQL' 카테고리의 다른 글

단일행/복수행/join  (0) 2022.04.14
집계성 SQL  (0) 2022.04.14
db 프로시저 / 트리거  (0) 2022.04.14
서브 쿼리  (0) 2022.04.05
hr 계정생성/select/Alias/중복제거/연산자  (0) 2022.03.31