목차
1. Spring 회원관리: 로그인 관련 / 정보 수정 / 회원 탈퇴
2. 검색 기능이 있는 게시판
1. Spring 회원관리: 로그인 관련 정보 수정 / 회원 탈퇴
1) 등록한 이메일로 비밀번호 찾기
- 회원의 정보(ex. 아이디와 이름)를 입력하고 입력한 정보와 일치하는 회원을 찾는다.
- 회원 정보가 일치하면 회원가입 때 입력했던 이메일로 비밀번호를 전송한다.
2) 로그인
- 아이디와 비밀번호 값을 받고, 아이디와 일치하는 회원이 있는지, 회원이 존재하면 비밀번호가 맞는지 등을 비교한다.
- 회원 인증에 성공하면 session 값을 공유한다.
- session 객체는 메소드의 매개변수에서 생성 가능하다.
- 로그인 후에는 메인 화면이나 마이페이지 화면 등으로 이동한다.
3) 로그아웃
- 로그아웃 버튼을 누르면 세션 값을 삭제시킨다.
- 로그아웃이 되면 메인 화면 또는 로그인 화면으로 이동한다.
• 예시
1
2
3
4
5
6
7
|
// 로그아웃
@RequestMapping("member_logout.nhn")
public String logout(HttpSession session) {
session.invalidate();
return "member/member_logout";
}
|
cs |
4) 정보 수정
- 정보 수정을 하기 위해서는 공유된 세션 아이디 값으로 한 명의 회원 정보를 구해온다.
- 구해온 정보를 수정 폼으로 가지고 넘어간다.
- 수정된 값을 다시 받아서 update sql문을 실행시킨다.
- 첨부파일을 수정하지 않는 경우 null 값이 되기 때문에, 기존 첨부파일명을 가져와서 저장시켜야 한다.
- 첨부파일 기능이 있는 경우, 컨트롤러에서 MultipartRequest 객체로 값을 받는다.
5) 회원 탈퇴
- 테이블에 state 같은 컬럼을 만들어서 가입할 때는 1 탈퇴할 때는 2번으로 설정할 수 있다.
- 회원 탈퇴 버튼을 클릭하면 실제로는 delete sql문이 아닌 update sql문을 실행시키고, state 컬럼을 2로 수정한다.
- 회원이 업로드한 프로필 이미지(첨부파일)은 파일 객체를 생성해서 삭제시킨다.
- 업로드 폴더의 경로를 구할 때, request 객체를 이용하면 request.getContextPath()로 구하고, session 객체로는 session.getServletContext()로 구할 수 있다.
- 회원정보를 업데이트 시킨 다음에 공유된 세션 값을 삭제시킨다.(ex. session.invalidate(); )
*첨부파일 중복 문제 해결 (RandomFile.java 파일)
- cos 라이브러리는 파일 이름이 중복되는 것을 자동으로 처리해주지만, commons-fileupload 라이브러리는 중복 파일 처리 기능이 없다.
- 따라서 UUID 클래스로 난수를 발생시켜서 파일명을 저장시켜 문제를 해결할 수 있다.
• 난수 발생 예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import java.util.UUID;
public class RandomFile {
public static void main(String[] args) {
// TODO Auto-generated method stub
String filename = "clock.jpg";
String extension = filename.substring(filename.lastIndexOf("."), filename.length());
System.out.println("extension:"+extension);
UUID uuid = UUID.randomUUID();
System.out.println("uuid:"+uuid);
String newfilename = uuid.toString() + extension;
System.out.println("newfilename:"+newfilename);
}
}
|
cs |
2. 검색 기능이 있는 게시판
1) 환경설정: root-context.xml
- root-context.xml에서 DB 연결을 할 때, 커넥션 풀을 이용하려면 ComboPooledDataSource 클래스를 사용하면 되는데, 이 클래스를 사용하려면 pom.xml 파일에 ‘commons-dbcp' 라이브러리와 ‘c3p0’ 라이브러리 코드를 추가해야 한다.
2) 동적 SQL
- 검색 기능에는 동적 SQL(쿼리)이 사용된다.
• 예시
1
2
3
4
5
6
7
8
9
10
11
12
|
<select id="getTotal" parameterType="board" resultType="int">
select count(*) from board
<where>
<if test="keyword != null and search !='subcon'">
${search} like '%'||#{keyword}||'%'
</if>
<if test="keyword != null and search=='subcon'">
subject like '%'||#{keyword}||'%' or
content like '%'||#{keyword}||'%'
</if>
</where>
</select>
|
cs |
3) 글 목록 구하기
- 글 목록을 구할 때 기본 변수를 생성자의 매개변수로 받고 나머지 변수를 만드는 클래스를 따로 만들어서 호출할 수 있다.
4) 글 삭제
- 글 삭제시 delete가 아닌 update를 수행해서 del 컬럼의 값을 n에서 y로 수정한다.
- 게시글 목록에서 삭제된 글은(del 컬럼의 값이 y이 글) ‘삭제된 게시글입니다’와 같이 표시하고 링크를 걸지 않는다.
'Spring' 카테고리의 다른 글
99일차: Spring Ajax 댓글 게시판(2)_2021.11.08 (0) | 2021.11.08 |
---|---|
98일차: Spring 검색 게시판 / Ajax 댓글 게시판_2021.11.05 (0) | 2021.11.05 |
96일차: Spring 댓글 게시판(수정, 삭제) / 이메일 인증 / 회원 관리_2021.11.03 (0) | 2021.11.03 |
95일차: Spring 게시판 글 수정, 글 삭제 / 댓글 게시판_2021.11.02 (0) | 2021.11.02 |
94일차: Spring 게시판 환경 설정 / 글 작성 / 글 목록 / 상세 페이지_2021.11.01 (0) | 2021.11.01 |