본문 바로가기
STUDY/JSP

회원가입(서블릿) - 정보수정, 게시판

by Anne of Green Galbes 2019. 2. 27.

1. 정보수정

index.jsp → updated.do → updated.jsp → updated_ok.do → index.jsp

로그인 성공시 실행 가능 → session에 customInfo(userId,userName)값이 올려져 있는 상태


① updated.do(MemberServlet.java)

○ 정보수정 화면으로 이동

○ session값 가져오기 : CustomInfo info = (CustomInfo) session.getAttribute("customInfo");

○ session에 있는 회원 아이디 정보 : info.getUserId();

○ 사용자 아이디로 회원정보를 가져온다

else if(uri.indexOf("updated.do")!=-1){

HttpSession session = req.getSession();

CustomInfo info = (CustomInfo) session.getAttribute("customInfo");

MemberDTO dto = dao.getReadData(info.getUserId());

req.setAttribute("dto", dto);

url = "/member/updated.jsp";

forward(req, resp, url);

}


② updated.jsp

○ body부분

   - form양식을 데이터 전송 → sendIt()

   - 아이디랑 이름은 변경 불가

   - 수정 전 값을 미리 넣어둔다 : value=${dto.변수명  }

<body>

<div id="bbs">

<div id="bbs_title">

정보수정

</div>

<form action="" method="post" name="myForm">

<div id="bbsCreated">

<div class="bbsCreated_bottomLine">

<dl>

<dt>아&nbsp;이&nbsp;디</dt>

<dd>${dto.userId }</dd>

</dl>

</div>

<div class="bbsCreated_bottomLine">

<dl>

<dt>이&nbsp;&nbsp;&nbsp;&nbsp;름</dt>

<dd>${dto.userName }</dd>

</dl>

</div>

<div class="bbsCreated_bottomLine">

<dl>

<dt>비밀번호</dt>

<dd>

    <input type="text" name="userPwd" value="${dto.userPwd }" size="35" maxlength="20" class="boxTF">

</dd>

</dl>

</div>

<div class="bbsCreated_bottomLine">

<dl>

<dt>생&nbsp;&nbsp;&nbsp;&nbsp;일</dt>

<dd>

<input type="text" name="userBirth" value="${dto.userBirth }" size="35" maxlength="50" class="boxTF">

</dd>

</dl>

</div>

<div class="bbsCreated_bottomLine">

<dl>

<dt>전화번호</dt>

<dd>

<input type="text" name="userTel" value="${dto.userTel }" size="35" maxlength="50" class="boxTF">

</dd>

</dl>

</div>

</div>

<div id="bbsCreated_footer">

<input type="button" value="수정하기" class="btn2" onclick="sendIt();">

<input type="button" value="수정취소" class="btn2" onclick="javascript:location.href='<%=cp%>'">

</div>

</form>

</div>

</body>

○ sendIt()함수 부분

   - 작성 정보 검사

   - updated_ok.do로 이동

<script type="text/javascript">

function sendIt(){

var f = document.myForm;

str = f.userPwd.value;

str = str.trim();

if(!str){

alert("비밀번호를 입력해주세요");

f.userPwd.focus();

return;

}

f.userPwd.value = str;

str = f.userBirth.value;

str = str.trim();

if(!str){

alert("생일을 입력해주세요");

f.userBirth.focus();

return;

}

f.userBirth.value = str;

str = f.userTel.value;

str = str.trim();

if(!str){

alert("전화번호를 입력해주세요");

f.userTel.focus();

return;

}

f.userTel.value = str;

f.action = "<%=cp%>/join/updated_ok.do";

f.submit();

}

</script>


③ updated_ok.do(MemberServlet.java)

   - session값 가져오기 : CustomInfo info = (CustomInfo) session.getAttribute("customInfo");

   - session에 있는 회원 아이디 정보 : info.getUserId();

   - dto에 값을 넣은후 데이터 수정 실행 : dao.updateDate(dto)

   - index.jsp로 이동

else if(uri.indexOf("updated_ok.do")!=-1){

HttpSession session = req.getSession();

CustomInfo info = (CustomInfo) session.getAttribute("customInfo");

MemberDTO dto = new MemberDTO();

dto.setUserId(info.getUserId());

dto.setUserPwd(req.getParameter("userPwd"));

dto.setUserBirth(req.getParameter("userBirth"));

dto.setUserTel(req.getParameter("userTel"));

dao.updateData(dto);

url = cp+"/index.jsp";

resp.sendRedirect(url);

}


결과

○ index.jsp → updated.do → updated.jsp 화면

   회원정보가 미리 들어가 있음 : value=${dto.변수명 }

○ 회원정보 수정 

    updated.jsp → updated_ok.do

○ 수정 완료

    updated_ok.do → index.jsp

○ 정보 수정 확인


2. 게시판 작성

○ session영역 : 프로젝트(study)에서는 어디서든 사용 가능

    → customInfo를 sboard에서도 사용 가능

○ 게시판 열람은 로그인 여부와 상관 없이 가능

○ 게시판 작성은 로그인 시에만 가능

① BoardServlet.java에서 created.do수정

if(uri.indexOf("created.do")!=-1){

HttpSession session = req.getSession();

CustomInfo info = (CustomInfo)session.getAttribute("customInfo");

if(info==null){

url = "/member/login.jsp";

forward(req, resp, url);

return;

}

url = "/sboard/created.jsp";

forward(req, resp, url);

}



○ 게시판 작성시 작성자에 사용자 이름이 들어가도록 설정

sboard > created.jsp 수정

<div class="bbsCreated_bottomLine">

<dl>

<dt>작성자</dt>

<dd>

<input type="text" name="name" size="35" value="${sessionScope.customInfo.userName }" maxlength="20" class="boxTF"/>

</dd>

</dl>

</div>


결과

○ 게시판 화면

○ 로그인 하지 않은 상태에서 글 올리기 클릭 → 로그인 화면으로 이동

   sboard/list.jsp → login.do → login.jsp

○ 로그인 상태에서 글 올리기 클릭시

○ 등록하기 클릭 시


댓글