티스토리 뷰
반응형
- ConnectionPool을 이용해 회원을 등록한다.
- ConnectionPool 설정 과정은 다음 글을 참고한다.
https://dev1023.tistory.com/72
- 회원 가입 페이지를 생성한다. 해당 파일은 WebContent 디렉터리 아래에 작성한다.
* MemberForm.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 가입창</title>
<script type="text/javascript">
function fn_sendMember(){
var frmMember=document.frmMember;
var id=frmMember.id.value;
var pwd=frmMember.pwd.value;
var name=frmMember.name.value;
var email=frmMember.email.value;
if(id.length==0 ||id==""){
alert("아이디는 필수입니다.");
}else if(pwd.length==0 ||pwd==""){
alert("비밀번호는 필수입니다.");
}
else if(name.length==0 ||name==""){
alert("이름은 필수입니다.");
}else if(email.length==0 ||email==""){
alert("이메일은 필수입니다.");
}else{
frmMember.method="post";
frmMember.action="member2";
frmMember.submit();
}
}
</script>
</head>
<body>
<form name="frmMember">
<table>
<th>회원 가입창</th>
<tr>
<td>아이디</td>
<td><input type="text" name="id"></td>
</tr>
<tr>
<td>비밀번호</td>
<td><input type="password" name="pwd"></td>
</tr>
<tr>
<td>이름</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>이메일</td>
<td><input type="text" name="email"></td>
</tr>
</table>
<input type="button" value="가입하기" onclick="fn_sendMember()">
<input type="reset" value="다시입력">
<input type="hidden" name="command" value="addMember" />
</form>
</body>
</html>
- command 값을 받아 와 addMember 이면 같이 전송된 회원 정보를 받아 온다.
- 회원 정보를 MemberVO 객체에 설정한 후 MemberDAO의 메서드로 전달해 SQL문을 이용해 테이블에 추가한다.
* MemberServlet.java
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Date;
import java.util.List;
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 dao.MemberDAO;
import vo.MemberVO;
/**
* Servlet implementation class MemberServlet
*/
@WebServlet("/member2")
public class MemberServlet2 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandle(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandle(request, response);
}
protected void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
MemberDAO dao = new MemberDAO();
PrintWriter out = response.getWriter();
String command = request.getParameter("command");
if(command != null && command.equals("addMember")) { // 회원 추가 시
String _id = request.getParameter("id");
String _pwd = request.getParameter("pwd");
String _name = request.getParameter("name");
String _email = request.getParameter("email");
MemberVO vo = new MemberVO();
vo.setId(_id);
vo.setPwd(_pwd);
vo.setEmail(_email);
vo.setName(_name);
dao.addMember(vo);
}else if(command != null && command.equals("delMember")) { //회원 삭제 시
String id = request.getParameter("id");
// dao.delMember(id);
}
List list = dao.listMembers();
out.print("<html><body>");
out.print("<table border=1><tr align='center' bgcolor='lightgreen'>");
out.print("<td>아이디</td><td>비밀번호</td><td>이름</td><td>이메일</td><td>가입일</td><td>삭제</td>");
for(int i = 0; i < list.size(); i++) {
MemberVO memberVO = (MemberVO) list.get(i);
String id = memberVO.getId();
String pwd = memberVO.getPwd();
String name = memberVO.getName();
String email = memberVO.getEmail();
Date joinDate = memberVO.getJoinDate();
out.print("<tr><td>" + id + "</td><td>" + pwd + "</td><td>"+name +
"</td><td>"+email+"</td><td>" + joinDate + "</td><td>"+"<a href='/ServletBusiness/member2?command=delMember&id="+id+"'> 삭제 </a></td></tr>");
}
out.print("</table></body></html>");
out.print("<a href='/ServletBusiness/MemberForm.html'>새 회원 가입 하기 </a>");
}
}
- DAO 클래스에서 addMember() 메서드를 추가한다.
* MemberDAO.java
package dao;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import vo.MemberVO;
public class MemberDAO {
private Connection conn;
private PreparedStatement pstmt;
private DataSource dataFactory;
public MemberDAO() {
Context ctx;
try {
// JNDI에 접근하기 위해 기본 경로("java:/comp/env")를 지정
ctx = new InitialContext();
Context envContext = (Context)ctx.lookup("java:/comp/env");
// 톰캣 context.xml에 설정한 name 값인 jdbc/mysql을 이용해 톰캣이 미리 연결한 DataSource를 받아 옴.
dataFactory = (DataSource)envContext.lookup("jdbc/mysql");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
// 멤버 목록 확인 메서드
public List listMembers() {
List list = new ArrayList();
try {
// connDB();
conn = dataFactory.getConnection(); // DB에 연결
String query = "select * from t_member ";
System.out.println("prepareStatememt: " + query);
pstmt = conn.prepareStatement(query);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
String id = rs.getString("id");
String pwd = rs.getString("pwd");
String name = rs.getString("name");
String email = rs.getString("email");
Date joinDate = rs.getDate("joinDate");
MemberVO vo = new MemberVO();
vo.setId(id);
vo.setPwd(pwd);
vo.setName(name);
vo.setEmail(email);
vo.setJoinDate(joinDate);
list.add(vo);
}
rs.close();
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
// 멤버 추가 메서드
public void addMember(MemberVO memberVO) {
try {
conn = dataFactory.getConnection();
String id = memberVO.getId();
String pwd = memberVO.getPwd();
String name = memberVO.getName();
String email = memberVO.getEmail();
String query = "INSERT INTO t_member";
query += "(id, pwd, name, email)";
query += "VALUES(?,?,?,?)";
System.out.println("prepareStatement : " + query);
pstmt = conn.prepareStatement(query);
pstmt.setString(1, id);
pstmt.setString(2,pwd);
pstmt.setString(3, name);
pstmt.setString(4, email);
pstmt.executeUpdate();
pstmt.close();
}catch(Exception e) {
System.out.println("오류가 발생했습니다.");
}
}
}
- 코드 작성 후 톰캣을 재시작하고 브라우저에 localhost:[port]/[project_name]/MemberForm.html 을 입력하여 회원 가입 페이지로 이동한다.
- 다음 페이지에서 정보를 입력하고 [가입하기] 버튼을 눌러 회원 등록을 해 본다.
- 정상적으로 등록이 되었다면 다음과 같이 추가된 레코드와 함께 회원 정보 리스트 페이지가 나타날 것이다.
반응형
'Servlet' 카테고리의 다른 글
서블릿 포워드(Forward) (0) | 2024.08.12 |
---|---|
서블릿 - 비즈니스 로직(회원 정보 삭제) (0) | 2024.08.11 |
DataSource를 이용한 DB 연동 (0) | 2024.08.11 |
서블릿 - 비즈니스 로직 처리 (0) | 2024.08.11 |
GET/POST 전송 방식 (0) | 2024.08.11 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Session
- CSS
- script element
- Network
- nodejs
- javaserverpage
- a 태그
- 네트워크
- 스프링
- httpServletRequest
- react
- Java Server Page
- el
- 서블릿
- FMT
- Servlet
- 내장객체
- 세션
- Binding
- Redux
- 서브넷팅
- Spring MVC
- JSP
- 리액트
- CSS 속성
- 미들웨어
- html css
- 제이쿼리
- HTML
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함