Servlet쇼핑몰5: 회원정보조회

main.jsp 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<%//1.한글처리, 파라미터 
request.setCharacterEncoding("UTF-8");
String id = (String) session.getAttribute("id");//objectstring으로 다운캐스팅
String name = request.getParameter("name");
//1-1. id없이는 진입불가, id없는 경우 로그인페이지로 이동. 가상주소로 이동
if(id == null){
response.sendRedirect("./MemberLogin.me");
}
%>

<h3>아이디: <%=id %></h3>
<h3>아이디(session-EL표현식) : ${ sessionScope.id } </h3>

<input type="button" value="ITWILL게시판가기" class="btn" onclick="location.href='../board/boardList.jsp'">
<input type="button" value="회원정보조회" class="btn" onclick="location.href='./MemberInfo.me'">
<input type="button" value="회원정보수정" class="btn" onclick="location.href=''">
<input type="button" value="로그아웃" class="btn" onclick="location.href='./MemberLogout.me'">
<input type="button" value="회원탈퇴" class="btn" onclick="location.href=''">

<!-- 관리자일때만 메뉴확인가능 -->
<% if(id != null){
if(id.equals("admin")){ %>
<input type="button" value="회원전체목록(관리자용)" class="btn" onclick="location.href=''">
<%
}
}
%>




MemberFrontController.java의 doProcess()메서드 추가 코드작성

  • 회원정보조회페이지 가상경로 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
		//13. 회원정보조회
}else if(command.equals("/MemberInfo.me")){
System.out.println("@@@@ Controller : 가상주소 /MemberInfo.me 실제주소: ./member/memberInfo.jsp");
action = new MemberInfoAction();
try {
forward = action.execute(req, resp);
} catch (Exception e) {
e.printStackTrace();
}
}

//7.페이지이동 : 두가지방식
if(forward != null){
System.out.println("@@@페이지이동@@@");
if(forward.isRedirect()){//1 - response.sendRedirect(주소)사용
//정보는 ActionForward객체 안에 있다
System.out.println("sendRedirect방식의 이동"+forward.getPath());
resp.sendRedirect(forward.getPath());
}else{ //0 - forward사용
System.out.println("RequestDispatcher방식의 이동"+forward.getPath());
RequestDispatcher dis = req.getRequestDispatcher(forward.getPath());
dis.forward(req, resp);
}
}
}//end of doProcess




MemberInfoAction.java 생성

  • 회원정보조회 페이지 생성

    우선순위

    1. DB에서 정보가져오기
    2. DB정보를 가지고 .jsp페이지로 이동

순서

1. 세션값을 가져오기        
2. DAO객체 생성하여 DB정보가져오기 (MemberBean)
3. `.java` --request객체로 데이터를 전달--> `.jsp`
    - session에 담아써도 괜찮지만 데이터가 필요없는 순간에도 session 이 살아있는 한 데이터를 가지고 다녀야할수있다.
    - 따라서  request객체를 사용하는 것이 더 올바르다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class MemberInfoAction implements Action {

@Override
public ActionForward execute(HttpServletRequest req, HttpServletResponse resp) throws Exception {
System.out.println("@@@@ Action: MemberInfoAction안의 execute() 실행됨");
//1. 한글처리
req.setCharacterEncoding("UTF-8");
//2.세션값을 가져오기
HttpSession session = req.getSession();
String id = (String) session.getAttribute("id");

//2-1.id값이 없으면 로그인페이지로 이동
ActionForward forward = new ActionForward();
if(id == null){
//resp.sendRedirect("./MemberLogin.me");
forward.setPath("./MemberLogin.me");
forward.setRedirect(true); //주소가 바뀌니까 false가 아니라 true임
return forward; //아이디가 없으면 retrun을 통해서 아래 코드는 실행되지않는다.
}

//3.DAO객체 생성하여 DB정보가져오기 (MemberBean)
MemberDAO mdao = new MemberDAO();
MemberBean mb = mdao.getMember(id);

//4. .java --request객체로 데이터를 전달--> .jsp
//session에 담아써도 괜찮지만 데이터가 필요없는 순간에도 session 이 살아있는 한 데이터를 가지고 다녀야할수있다.
//따라서 request객체를 사용하는 것이 더 올바르다
req.setAttribute("memberBean", mb);
forward.setPath("./member/memberinfo.jsp");
forward.setRedirect(false);
return forward;
}
}




MemberInfo.jsp 생성

  • jsp표현식을 사용해도되고 EL표현식으로 사용해서 가져와도 됨.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<%//회원정보를 DB에서 가져와서 페이지에 출력
//1. 한글설정 & 변수생성
String id = (String) session.getAttribute("id");//object이기에 형변환필수
//1-1.id값확인 -없으면 로그인페이지로 이동
if(id == null){
response.sendRedirect("./MemberLogin.me");
}
//2. 멤버DAO객체 생성 -> 회원정보 가져오는 메서드생성
MemberBean mb = (MemberBean) request.getAttribute("memberBean");
//3. 데이터처리 : 테이블로 표현
if(mb != null){
%>


<h2>마이페이지</h2>
<table border="1">
<tr>
<td>아이디</td>
<td>${memberBean.id }</td>
</tr>
<tr>
<td>비밀번호</td>
<td>${memberBean.pw }</td>
</tr>
<tr>
<td>이름</td>
<td>${memberBean.name }</td>
</tr>
<tr>
<td>나이</td>
<td>${memberBean.age }</td>
</tr>
<tr>
<td>성별</td>
<td>${memberBean.gender }</td>
</tr>
<tr>
<td>이메일</td>
<td>${ requestScope.memberBean.email }</td>
</tr>
<tr>
<td>회원가입일</td>
<td>${memberBean.reg_date }</td>
</tr>
</table>
<%
}
%>
<hr>
<input type="button" value="뒤로가기" onclick="location.href='./Main.me'">




MemberDAO.java의 getMember()메서드 추가 코드 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//5. 회원정보 가져오는 메서드 getMember:회원정보 전부 리턴 -> 테이블에 추가
public MemberBean getMember(String id){
MemberBean mb = null; //객체 레퍼런스 생성
//왜 null인가? 정보가 생성되는 시점은 rs에 있을때이다.
//따라서 rs가 없을땐 굳이 만들필요가 없다.

try{
//5-1. 드라이브로드 디비연결
con = getCon();
//5-2. SQL & pstmt 생성
sql = "select * from itwill_member where id=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
//5-3. 실행 -> rs저장
rs = pstmt.executeQuery();
//5-4. 데이터처리 : DB에 있는 회원정보 저장 후 memberinfo페이지로 전달
//DB의컬럼명을 입력할 것
if(rs.next()){
mb = new MemberBean();
mb.setId(rs.getString("id"));
mb.setPw(rs.getString("pw"));
mb.setName(rs.getString("name"));
mb.setAge(rs.getInt("age"));
mb.setEmail(rs.getString("email"));
mb.setGender(rs.getString("gender"));
mb.setReg_date(rs.getTimestamp("reg_date"));
}
System.out.println("@@@@ DAO : 회원정보저장완료"+mb);
}catch (Exception e) {
e.printStackTrace();
} finally { //5-5. 자원해제
closeDB();
}
return mb;
}//getMember닫힘