2025.11.05
아침 리마인딩
index.jsp에서 li태그 추가 후 a 태그를 이용하여 클릭 시 memberFind.jsp로 이동할 수 있도록 함.
member폴더에 memberFind.jsp파일 생성 후 head태그 안에 css파일 link하고 body 태그 안에 코드를 복사 붙여 넣는 방식의 include 디렉티브를 이용하여 header.jsp와 footer.jsp 파일 불러오기
main태그 열고 section 태그 열고 h2태그 이용해서 회 원 검 색이라는 제목을 추가 그 후 article태그 열고 form태그 열고 form 태그의 이름을 memberFind로 지정 후 fieldset 열고 legend에 “회원검색” 추가 후 select 태그를 열고 이름을 findkey로 지정 후 option태그 두 개를 열고 하나는 아이디 value=”id” 또 다른 하나는 이름 value=”name”으로 지정 그 후 input 태그를 이용해서 텍스트필드와 submit 버튼 생성
실제 컨텐츠가 출력 되는 곳을 article을 열어 서 잡고 <hr>태그를 이용해 구분선을 추가하고 메세지 추가
기능 구현을 위해 MemberDAO 페이지로 이동해서 검색 관련 메서드 생성
결과를 처리해주는 resert.jsp로 이동
<쿼리스트링으로 값 전달>
loclahost:9090/myweb/member/result.jsp?findkey=id&findvalue=tjwnsqja
loclahost:9090/myweb/member/result.jsp?findkey=name&findvalue=서준범
검색 버튼을 눌렀을 때는 “위 검색란에 검색어를 입력해 주세요.” 라는 메세지 대신 결과가 출력 될 수 있게 해야 함.
이 때 웃긴게 뭐냐면 include 액션태그는 requst를 공유해버림
이게 무슨 말 이냐면 result.jsp페이지에서 request.getParameter()를 이용해서 검색조건, 검색내용의 값을 받는데 이게 include 액션태그를 안 쓰면 못 받아오는거고 쓰면 request객체를 공유함으로 requst.getParameter를 쓸 수 있는것.
request.setCharacterEncoding(”utf-8”); 을 memberFind.jsp와 result.jsp 두 개의 페이지 최 상단에 지정 해줘야 함.
요즘에는 비밀번호를 잊었을 때, 예전처럼 비밀번호를 그대로 알려주는 방식이 아니라 비밀번호를 초기화하는 방식으로 진행된다.
그 이유는 서비스 업체(서버 측)에서도 사용자의 비밀번호 원본을 알 수 없도록 암호화해서 저장하기 때문이다.
즉, 비밀번호 데이터는 서버에 존재하지만, 그 내용이 복호화(원래대로 되돌리기) 할 수 없게 만들어져 있기 때문에 업체조차 알 수 없다.
이러한 암호화 방식은 크게 단방향 암호화와 양방향 암호화로 나뉜다.
단방향 암호화는 한 번 암호화하면 다시 복호화할 수 없는 방식으로, 주로 비밀번호 저장에 사용된다.
대표적인 단방향 알고리즘에는 MD5(128bit), SHA-1(160bit), SHA-256(256bit) 등이 있으며,
현재는 보안 수준이 가장 높은 SHA-256 방식이 일반적으로 사용된다.
자바에서는 java.security 패키지에서 제공하는 MessageDigest 클래스를 이용해 이런 단방향 암호화를 구현할 수 있다.
이 클래스는 암호화(해시)를 처리해주는 표준 도구이며, 주요 메서드는 세 가지가 있다.
첫 번째는 getInstance("방식") 메서드로, "SHA-256"이나 "MD5"처럼 어떤 암호화 방식을 사용할지를 지정한다.
두 번째는 update(byte[]) 메서드로, 암호화할 데이터를 바이트 형태로 전달한다.
세 번째는 digest() 메서드로, 암호화 계산이 완료된 결과(즉, 해시값)를 바이트 배열 형태로 반환한다.
예를 들어 "honggil"이라는 문자열을 SHA-256 방식으로 암호화하면,
원본 문자열이 사람이 알아볼 수 없는 긴 16진수 문자열로 변환된다.
이 결과는 다시 복호화할 수 없으며, 같은 문자열이라도 매번 동일한 결과를 출력하기 때문에
비밀번호 검증 시에는 입력한 비밀번호를 동일한 방식으로 암호화한 뒤,
DB에 저장된 해시값과 비교하는 방식으로 인증을 처리한다.
결론적으로, 비밀번호를 안전하게 관리하기 위해
기업에서는 MessageDigest 클래스를 사용해 SHA-256 같은 단방향 암호화 알고리즘으로 비밀번호를 변환하여 저장하며,
이로 인해 사용자의 비밀번호를 직접 볼 수 없게 되어 보안성이 크게 향상되었다.
1. getInstance("암호화 방식") :
2. update(byte[]) :
3. digest() :
for(요소를 담을 변수:배열객체){
}