반응형
Editmyinfo는 Index 가 아닌 myinfo.jsp 에서 접근한다.
myinfo.jsp
내 정보보기 - 내 정보 수정으로 접근한다. id를 받아와 Editmyinfo 페이지로 전달한다.
?id${m.id} : 해당 경로에서 이 아이디로 접근해라.
<a href = "/webApp2/Editmyinfo?id=${m.id }">내 정보 수정</a>
Editmyinfo.java - doGet
Editmyinfo 로 이동하여 doGet 메서드를 실행한다.
아래의 경로 때문에 때문에 doGet을 먼저 실행한다.
RequestDispatcher dis = request.getRequestDispatcher("/member/edit.jsp");
메서드를 모두 실행하고 edit.jsp 로 이동한다.
package member.controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import member.MemberService;
import member.MemberVo;
/**
* Servlet implementation class Editmyinfo
*/
@WebServlet("/Editmyinfo")
public class Editmyinfo extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Editmyinfo() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
//수정폼 요구함
//폼에 기존 데이터 출력 => 검색
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String id = request.getParameter("id");
//db에서 id로 검색
//검색하려면 서비스 객체 필요
MemberService service = new MemberService();
MemberVo vo = service.getMember(id); //id 로 검색하는 메서드 getMember
//검색 결과를 request 에 담는다
// request 에 정보 담는 setAttribute
request.setAttribute("m", vo); //vo 객체를 뷰페이지에서는 m이라고 부름
//forward ()로 /member/edit.jsp로 이동
//forward 로 이동하려면 requestdispatcher 로 가져가야함.
//가져갈 때 request 받은 m을 가져가야한다.
RequestDispatcher dis = request.getRequestDispatcher("/member/edit.jsp");
dis.forward(request, response);
}
edit.jsp
edit.jsp 를 실행해 클라이언트에게 수정된 값을 받는다.
이때, ID와 EMAIL은 readonly 를 이용해 수정할 수 없고 읽기 전용으로 지정한다.
수정폼 을 제출하면 method doPost로 이동한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>수정폼</h3>
<form action="/webApp2/Editmyinfo" method="post">
<table border="1">
<!-- value 는 현재 입력양식에 입력된 값. // readonly 속성은 수정불가 -->
<tr><th> ID </th><td><input type = "text" name = "id" value="${m.id }" readonly></td></tr>
<tr><th> PWD </th><td><input type = "password" name = "pwd" value="${m.pwd }"></td></tr>
<tr><th> NAME </th><td><input type = "text" name = "name" value="${m.name }"></td></tr>
<tr><th> EMAIL </th><td><input type = "text" name = "email" value="${m.email }" readonly></td></tr>
<tr><th> 수정 </th>
<td><input type = "submit" value = "수정">
<input type = "button" value = "취소" onclick = "javascript:location.href='/webApp2/index.jsp'"></td></tr>
</table>
</form>
</body>
</html>
Editmyinfo.java - doPost
doPost에서는 getparameter를 이용해 수정된 값들을 받아와 MemberVo 에 넣어준다.
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
//수정완료 요구
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//edit.jsp 의 값들을 받아오기
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
String name = request.getParameter("name");
// String email = request.getParameter("email");
MemberService service = new MemberService();
service.editMyInfo((new MemberVo(id,pwd,name,"")));
//get 방식 요청
response.sendRedirect("/webApp2/MyInfo?id="+ id);
}
}
반응형