JSP_08_lombok
- lombok: getter, setter, toString 등 메소드 작성 코드를 줄여주는 코드 다이어트 라이브러리(여러 annotation 제공하여 compile 시 메소드 생성)
[환경설정]
1. lombok 다운로드
https://projectlombok.org/download
2. Eclipse 파일 위치에 lombok 넣기
C:\Users\smhrd\eclipse\jee-2023-03\eclipse
3. eclipse경로 확인 후 설치-install/Update-성공하면 quit installer
4. pom.xml에 라이브러리 추가: project Lombok(1.18.28)
5. lombok으로 메소드 만들기
- @메소드 생성하는 명렁어→Ctrl+Shift+O(import)→outline 창으로 생성확인
- getter: @Getter
- 전체 생성자: @AllArgsConstructor
- 필요 생성자: @RequiredArgsConstructor, 필요한 필드 앞에 @NonNull을 작성
[실습]
[환경설정]
- pom.xml에 lombok, ojdbc6.jar 라이브러리 추가
- sqlSessionManager 파일 만들기
- mybatis-config에서 db.properties파일과 연결, mapper 파일 연결, 별칭 설정
[회원가입]
1. web_member 테이블 만들기
2. main.jsp의 Q1 form 태그에서 email, pw, tel, address 데이터 보내기
3. joincon(servlet) 만들기
- request 객체로 email, pw, tel, address 받아오기
- 데이터 제대로 받아왔는지 console 창에 출력
4. memberDTO
-필드 email, pw, tel, address 선언하기
-lombok으로 getter, 전체 생성자, 필요생성자 만들기
5. memberDAO에 join 메소드 만들기
- 연결하기: SqlSession session=sqlSessionFactory.openSession(true);
- sql문 실행하기: int row=session.insert("join", dto);
- 연결종료하기: session.close();
6. memberMapper에 sql문 작성하기
<insert id="join" parameterType="MemberDTO">
insert into web_member values(#{email}, #{pw}, #{tel}, #{address})
</insert>
7. joinCon에서 join 메소드 호출하고 결과에 따라서 페이지 이동
- memberDAO join 메소드 호출
MemberDTO dto=new MemberDTO(email, pw, tel, address);
MemberDAO dao=new MemberDAO();
int row=dao.join(dto);
- 회원가입 성공 실패 여부에 따라 페이지 이동(email값 전송하기)
String moveURL="";
if(row>0) {
System.out.println("회원가입 성공");
request.setAttribute("email", email); //request 방식으로 email값 전송
moveURL="./JoinSuccess.jsp";
}else {
System.out.println("회원가입 실패");
moveURL="./Main.jsp";
}
- forward 방식으로 페이지 이동하기
RequestDispatcher rd= request.getRequestDispatcher(moveURL);
rd.forward(request, response);
[오류]
오류1: sqlSessionFactory 전역변수로 만든 후 지역변수에서 sqlSessionFactory 타입을 지워야 한다.
오류2: MemberMapper.xml에서 기본예시문장 실행되어 오류 발생(id, resultType, TypeAlias가 없는데 실행하면 오류)
[오류 출력기능]
sqlSessionMananger.xml에서 에서 catch문에 e.printStackTrace()를 작성하면 어디에서 오류가 발생
오류 3: mapper 파일에서 기본적으로 복사해온 mapper 삭제하기
org.apache.ibatis.exceptions.PersistenceException:
### Error building SqlSession.
### The error may exist in com/smhrd/mapper/MemberMapper.xml
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'com/smhrd/mapper/MemberMapper.xml'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'Blog'. Cause: java.lang.ClassNotFoundException: Cannot find class: Blog
오류4: mapper 파일에서 parameterType을 typeAlias 명과 동일하게 수정
### The error may exist in com/smhrd/mapper/MemberMapper.xml
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'com/smhrd/mapper/MemberMapper.xml'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'MDTO'. Cause: java.lang.ClassNotFoundException: Cannot find class: MDTO
오류5 : 페이지 이동경로 오타(./JoinSuccess.jsp)
오류 6: email(PK) 중복
[로그인]
1. [Main.jsp]
- Q3. email, pw, tel, address 입력받고 [LoginController]로 보내기
2. [MemberDAO]에서 login 메소드 만들기
- 연결하기: SqlSession session=sqlSessionFactory.openSession(true);
- sql 문장 실행하기: MemberDTO info=session.selectOne("login", dto);
- 연결 종료하기: session.close();
- 리턴값 info(email, pw, tel, address)
3. MemberMapper에서 sql 문장 작성하기
<select> 태그 만들기: id, parameterType, resultType, select 문장
4. LoginController에서 login 메소드 호출하고 로그인 정보 유지하기
- post 방식 인코딩하기
- 사용자 입력정보 불러오기(request.getParameter)
- login 메소드 호출: 로그인한 회원의 정보 가져오기
MemberDTO info=new MemberDAO().login(new MemberDTO(email, pw));
- 로그인 성공 시 로그인 정보 유지->session 객체 사용
if(info!=null) {
System.out.println("로그인 성공");
//1. session 객체 생성하기
HttpSession session= request.getSession();
//2. session에 info 정보 저장
session.setAttribute("info", info);
}else {
System.out.println("로그인 실패");
}
- 페이지 이동: response.sendRedirect(“./Main.jsp”)
5. [Main.jsp]에서 로그인한 사용자 정보 출력
- Q4. 로그인한 사용자의 아이디로 환영문구 출력하기
-JSTL, EL 표현식 사용하기(JSTL1.2 pom.xml에 추가하기)
-로그인 성공하면 “사용자 아이디님 환영합니다. ” 출력
-로그인 실패하면 “로그인한 세션아이디를 출력해주세요” 출력
- Q5. 로그인한 사용자의 이메일, 전화번호, 집 주소 출력
- Q6. 로그인한 상태에서 개인정보 수정 탭과 로그아웃 탭 출력
[오류]
project update를 했을 때 context Root 중복되는 경우가 생김
Servers 폴더-server.xml 파일에서 context 검색
maven 프로젝트 중복 제거
'JSP&Servlet' 카테고리의 다른 글
[JSP]10. 게시판 기능 (0) | 2023.07.09 |
---|---|
[JSP]9. 회원정보 관리 (0) | 2023.07.06 |
[JSP]7. Mybatis 로 JDBC 구현하기 (0) | 2023.06.29 |
[JSP]6. Maven&Mybatis (0) | 2023.06.28 |
[JSP]6. Maven&Mybatis (0) | 2023.06.27 |