본문 바로가기
공부기록

5월 18일 Spring - 홈페이지 로그인 DB 연동

by project100 2023. 5. 18.
DB 관련 로그 찍기(Log4jdbc)

https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1

<dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
    <version>1.16</version>
</dependency>

 

application.properties 설정

spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy

spring.datasource.url=jdbc:log4jdbc:mysql://127.0.0.1:3306/board_db?serverTimezone=Asia/Seoul

 
resource폴더에 다음 파일을 추가
1) log4jdbc.log4j2.properties : log4jdbc관련 설정
2) logback.xml : 로그 출력 관련 설정

 

DAO - MyBatis - (log4jdbc) - DB

 

주로 사용되는 로그 : resultsettable, resultset, sqlonly

 

 

- 패키지로그

<logger name="com.raspberry.board" level="debug" />

09:37:25 [http-nio-8080-exec-1] INFO  c.r.board.controller.HomeController - home()
09:37:34 [http-nio-8080-exec-7] INFO  c.r.board.controller.HomeController - joinForm()

 

- connection 로그 (기본 설정 10개)

09:41:00 [http-nio-8080-exec-6] INFO  jdbc.connection - 1. 

 

- sqlonly 로그 : 실행된 sql만 출력

1. SELECT count(*) FROM member WHERE m_id='hena'

 

- sqltiming 로그 : 실행된 SQL, 실행시간

1. SELECT count(*) FROM member WHERE m_id='webapp'
 {executed in 10 msec}

 

- audit 로그 : ResultSet 제외, 정보가 많음

PreparedStatement.new PreparedStatement returned 

1. Connection.prepareStatement(SELECT count(*) FROM member WHERE m_id=?)  1. PreparedStatement.setString(1, "hena") returned 

 

- ResultSet 로그 : ResultSet 포함, 3번째 부분

com.mysql.cj.result.Field@2

 

- resultsettable 로그 : resultset과 같이 사용해야 출력된다.

|-----------|
|count(*) |
|-----------|
|1           |
|---------  |

 

log level(로그 단계)
7단계로 구성 - 실제적으로는 5단계만 사용
1. off : 로그를 찍지 않는다.
2. debug : 디버깅 시 확인이 필요한 경우(개발하는 시점)
3. info : 정보로서 확인이 필요한 경우
4. warn : 경고(warning)로 출력이 필요한 경우
5. error : 에러로 처리해야 하는 경우
6. fatal : 심각한 에러
7. all : 항상 모든 로그를 찍는다.
 
Lombok의 로그
1) @Log : 간편하게 사용하는 로그. 주로 메소드 info("message")/warning 두가지만 가능
info 레벨의 메시지를 출력, 나머지 단계의 메시지 출력은 어려움
2) @Slf4j : 5단계로 구분하여 로그를 출력할 때 사용.
debug, info, warn, error, trace 메소드 제공
trace : 추적레벨, debug보다 상세한 정보를 나타내는 단계, 가장 낮은 단계(많이 사용되지는 않음)

개발단계에서는 log debug로 작성
- @Slf4j 사용 시 : log.debug("출력할 문장");
- logback.xml level debug로 작성
실 서버 운영시 logback.xml level info, warn 또는 error로 상향 설정하면 debug로그는 출력되지 않는다.

로그인 처리
암회화된 비밀번호를 DB로 부터 검색하여 사용자가 입력한 비밀번호화 비교하는 작업

1. loginForm.jsp 만들기

2. controller 

session 접속이 끊어질 때까지 유지할 수 있도록 한다.

 

request(로그인정보), model,RedirectAttributes(결과 메세지), session(로그인유지)

 

3. dao - 회원의 비밀번호 검색 메소드, MemberDao.xml

4. service 

matches(평문, 암호문) : Spring Security에서 제공하는 암호문과 평문비교 메소드
같은 값이면 true, 다르면 false를 출력

5.dao - 회원 정보를 가져오는 메소드(from minfo 뷰), MemberDao.xml

6. sevice
7. controller 연결
8. header에 만든 로그인 세션 
 
로그인 성공 이후 ->  게시글 목록 페이지로 이동
url : list
paging 처리 
글쓰기 버튼 처리
접속자(회원정보) 출력
제목, 내용 검색  // 작성자, 날짜 검색 응용
1. boardList.jsp 
2. service 로그인 성공 시 view 수정
view = "redirect:list?pageNum=1";
3. BoardController 생성
4. BoardDto 생성
5. SearchDto 생성
6. Boardcontroller 매개변수 수정
7. Boardsevice 생성
8. BoardDao 생성 - BoardDao.xml 생성
9. BoardDao - BoardDao.xml

if - 가변처리

# data. $ 원본 그대로 사용

10. BoardSevice

11. BoardController