프롬프트 AI&OpenAPI&공공데이터를 활용한 웹앱개발자 양성 과정 31일차

서명원·2024년 1월 22일

1. 브라우저 단축키팁

Ctrl+u
페이지 소스 보기


2. 과제: list 및 detail 기능

반성점 1. 내가 구현한 코드에선 for문으로 단순 구현 하였는데, 실제로 순회중인 index가 필요 없는 상황이었으므로 for-each를 사용하는 것이 더 합리적이다.

request, response를 서블릿에서 jsp로 넘겨줌.
jsp에서는 forward로 받았기에 그냥 사용 가능

반성. foreach알면서 그냥 적었다.
그냥 나온다고 완성됬다고 생각하지 말고 한발 더 들어갈 것.

반성2. 디테일 기능 추가하면서 자연스럽게 list에서 디테일쪽으로 링크를 추가하는 것을 고려 했어야했다.

잘했다고 생각하는 점: 예외사항에 대한 가벼운 벨리데이션 체크를 넣어줬다. 다만 alert로 에러메시지를 표시하는 등 고민을 더 했으면 좋았을것 같다.


3. 상대 경로에 대해서


www로 시작하는 naver링크로 a태그를 만들면, 현재 url로부터 www.naver.com을 찾으려고 하므로 404에러가 발생한다.
만약 도중에 다른 사이트 주소를 넣고싶다면 https부터 시작하는 절대 경로 넣어줄 것.


4. sql injection

응용 프로그램 보안 상의 허점을 의도적으로 이용해, 악의적인 SQL문을 실행되게 함으로써 데이터베이스를 비정상적으로 조작하는 코드 인젝션 공격 방법

간단한 예시)password=' OR 1=1


5. 과제: delete 기능 개발

내가 구현한 코드

생각 못한점
1. 뒤로가기 했을때 이미 삭제한 열이 되살아남
2. forward 처리한 탓에 새로고침하면 list를 보여주는데 보내지는 명령어는 delete임.

강사님의 구현:

			response.getWriter()
					.append(String.format("<script>alert('%d번 글이 삭제되었습니다.'); location.replace('list');</script>", id));

6. 과제: pagenation 기능 개발

1차시도

문제점: startPage의 공식이 잘못되었다. 예를들어 1~10까지 보여줘야되는 상황일 때,
10페이지로 요청을 보내면 시작 페이지가 1이아니라 10으로 넘어가버렸다.
일단 페이지 블록이라는 힌트를 얻어 다음과 같이 개선하였다.

구현후 다른 블러그와 비교해보니, 다음과 같은 글을 확인할 수 있었다.
삼항연산자까지 써서 두줄로 풀어낸 총페이지 개수와 화면에 보여질 페이지 그룹이,
천장값이라는 한단어로 간단히 정리될 수 있다는건 반성점이다.

출처: https://yonghwankim-dev.tistory.com/578

profile
백엔드 취업을 꿈꾸는 일본어 전공자

0개의 댓글