JSP&Servlet

[JSP]8. lombok

CodeJaram 2023. 6. 30. 08:09

 

JSP_08_lombok

 

  1. 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