0. /Servers/server.xml 수정
- 한글이 계속 깨질 경우 한글 안 깨지게
server.xml에 추가
URIEncoding = "UTF-8"
-- jsp의 pageEncoding 과 값 맞추기 (UTF-8 이나 EUC-KR 중 하나로 통일)
- Servlet의 doGet()에 추가
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
-- jsp의 pageEncoding 과 srver.xml과의 값 맞추기 (UTF-8 이나 EUC-KR 중 하나로 통일)
1. 홈화면 ( index.jsp ) ---> 2. 회원가입 / 3. id 검색
- 각 기능을 구현한 Servlet 주소로 이동시킴
--> 링크 이동은 get 방식임. (doGet() 실행)
- 입력값을 가지고 가야할 때는 form action, submit 꼭 필요함.
<%@ 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>webApp2</h3>
<!-- 링크 이동은 get 방식 => doGet 실행 -->
<!-- "Servlet 주소" -->
<!-- 2. 회원가입 -->
<a href="/webApp2/Join">회원가입</a><br/>
<!-- 3. id 검색 -->
<form action="/webApp2/MyInfo" method="post">
검색할 id:<input type="text" name="id">
<input type="submit" value = "검색">
</form>
</body>
</html>
2. 회원가입 (Join.java)
(1) doGet() -- 회원가입 폼을 줌.
RequestDispatcher 변수명 = request.getRequestDispatcher("이동할 페이지 경로");
-- request, response 객체를 가지고 페이지를 이동하는 객체
변수명.forward(request, response);
-- 서버 내에서 사용하던 request, response객체를 가지고 페이지 이동
-- 새로고침해도 똑같은 양식으로 남아있어서 같은 동작을 반복함. (중복 회원가입, 중복 계좌이체 같은 느낌)
(2) join.jsp 에서 사용자가 폼 양식을 채워서 submit 버튼 누름
(3) doPost() -- 사용자가 입력한 데이터를 DB에 넣고(회원가입완료) 홈화면(index.jsp)로 돌아감.
response.sendRedirect("돌아갈 페이지 경로");
-- 클라이언트에게 페이지를 새로 요청하도록 시킴.
-- 이전에 저장한 데이터 모두 없어짐.
▼ Join (servlet) -- (1), (3)
@WebServlet("/Join") // 이 페이지를 접근할 때 쓸 경로. 웹 용 url
public class Join extends HttpServlet {
private static final long serialVersionUID = 1L;
public Join() {
super();
}
// 2-1. join.jsp으로 이동해서 회원가입 폼을 주고 양식을 채우게 함.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// request, response 객체를 가지고 뷰 페이지로 이동
// forward는 같은 서버에서 이동하기 때문에 /webApp2/ 쓸 필요 없음.
RequestDispatcher dis = request.getRequestDispatcher("/member/join.jsp");
dis.forward(request, response);
}
// 2-2. join.jsp에서 submit을 하면 DB에 저장하고 회원가입 완료함.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 회원가입 폼에 입력한 값을 변수에 담기
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
String name = request.getParameter("name");
String email = request.getParameter("email");
// 파라메터로 받은 값을 DB에 넣음
MemberService service = new MemberService();
service.join(new MemberVo(id, pwd, name, email));
// 회원가입 완료되면 홈화면 가기
// redirect 는 외부에서 접근하기 때문에 /webApp2/ 필요함
response.sendRedirect("/webApp2/index.jsp");
}
}
▼ join (jsp) -- (2)
<%@ 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/Join" method="post">
<table border="1">
<tr><th>ID</th><td><input type="text" name="id"></td></tr>
<tr><th>PWD</th><td><input type="password" name="pwd"></td></tr>
<tr><th>NAME</th><td><input type="text" name="name"></td></tr>
<tr><th>EMAIL</th><td><input type="text" name="email"></td></tr>
<tr><th>가입</th><td><input type="submit" value="가입"></td></tr>
</table>
</form>
</body>
</html>
3. ID 검색 (MyInfo.java) ---> 4. 수정 / 5. 탈퇴
(1) index.jsp(홈화면)에서 id를 입력함 -> doPost() 실행 ...... 입력값이 있으니까 보안을 위해
(2) doGet() 호출
doGet(request, response);
(3) doGet() -- id값을 읽어와서 Service 메소드로 검색, myinfo.jsp(뷰 페이지)로 보내기
String 변수명 = request.getParameter("읽어올 input name");
-- 입력한 id값 읽어오기
request.setAttribute("뷰페이지에서 부를 이름", 값);
-- 속성 설정 메소드
-- 여러 페이지를 담고 싶으면 session
(4) myinfo.jsp 에서 doGet()에서 검색한 내정보 보여주기
${뷰페이지에서 부를 이름.input_name }
--el 표현식: 자바에서 쓰던 변수를 뷰페이지에서 쓰게 해줌.
-- 멤버변수이름을 보면 자동으로 getter 호출함. (id -> getId())
-- VO에 setter getter 추가해야 자동 호출 가능
"url경로 ? 파라메터이름=값 & 파라메터이름=값 & .. "
-- 폼파라메터를 get 방식으로 전달할 수 있음
▼ Myinfo (servlet) -- (2), (3)
@WebServlet("/MyInfo") // id로 검색하는 Servlet
public class MyInfo extends HttpServlet {
private static final long serialVersionUID = 1L;
public MyInfo() {
super();
}
// 3. ID 검색
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String id = request.getParameter("id"); //id값 읽어오기
MemberService service = new MemberService();
MemberVo m = service.getMember(id); //id로 검색
//검색한 결과를 request에 담는다. -- 여러 페이지를 담고 싶으면 session
request.setAttribute("m", m);
RequestDispatcher dis = request.getRequestDispatcher("/member/myinfo.jsp");
dis.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
▼ join (jsp) -- (2)
<%@ 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>
<!-- doGet()에서 id로 검색해 온 정보 보여주기 -->
<h3>${m.id }님의 정보</h3>
id: ${m.id }<br/>
pwd: ${m.pwd }<br/>
name: ${m.name }<br/>
email: ${m.email }<br/>
<!-- 4. 수정 -->
<input type="button" value="내정보수정"
onclick="location.href='/webApp2/Editmyinfo?id=${m.id }'"><br/>
<!-- 5. 탈퇴 -->
<a href="/webApp2/Delmyinfo?id=${m.id }"
onclick="javascript:alert('탈퇴하셨습니다.')">탈퇴</a><br/>
</body>
</html>
4. 내 정보 수정 (Editmyinfo.java)
(1) 내 정보(myinfo.jsp)에서 수정 버튼을 누름 -- Editmyinfo.java (servlet)에 id 값을 가지고 감.
<input type="button" value="내정보수정" onclick="location.href='/webApp2/Editmyinfo?id=${m.id }'">
(2) doGet() -- 가져온 id값으로 Service에서 검색한 후 검색 결과(수정 전 데이터)를 edit.jsp(수정폼)으로 이동
(3) edit.jsp 에서 수정 전 데이터가 담긴 수정폼을 보여줌.
readonly
-- 읽기만 가능함. 값 수정 불가.
(4-1) edit.jsp에서 취소 ==> 홈화면(index.jsp)으로 돌아감.
(4-2) edit.jsp에서 수정(submit) ==> Editmyinfo.java (servlet)에서 doPost() 실행
(5) doPost() -- 수정에 필요한 값을 가져와 Service의 수정메소드 실행 -> 수정된 내정보 보여주기(Myinfo.java)
▼ Editmyinfo (servlet) -- (2), (5)
@WebServlet("/Editmyinfo")
public class Editmyinfo extends HttpServlet {
private static final long serialVersionUID = 1L;
public Editmyinfo() {
super();
}
// 수정폼 요구
// 폼에 기존 데이터 보여주고 싶음 => 검색 필요
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 폼 파라메터 값을 불러와 변수에 담기
String id = request.getParameter("id");
// db에서 id로 검색
MemberService service = new MemberService();
MemberVo vo = service.getMember(id);
// 검색결과를 request에 담는다
request.setAttribute("m", vo); //vo객체를 뷰페이지에서는 m이라고 부름
// forward()로 /member/edit.jsp로 이동
RequestDispatcher dis = request.getRequestDispatcher("/member/edit.jsp");
dis.forward(request, response);
}
// 수정 완료 요구
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
String name = request.getParameter("name");
MemberService service = new MemberService();
service.editMyInfo(new MemberVo(id, pwd, name, ""));
response.sendRedirect("/webApp2/MyInfo?id="+id); //내 정보 보여주기
}
}
▼ edit (jsp) -- (3), (4)
<%@ 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">
<tr><th>ID</th><td><input type="text" name="id" value="${m.id }" readonly></td></tr>
<tr><th>PWD</th><td><input type="text" 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>
5. 탈퇴 (Delmyinfo.java)
(1) 내 정보(myinfo.jsp)에서 삭제 링크 누름 -- Delmyinfo.java (servlet)에 id 값을 가지고 감.
<a href="/webApp2/Delmyinfo?id=${m.id }" onclick="javascript:alert('탈퇴하셨습니다.')">탈퇴</a>
(2) alert로 '탈퇴하셨습니다' 문구 뜸
onclick = "javascript : alert('문구')"
(3) doGet() -- 가져온 id 값을 Service에서 검색한 후 삭제 -> 홈화면(index.jsp)으로 감
▼ Delmyinfo (servlet) -- (3)
@WebServlet("/Delmyinfo")
public class Delmyinfo extends HttpServlet {
private static final long serialVersionUID = 1L;
public Delmyinfo() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 폼 파라메터 값을 불러와 변수에 담기
String id = request.getParameter("id");
// db에서 id로 검색해서 삭제
MemberService service = new MemberService();
service.delMember(id);
response.sendRedirect("/webApp2/index.jsp");
}
}
0. 총 코드
* dbconn
package conn;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
//싱글톤
public class DBConnect {
private static DBConnect dbconn = new DBConnect();
// @db서버주소:리스너번호/sid
// localhost : 내 컴퓨터 // 프로젝트 시 ip주소
private String url = "jdbc:oracle:thin:@localhost:1521/xe";
private DBConnect() {}
public static DBConnect getInstance() {
return dbconn; // 모든 db작업을 이 conn 객체로 실행
}
//db 연결할 때 쓰는 클래스. Connection 타입으로 반환.
public Connection conn() {
try {
//드라이버 로드
Class.forName("oracle.jdbc.OracleDriver");
//세션수립 (로그인)
return DriverManager.getConnection(url, "hr", "hr");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
* MemberVo
package member;
public class MemberVo {
private String id;
private String pwd;
private String name;
private String email;
public MemberVo() {}
public MemberVo(String id, String pwd, String name, String email) {
super();
this.id = id;
this.pwd = pwd;
this.name = name;
this.email = email;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "내 정보 [id=" + id + ", pwd=" + pwd + ", name=" + name + ", email=" + email + "]";
}
}
* MemberDao
package member;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import conn.DBConnect;
public class MemberDao {
private DBConnect dbconn;
public MemberDao() {
dbconn = DBConnect.getInstance();
}
// (primary key) id로 검색 (1 or 0개 검색)
public MemberVo select(String id) {
MemberVo vo = null;
Connection conn = dbconn.conn();
String sql = "select * from member1 where id = ?";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
ResultSet rs = pstmt.executeQuery(); // select 실행
if (rs.next()) { // 첫 줄로 이동하여 데이터 있는지 확인
vo = new MemberVo(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return vo;
}
// insert (회원가입)
public void insert(MemberVo vo) {
Connection conn = dbconn.conn();
String sql = "insert into member1 values(?, ?, ?, ?)";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, vo.getId());
pstmt.setString(2, vo.getPwd());
pstmt.setString(3, vo.getName());
pstmt.setString(4, vo.getEmail());
int num = pstmt.executeUpdate();
System.out.println(num + "줄이 추가되었습니다.");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
// update (id -> pwd, name)
public void update(MemberVo vo) {
Connection conn = dbconn.conn();
String sql = "update member1 set pwd = ?, name = ? where Id = ?";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, vo.getPwd());
pstmt.setString(2, vo.getName());
pstmt.setString(3, vo.getId());
int num = pstmt.executeUpdate();
System.out.println(num + "줄이 수정되었습니다.");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
// delete (id)
public void delete(String id) {
Connection conn = dbconn.conn();
String sql = "delete member1 where Id = ?";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
int num = pstmt.executeUpdate();
System.out.println(num + "줄이 삭제되었습니다.");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
★ MemberService
package member;
import java.util.Scanner;
//입력을 view 페이지에서 받을거라 코드가 간결해짐
//Service: 기능 제공 클래스
//컨트롤러(Servlet)에 요청이 오면 그 요청을 처리할 기능 구현
// => Service 에 메서드로 구현
public class MemberService {
private MemberDao dao;
public MemberService() {
dao = new MemberDao();
}
// 파라메터에 사용자 입력값 있음
public void join(MemberVo vo) { // 회원가입
dao.insert(vo);
}
// 파라메터로 id 받아서 동일한 id있는지 검색해 vo객체 반환
public MemberVo getMember(String id) { // id로 검색
return dao.select(id);
}
// 수정할 새 값을 파람으로 받음
public void editMyInfo(MemberVo vo) { // 내정보 수정
dao.update(vo);
}
public void delMember(String id) { // id로 삭제
dao.delete(id);
}
}
* Join.java
package member;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Join
*/
@WebServlet("/Join") // 이 페이지를 접근할 때 쓸 경로. 웹 용 url
public class Join extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Join() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
//get 방식으로 요청시 -> 회원가입 폼을 준다. -> 사용자가 폼 양식을 채워서 submit
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//1. 요청 받음
//2. 서비스 메서드 요청을 처리
//3. 처리 결과 페이지로 이동
// RequestDispatcher: request, response 객체를 가지고 페이지를 이동하는 객체.
// 생성자 파라메터로 이동할 뷰 페이지 경로를 넣어줌
// forward(): 포워드 방식으로 이동. (서버 내에서 사용하던 request, response객체를 "가지고" 페이지 이동)
// redirect(): 서버에서 클라이언트에게 다시 페이지 요청하도록 함
// forward는 같은 서버에서 이동하기 때문에 /webApp2/ 쓸 필요 없음.
RequestDispatcher dis = request.getRequestDispatcher("/member/join.jsp");
dis.forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
// -> 사용자가 입력한 데이터로 회원가입을 완료함
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
// 회원가입 폼에 입력한 값을 변수에 담기
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
String name = request.getParameter("name");
String email = request.getParameter("email");
// 파라메터로 받은 값을 DB에 넣음
MemberService service = new MemberService();
service.join(new MemberVo(id, pwd, name, email));
//회원가입이 완료되면 첫 페이지(index.jsp)로 가라!
// RequestDispatcher dis = request.getRequestDispatcher("/index.jsp");
// dis.forward(request, response);
// forward 방식으로 하면 새로고침하면 똑같은 양식으로 회원가입이 재실행되서 부적합함!
// 새로고침해도 /webApp2/Join 으로 남아있음
// redirect: 클라이언트에게 페이지를 새로 요청하도록 시킴. (주로 결과페이지)
//request 가 새 객체이므로 이전에 저장한 데이터 모두 없어짐.
// 새로고침하지 않아도 /web
// redirect 는 외부에서 접근하기 때문에 /webApp2/ 필요함
response.sendRedirect("/webApp2/index.jsp");
}
}
* MyInfo.java
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 MyInfo
*/
@WebServlet("/MyInfo") // id로 검색하는 Servlet
public class MyInfo extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public MyInfo() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
// 3. ID 검색
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String id = request.getParameter("id"); //id값 읽어오기
MemberService service = new MemberService();
MemberVo m = service.getMember(id); //id로 검색
//검색한 결과를 request에 담는다. setAttribute(뷰페이지에서 부를 이름, 값--제약없음): 속성 설정 메소드;
//여러 페이지를 담고 싶으면 session
request.setAttribute("m", m);
RequestDispatcher dis = request.getRequestDispatcher("/member/myinfo.jsp");
dis.forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
* Editmyinfo.java
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);
// 검색결과를 request에 담는다
request.setAttribute("m", vo); //vo객체를 뷰페이지에서는 m이라고 부름
// forward()로 /member/edit.jsp로 이동
RequestDispatcher dis = request.getRequestDispatcher("/member/edit.jsp");
dis.forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
// 수정 완료 요구
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
String name = request.getParameter("name");
MemberService service = new MemberService();
service.editMyInfo(new MemberVo(id, pwd, name, ""));
response.sendRedirect("/webApp2/MyInfo?id="+id); //내 정보 보여주기
}
}
* Delmyinfo.java
package member.controller;
import java.io.IOException;
import java.io.PrintWriter;
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;
/**
* Servlet implementation class Delmyinfo
*/
@WebServlet("/Delmyinfo")
public class Delmyinfo extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Delmyinfo() {
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();
service.delMember(id);
response.sendRedirect("/webApp2/index.jsp");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
* index.jsp
<%@ 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>webApp2</h3>
<!-- 링크 이동은 get 방식 => doGet 실행 -->
<!-- "Servlet 주소" -->
<!-- 2. 회원가입 -->
<a href="/webApp2/Join">회원가입</a><br/>
<!-- 3. id 검색 -->
<form action="/webApp2/MyInfo" method="post">
검색할 id:<input type="text" name="id">
<input type="submit" value = "검색">
</form>
</body>
</html>
* join.jsp
<%@ 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/Join" method="post">
<table border="1">
<tr><th>ID</th><td><input type="text" name="id"></td></tr>
<tr><th>PWD</th><td><input type="password" name="pwd"></td></tr>
<tr><th>NAME</th><td><input type="text" name="name"></td></tr>
<tr><th>EMAIL</th><td><input type="text" name="email"></td></tr>
<tr><th>가입</th><td><input type="submit" value="가입"></td></tr>
</table>
</form>
</body>
</html>
* myinfo.jsp
<%@ 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>
<!-- 자바에서 쓰던 변수를 뷰페이지에서 쓸 수 있게 함 -->
<!-- 멤버변수이름을 보면 자동으로 getter 호출함. (getId()) -->
<!-- VO에 setter getter 추가해야 함. -->
<h3>${m.id }님의 정보</h3>
id: ${m.id }<br/>
pwd: ${m.pwd }<br/>
name: ${m.name }<br/>
email: ${m.email }<br/>
<!-- 폼파라메터를 get 방식으로 전달하고 싶으면 url?파람이름=값&파람이름=값&.. -->
<!-- 4. 수정 -->
<input type="button" value="내정보수정" onclick="location.href='/webApp2/Editmyinfo?id=${m.id }'"><br/>
<!-- 5. 탈퇴 -->
<a href="/webApp2/Delmyinfo?id=${m.id }" onclick="javascript:alert('탈퇴하셨습니다.')">탈퇴</a><br/>
</body>
</html>
* edit.jsp
<%@ 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="text" 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>