*** jsp와 db 연동
* JDBC(Java DataBase Connectivity) 방식 (default)
* DBCP(DataBase Connection Pool) 방식
1. WAS 실행 시 미리 일정량의 DB Connection 객체를 생성하고 Pool이라는 공간에 저장
2. 이후 DB 연결 요청이 있으면 Pool에서 Connection 객체를 가져와 사용하고 다시 반환
---> DB와 연결된 connection을 미리 만들어 pool에 저장해두고 필요 시 가져와 쓰고 반환하는 기법!
- 특징
01. 커넥션을 생성하는 데에 드는 연결 시간을 절약
02. 커넥션 풀에 저장된 커넥션을 재사용
- Connection pool 환경 설정
dbcpTest - WebContent - dbcpAPIT.jsp (테스트 파일)
- META-INF - context.xml (풀 설정파일)
- WEB-INF - web.xml
- lib - ojdbc6.jar
---> DAO에 getConnection() 메소드 만들어 context.xml의 name과 일치하는 커넥션을 pool에서 가져와 사용!
private static Connection getConnection() throws Exception { Context init = new InitialContext(); DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/orcl"); Connection conn = ds.getConnection(); return conn; } . . . public int insert(BoardDataBean board) { int result=0; Connection con=null; PreparedStatement pstmt=null; try { con=getConnection(); String sql="...."; . . . |
*** 회원관리
* 기능 사용
- Connection Pool
- 액션태그 : <jsp: useBean> , <jsp: setProperty>
- DTO, DAO 클래스 -> java resourse-src-member
- Session
* system 에서 회원 관리용 계정 생성
create user totoro identified by totoro123;
grant connect, resource to totoro;
* member 테이블 생성
create table member( id varchar2(20) primary key, passwd varchar2(20) not null, name varchar2(20) not null, jumin1 varchar2(6) not null, jumin2 varchar2(7) not null, mailid varchar2(30), domain varchar2(30), tel1 varchar2(5), tel2 varchar2(5), tel3 varchar2(5), phone1 varchar2(5), phone2 varchar2(5), phone3 varchar2(5), post varchar2(10), address varchar2(200), gender varchar2(20), hobby varchar2(50), intro varchar2(2000), register timestamp );
* WebContent - META-INF - context.xml (커넥션 풀 연결)
* Java Resources - src - member - DTO(Data Transfer Object), DAO(Data Access Object) java 파일 생성
- DTO에 테이블 컬럼만큼의 private 변수를 선언하고 각 변수에 대응하는 getter, setter 생성
- DAO는 그때그때 필요한 메소드 추가
1. main.jsp
- Session 영역: 하나의 웹 브라우저와 관련된 영역
session 객체 : 한 사용자와 관련된 정보를 jsp들이 공유하기 위해 사용
---> 로그인 폼에서 로그인을 해 메인 페이지로 접근한 경우, 로그인한 id를 페이지에서 공유해 페이지 내에서 로그인 상태로 유지됨
2. 로그인 : loginform.html --> login.jsp --> main.jsp
- loginform.html에서 아이디/비밀번호를 입력
- 이 때, 유효성 검사 -> 아이디/비밀번호 칸에 값이 입력되어 있는지, 올바른 형식을 갖추었는지 판단
<script src="login.js"></script>
- 형식을 갖추었다면, post방식으로 login.jsp에 정보를 전달
<form method="post" action="login.jsp">
---> post 방식 : 주소창에 전달되는 값이 나타나지 않음 (정보 은닉) / get 방식 : 전달되는 값이 나타남 (main.jsp?id=aaa)
- login.jsp에서 useBean을 이용해 폼에서 입력받은 값을 DTO에 중간 저장 -> 저장한 값을 DAO 메소드의 매개변수로 보냄
<jsp:useBean id="member" class="member.MemberDTO"/> <jsp:setProperty name="member" property="*"/> |
- DAO에서 DB 서버와 연결 후, 동일한 id가 DB에 존재하는지 select sql문을 실행
MemberDAO dao=MemberDAO.getInstance(); int result=dao.memberCheck(member); |
---> 동일한 id가 존재 = 등록된 아이디 = 로그인 ---> session 영역으로 id값을 공유
if(result==1){ session.setAttribute("id", member.getId()); //받아온 값 중 name="id"인 값 |
---> 비밀번호 또는 id가 맞지 않음 ---> 메시지 표시 후 로그인 폼으로 되돌아감
} else { %> <script> alert("메시지 출력"); history.go(-1); </script> <% } %> |
3. 로그아웃 : logout.jsp
- 세션 삭제 ---> ID 공유 끝나므로 로그인 전의 상태로 되돌아감
session.invalidate();
+) 로그아웃 후 main.jsp로 되돌아감 ---> 로그인/회원가입 란이 출력되는 main
'수업 > 정리' 카테고리의 다른 글
220314 회원관리3_정보 수정, 삭제 (0) | 2022.03.14 |
---|---|
220311 회원관리2_회원가입, ID 중복검사 (0) | 2022.03.11 |
220308 자바빈, db 연동 (0) | 2022.03.08 |
220307 액션태그_include, 자바빈_useBean (0) | 2022.03.07 |
220304 내장객체_ session, exception // 액션태그_forward (0) | 2022.03.05 |