본문 바로가기

분류 전체보기

(17)
서블릿의 데이터베이스 연동하기 229p 서블릿에서 데이터베이스와 연동하는 과정은 자바의 데이터베이스 연동 과정과 같다. 클라이언트로부터 요청을 받으면 서블릿은 SQL문을 사용해 데이터베이스에 접근하여 작업을 한다. 이과정에서 DAO와 VO클래스가 사용된다. 이클립스와 오라클데이터베이스와 연동하는 데 필요한 드라이버인 ojdbc6.jar를 프로젝트의 WEB-INF>lib폴더에 위치시킨다.
톰캣의 dataSource(tomcat-dbcp-7.0.30) 톰캣에서 connectionPool기능을 사용하려면 이 기능을 제공하는 DBCP 라이브러리를 따로 내려받아야 한다. WEB-INF>lib에 위치시키고 context.xml을 통해 연결할 데이터 베이스를 설정해 준다. 246p 참고
request/response request는 웹브라우저에서 요청한 정보를 담는 객체 response는 request에 대한 응답
PreparedStatement opentutorials.org/module/3569/21377 PreparedStatement - JSP/서블릿 흝어 보기 1. 가독성와 유지보수가 좋다. PreparedStatement( ) 메소드를 통해 PreparedStatement 객체를 생성할 때 인자값으로 실행할 SQL문을 지정하는데, 값을 동적으로 지정해야할 때 ? 기호로 대체할 수 있습니다. opentutorials.org 정리 잘돼있음
코드 변경후 서버 다시시작하기!잊지말자 회원 가입창 아이디 비밀번호 이름 이메일 fn_sendMember맞는데 왜 안되는걸까ㅠ server를 다시껐다가 켜서 연결하니까 해결됐다. 젠장;;
적어도 하나의 JAR가 TLD들을 찾기 위해 스캔되었으나 아무 것도 찾지 못했습니다. 스캔했으나 TLD가 없는 JAR들의 전체 목록을 보시려면, 로그 레벨을 디버그 레벨로 설정하십시오. 스캔 과정에서 불필요한 JAR들을 건너뛰면, 시스템 시작 시간과 JSP 컴파일 시간을 단축시킬 수 있습니다. 이런 에러?가 떴는데 이게 이거랑 연관있는지 모르겠다. 계속 /memberForm.html로 접속해도 서버가 안돼서 찾아보니 memberForm.html을 WEB-INF에 넣어서 위치를 못찾은 것이었다. WebContent로 이동시키니 잘 작동한다.
오라클과 이클립스 연동 무려 하루가 걸려서 알아냈는데 생각보다 간단한 문제였다ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 그건 바로 처음 설치할 때도 해맸던 XE와 orcl의 차이였다. 원래는 소스코드 그대로 복붙해서 user 이름만 바꿨는데 다시 확인해보니 위에 @localhost:1521:XE가 보였다. 이걸 orcl로 바꿔주니 제대로 출력됐다. 이랬던애가 이렇게 데이터베이스에 있는 정보를 성공적으로 불러왔다!
javax.servlet cannot be resolved 문득 import javax.servlet. cannot be resolved이러면서 import javax.servlet.* 로 빨간줄이 갈 때가 있음 원인은 Path를 잘못 잡아줘서 그렇다. 톰캣의 jar 파일을 프로젝트로 이끌어오면 해결됨. 프로젝트 오른쪽 클릭 Configure build Path -> Java Build Path -> Libaries -> Add External JARs... -> 톰캣폴더\lib\ 찾기 -> jsp-api.jar, servlet-api.jar를 넣어주면 됨 참조 : http://blog.naver.com/skybrend/90174043355 좋아요5 공유하기 글 요소 구독하기 출처: https://acua.tistory.com/entry/import-javaxs..
오라클에서 insert했는데 데이터가 입력이 안될 때 무슨 이유인지는 모르겠지만 그냥 세모표시(명령문 실행) 눌렀을 때는 안 됐는데 옆에 스크립트 실행을 누른뒤 명령문 실행을 누르니 정보가 입력되었다. 원래는 저 아래 표에대한 정보가 입력이 안되고 위에 카테고리만 입력되었었다.
return에 대해 첫번 째 5는 p_plus에서 print된 5이다. 두번째 프린트 값 None과 5를 살펴보자. p_result의 값은 none이 나왔다. 그 이유는 print(a+b)는 함수내에서 계산이 이루어지는 프로세스이다. 하지만 r_result의 경우 return을 이용해서 r_plus(2,3)인 함수가 호출되면 return a+b로 치환되는 것이다. 그래서 r_result=a+b로 바뀌고 그 값이 5가 r_result에 저장 되어 5가 출력되는 것이다. 반면에 p_result는 프로세싱이 p_plus안에서 이뤄지고 끝났으므로 p_result값에는 아무것도 남지 않게 되어 none이 나오는 것이다. 또한 return은 function을 종료한다.