본문 바로가기

강의

자바 블로그를 하면서...(~0803, 1005 추가)

블로그 (비공개)

 

JAVA_BLOG.pptx
1.06MB
Blog.hwp
3.45MB
블로그_포트폴리오.pdf
2.97MB

 

1005

- 메일 관련 수정

- 관리자 삭제 권한 부여

   - 게시글

   - 댓글

- 재배포

 

0803

- 회원가입 시 인증용 이메일 발송 (attr)

 

0802

- detail.jsp에서 이전글/다음글 되살리기

- main.jsp 수정

- 회원가입 시 로그인 아이디 중복체크 표시하기


0731

- main/home에서 사진 빼고 게시글을 이용한 형식으로 바꾸기

(HOT 5 / NEW 5)

- detail - 이전글/다음글 가능하도록 > 해결 : articles[i].id

- 로그인/로그아웃 시 뒤로 돌아가는데 로그인/로그아웃의 여부에 관계있는 페이지의 경우 접근이 불가해야 함.

  - 로그인 필요

     - 로그인 아이디와 작성자 아이디가 다를 경우 홈으로 보내야 하는 것

        - 글 수정

        - 글 삭제

        - 댓글 수정 (접근 시점에서 비로그인시 홈으로 보내는 것으로 수정)

     - 로그아웃 창

     - 글 작성

     - 댓글 작성 (로그아웃 상태일 경우 댓글창 존재X)

     - 개인정보 확인 (myPage)

     - 개인정보 수정

  - 로그아웃 필요

     - 회원가입

     - 로그인 창

     - 아이디 찾기

     - 비번 찾기

 

- 로그인 시, 임시 패스워드를 사용할 경우 변경 권유 창 띄우기

- 로그인 시, 

- 가입 때, 메일 인증링크를 보내고, 해당 링크를 클릭하지 않았을 경우 미인증 -> 다시보내기 버튼 존재해야 함.

 


0730

- jstl 참고 블로그

 

- 현재 문제점

   detail

    - 글 수정시 카테고리가 해당 글 카테고리만 나옴.

    - 글 수정을 할 경우 수정한 날짜의 데이터도 보여지도록 해야함.

    - 댓글 수정 불가

    - 이전 페이지 / 다음 페이지 임시 삭제

   list

    - 카테고리 리스트 selected 코드 부분 적용이 안 됨. (중요도 낮음)

   myPage

    - 인증 메일 보내기 실패
    - 미인증시 이메일이 뜨지 않음

 

- 오늘 해야할 거 : 어제 동영상 보면서 코드 수정하기

    - 수정 페이지 접근 전에 pw 치도록 하고, 수정 페이지에 곧바로 들어가지 않도록 수정

    - 할 수 있다면...

더보기
  • 이메일 인증코드 보내기 기능
    • 작동시기
      • 가입
      • 이메일 변경
      • 이메일 인증코드 다시보내기 버튼 누를 때
        • 고객이 메일을 못 받았을 경우를 상정
    • attr 변수예시
      • 변수명 : member__회원번호__extra__emailAuthCode
      • 변수값 : UUID
    • 고객에게 보내야할 링크
      • http://localhost:8081/blog/s/member/authEmail?email=회원이메일&authCode=인증코드&memberId=회원번호
      • http://localhost:8081 부분은 운영환경에서는 자동으로 운영환경의 도메인과 프로토콜, 포트로 변경되어야 합니다.
    • MemberController의 authEmail 액션에서 해야할 일
      • 입력받은 정보 3개(email, authCode, memberId) 가 유효한지 체크
      • 유효하다면 member__회원번호__extra__emailAuthed attr변수에 이메일 저장
    • 로그인 시
      • memberService.isEmailAuthed(loginedMemberId); 함수를 사용해서 인증되었다는 정보가 attr에 있는지 체크
        • memberService가 isEmailAuthed 메서드의 기능을 수행할 때 attrService를 이용해야 합니다.
  • 임시패스워드 변경 촉구 기능 구현
    • 임시 패스워드 발송시 member__회원번호__extra__useTempPassword attr 변수의 값을 1로 지정
    • 로그인 시 member__회원번호__extra__useTempPassword attr 변수의 값이 1이면, 경고창 띄움
    • 경고창 내용 : 현재 임시패스워드를 사용중 입니다.
    • 패스워드 변경시 : member__회원번호__extra__useTempPassword attr 변수 삭제
  • 오래된 비밀번호 변경 촉구 기능 구현
    • 로그인 시
      • member__1__extra__lastPasswordChangeDate attr 변수의 값(날짜)를 현재날짜와 비교하여 체크
  • 회원간 쪽지기능
  • 가입시 수행되는 로그인 아이디 유효성 체크의 통신횟수 줄이기
 

0728

오늘 할 것

- memberService 전부 extra로 교체하기

- jstl 마저 하기

- 이메일 인증을 할 경우와 미인증의 차이점을 무엇으로? 비밀글 가능 여부?


0727

오늘 할 것

- jstl 도입 > jsp에서 자바 전부 제거 (GITHUB) (YOUTUBE)

- 로그아웃 후 원래 있던 곳(URI)로 돌아가기

- Util.isSuccess 관련 오류 수정, JSTL 도입으로 필요없어진 import 삭제

- 로그인 후 원래 있던 URL로 돌아가도록.

- web.xml 코드 길이가 줄어들었음.

- attr 만들기(내일 설명 예정)

- 발표는 내일


0724

- cho04에서 이메일 발송이 안 됨

 > 해결 : 2단계 인증 비밀번호 사용 (참고)

- 메일 인증 문제 발생

 > 해결 : Util의 코드와 비교하는 게 아니라, 주소창 code(req.getParameter("code"))와 비교

> 마지막으로 인증 메일을 보낼 때의 로그인 정보를 기억하고 있기에 인증 과정에 이상 발생

   a 로그인 > a 메일 발송 > a 로그아웃 > b 로그인 > b 인증메일 발송 >
   > (b 로그인 상태) a의 인증메일 링크 클릭 > b 인증 성공 > b 로그아웃
   > a 로그인 > a의 인증메일 링크 클릭 > a 인증 실패

> Util을 이용했기에 발생한 문제

> DB를 이용하여 인증 코드를 저장한다면 해결 될 듯 함. (extra 이용?)

- 이미 인증이 된 상태에서 인증 링크를 누를 경우, '이미 인증된 계정입니다.'가 떠야함.- 메일 인증 후, 다른 메일 주소로 수정할 경우mailAuthStatus=0 으로.

현재 문제점

- 인증 코드 저장 장소- cho04에서 이메일 발송 실패

- 댓글 수정창 변경

만약 로그인 하지 않은 상태로도 인증이 되게 하려면 코드 변경 필요.

> '메일로 보낸 코드'와 '모든 member의 코드형식으로 변환한 문자열'을 비교

> 일치하는 멤버일 경우 인증

>> 코드의 경우 한 개 이상의 유니크한 정보 필수 (+불변의 정보 추가 가능)


0723

- 회원정보 수정시, 비번을 한 번 더 물어보기

> 해결 : 기존 PW를 입력해야 수정이 가능하도록 변경함.

- 가입시 기본적으로 비인증 상태이고, 인증 메일을 누르면 인증되도록

> 임시해결 : extra 적용하기

 

member

 - mailAuthCode

 - 이메일로 링크. 인증하기

 - mailAuthStatus tinyint(1) unsigned

   - 0 > 미인증

   - 1 > 인증

인증 메일을 보내는 타이밍? -> '마이페이지'에서 '인증버튼 클릭'

> '인증하기' 링크 클릭

> 난수 이용하여 코드 생성

> 해당 난수를 임시 저장 (?)

> https://cho04.my.iu.gy/blog/s/member/doAuthMail?code=\[코드\] 보내기

> 해당 링크 클릭시, alert로 '메일이 인증되었습니다' 띄우고, DB에 접속하여 mailAuthStatus 를 1로 변환

> 블로그 메인으로 이동

+ 만약 '개인 정보 수정'에서 이메일을 바꿀 경우 mailAuthStatus=0으로.

오늘 할 거

- member extra 적용 (extra가 없어서 util에 임시로 넣어놓음.)

- 메일 인증 후, 다른 메일 주소로 수정할 경우 mailAuthStatus=0 으로.


0722

- web.xml 이용

> 해결 : web.xml의 servlet-class에서 바로 이동이 안된다면 제대로 작성한 것인지 확인!

- write 중 다른 페이지 이동시 alert 띄우기

- 댓글 수정시 페이지 이동 없애기

- 검색 기능... 정확하게 알기...


0721

- 회원 가입시 가입환영메일 발송- 비번 찾기에서 이름/이메일/아이디 입력시 임시패스워드(ex.1234)로 암호화한 정보를 DB 속 회원 패스워드에 갱신- 고객에게 임시 패스워드 발송

( 메일 발송 참고 : https://darkhorizon.tistory.com/324 )

- 강사님의 servlet-mail 참고

- 아이디 찾기 추가


0720

- 개인 정보 변경(비번/닉네임/이메일) 페이지 생성하기

  - 상단의 닉네임 클릭

  - 비밀번호 재확인

  - 비번 / 닉네임 / 이메일 중 닉네임과 이메일은 자동완성 상태 (placeholder 이용)

  - 수정 버튼 누르면 완료

- 댓글 수정의 경우 페이지 이동 없이 해당 페이지에서 해결할 수 있도록.

- 글쓰기 도중 버튼 외의 수단으로 다른 페이지로 이동하려 할 경우, 경고창 띄우기

- 내일 목표 : 이메일 발송 (gmail / 비번찾기 / 아이디찾기 / 이메일 미인증시 로그인 방지)


0717

- 선택된 카테고리는 다른 카테고리와 다르게

> 해결 : list.css

궁금한 것

- extra의 필요성 ( + dao에서 extra를 사용하는 것이 필수적인지에 대한 유무 )

- 로그인/로그아웃 가드 작업의 필요성


0715

- 글 수정시 '카테고리 선택' 부분에서 기존 카테고리를 선택해놓고 있도록 하기

 > 해결 : selected

- 글 수정시 수정 완료 후 해당 글로 돌아오기.

> 해결

- 댓글 배치 순서 반대로

 > 해결 : ORDER BY id DESC 사용

- 댓글이 일정 글자 수 이상일 경우 alert 띄우기?

- 리스트 페이지가 일정 개수 이상이 될 경우 대비하기


0714

- 댓글 작성- 댓글 리스팅- 댓글 삭제- 댓글 수정- 로그인 한 사람만 글/댓글 작성- 글/댓글의 수정/삭제는 작성자만 가능

- 추가하고 싶은 것

  - 댓글을 작성한 후 '리스트'가 아닌 '해당 게시물'에 다시 가는 것으로.

    > 해결 : 댓글 작성 / 댓글 수정 / 댓글 삭제

    >> 추가 문제 : 값을 보내는 코드가 중복되는데 이를 줄일 수 있는 방법은 없을까?

  • 댓글 수정시 해당 위치에서 곧바로 수정할 수 있도록
// 세션은 서버에 저장되는 각 사용자(브라우저) 별 개인 저장소이다.
HttpSession session = request.getSession();

// 로그인 처리, MemberController의 doLogin에서 처리해야함
session.setAttribute("loginedMemberId", 1);

// 로그아웃
session.removeAttribute("loginedMemeberId");

// 로그인 여부 체크
int loginedMemberId = 0;
if ( session.getAttribute("loginedMemberId") != null ) {
    loginedMemberId = (int)session.getAttribute("loginedMemberId");
}

0713

- 게시물 본문에 ''가 들어가면 뷰어가 작동하지 않는데 이를 해결하라.

동영상 다시 보기!!

- 댓글 기능 구현 > 해결(닉네임이 뜨도록 / 삭제 및 수정 기능 추가)

- 문제점 발생

~ - 글 수정 기능이 markdown을 사용한 글인 경우 뷰어가 활성화되지 않음.~

> 코드 복습하기. 이걸 위한 #origin

- 기존 것 중 추가해야 하는 것

  • 삭제 및 수정에서 본인 확인

~ - write에서 폼 넓이 100%로~ > 해결 : write.jsp 71 <div id="editor1" style="width:100%">

+ jsp>java 값을 넘길 때 보이지 않아야 하는 정보는 input 태그에서 type: hidden 이용!

member

id
regDate
updateDate
loginId char(100) not null unique
loginPw char(255) not null
name char(100) not null
email char(200) not null
nickname char(100) not null

============================================================

articleReply

id INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
regDate DATETIME NOT NULL,
updateDate DATETIME NOT NULL,
articleId INT(10) NOT NULL,
`body` TEXT NOT NULL,
writerId INT(10) NOT NULL

0712

- 삭제- 수정

~ > 문제점 : id를 수정 불가능한 숫자로 만들고 넘기는 방법으로 disabled 했더니 안넘어옴~

해결 : readonly


0710

- SecSql 도입.- Article 교체 <- hit(조회수) 추가- 조회수 추가- Write에 toast 에디터 적용

~ > 문제점 : 전송 버튼이 안 눌림... 무엇을 수정해야 하는가.~

해결 : js에서 함수 이름을 제대로 확인하기!

===== 해야하는 것 =====

- 게시물 삭제기능 추가

- 게시물 수정기능 추가


0709

- Member 도입- 회원가입 기능- 로그인 기능

문제점

- 추가로 발생할 수 있는 문제 상황?

-

ID 겹침으로 인한 회원가입 실패가 발생해도 id는 증가함 (PW와 PW확인이 틀렸을 경우는 해당하지 않음.)

> 해결

-

(not null로 설정했으나) id만 쳐도, 해당 id가 기존에 존재하지 않은 id라면 회원가입이 됨.

해결

(trim().length!=0 조건 추가)

추가 문제 발생 가능성 존재 (참고 :https://offbyone.tistory.com/226)

보완할 수 있는 방법은 없을까?

해결 (join.js 추가)


0708

- 기능 적용 완료.

  • 검색>> 이해하도록 노력하기

더보기

- list.jsp의 검색 블록에서 param은 언제 생겨난 것인지.

${param.cateItemId}

vs

<%=cateItemId%>

  • SQL 오류 발생시 즉시 꺼짐 (오류 출력)

- 스프링 부트를 할 것. > 커뮤니티 사이트 제작
: 아이디/비번 찾기 할 때 이메일 발송이라던가 이런거까지 다.

- 앵귤러 > 안드로이드
** - 타입스크립트 기초**

** : https://typescript-kr.github.io/pages/tutorials/typescript-in-5-minutes.html**

** - 앵귤러 기초**

** : https://angular.kr/start**


주말 목표 (0703)

- 기능 추가

  • 검색

  • 게시글 쓰기

~ - PC 탑 바에서 article hover할 경우 category 뜨도록 >> 마지막 동영상 참고~

~ - PC 탑 바의 ul들이 게시글들에 파묻힘 >> ul을 포함하는 li의 z-index를 100으로 설정~ (해결)

  • 총 게시물 수 보이도록 수정

// 아래는 추후에

- 글 수정

- 글 삭제


+ 자바 블로그 설정

더보기

1. Properties

2. Project Facets > Dynamic Web Module 체크

3. Web Project Settings > Context root를 blog로 수정


+ 코드 수정 후 서버를 열어서 확인했는데 바꾼 코드가 적용이 안될 때 >> Ctrl+Shift+R

+ eclipse import 실패 (해결)

[

eclipse import 실패 (해결)

문제상황 : git에서 pull한 파일을 import하는데 실패 (에러창도 뜨지 않음) 문제해결 과정 1. 문제 프로젝트 폴더에서 Git Bash를 하고, ls -alh로 확인 > .classpath > .project > .settings/ > build/..

cyj42.tistory.com

](https://cyj42.tistory.com/entry/eclipse-import-%EC%8B%A4%ED%8C%A8-%ED%95%B4%EA%B2%B0)

+ 톰캣 에러 (해결)

[

톰캣 에러 (해결)

Server Tomcat v9.0 Server at localhost failed to start. 요약 : 매핑된 URL이 같은 서블릿이 두 개 이상 존재했기 때문. 참고 : http://www.newlecture.com/answeris/1

cyj42.tistory.com

](https://cyj42.tistory.com/entry/%ED%86%B0%EC%BA%A3-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0)

 

 

 

 

 

 

 

'강의' 카테고리의 다른 글

자바블로그(스프링부트) - 200803~  (0) 2020.08.03
이후  (0) 2020.07.15
블로그 만들기 (200630 문제발생 추가)  (0) 2020.06.23
게시판 2차 - JDBC (200618~200619)  (0) 2020.06.18
게시판 1차- JDBC 이용 (200616~200618)  (0) 2020.06.16