먼저 할일 ! 이클립스에서 프리퍼런스 들어가서 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 |