간단한 Servlet을 통한 회원 정보 Insert 간단 예제를 복습하였다.
복습 과정이라 따로 js파일을 분리 하진 않고 inline 형태로 진행하였다.
-memberForm.html-
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="https://code.jquery.com/jquery-2.2.1.min.js"></script>
<title>회원 가입창</title>
<script>
function fn_sendMember(){
//jquery 사용
var id = $("#id").val();
var pwd = $("#pwd").val();
var name = $("#name").val();
var email = $("#email").val();
//간단 유효성 검사
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("이메일 입력은 필수입니다.");
}
/*유효성 검사 완료 후 비동기 ajax 실행*/
else
{
$.ajax({
type: "post"
,url: "http://localhost:8080/member3"
,dataType: "html"
,data: {
id : id
,pwd : pwd
,name: name
,email : email
,command: $("#command").val()
},
success:function (data){
alert("성공");
},
error:function(){
alert("실패")
}
})
}
}
</script>
</head>
<body>
<form id="frmMember">
<table>
<th>회원 가입창</th>
<tr>
<td>아이디</td>
<td>
<input type="text" id="id">
</td>
</tr>
<tr>
<td>비밀번호</td>
<td>
<input type="password" id="pwd">
</td>
</tr>
<tr>
<td>이름</td>
<td>
<input type="text" id="name">
</td>
</tr>
<tr>
<td>이메일</td>
<td>
<input type="text" id="email">
</td>
</tr>
</table>
<input type="button" value="가입하기" onclick="fn_sendMember()">
<input type="reset" value="초기화"/>
<input type="hidden" id="command" value="addMember"/>
</form>
</body>
</html>
-memberServelt.java-
package sec02.ex02;
import sec02.ex02.MemberDAO;
import sec02.ex02.MemberVO;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.List;
@WebServlet(value = "/member3")
public class MemberServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandle(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*doHandle 메서드 호출*/
doHandle(request, response);
}
private void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=utf-8");
// MemberDAO 객체 생성
MemberDAO dao = new MemberDAO();
PrintWriter out = response.getWriter();
/*Hidden Field 파라미터 요청*/
String command = request.getParameter("command");
if(command != null && command.equals("addMember"))
{
/*AJAX로 전송된 파라미터 변수에 저장*/
String _id = request.getParameter("id");
String _pwd = request.getParameter("pwd");
String _name = request.getParameter("name");
String _email = request.getParameter("email");
MemberVO memberVO = new MemberVO();
/*MemberVo 객체 생성 후 생성자 호출 */
memberVO.setUser_id(_id);
memberVO.setPwd(_pwd);
memberVO.setName(_name);
memberVO.setEmail(_email);
/*MemberDAO addMember 메서드 호출*/
dao.addMember(memberVO);
}
else if(command != null && command.equals("delMember"))
{
String id = request.getParameter("id");
//dao.delMember(id);
}
List<MemberVO> 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++)
{
/*Member VO ArrayList에 저장값을 받아옴.*/
MemberVO memberVO = (MemberVO) list.get(i);
String id = memberVO.getUser_id();
String pwd = memberVO.getPwd();
String name = memberVO.getName();
String email = memberVO.getEmail();
Date joinDate = memberVO.getJoinDate();
out.print("<tr><td>" + id + "<td>"
+ pwd + "</td><td>"
+ name + "</td><td>"
+ email + "</td><td>"
+ joinDate + "</td><td>"
+ "<a href ='/member3?command=delMember&id=" + id +"'>삭제</a></td></tr>");
}
out.print("</table></body></html>");
out.print("<a href ='/memberForm.html'>신규 가입</a>");
}
}
-memberDAO-
package sec02.ex02;
import sec02.ex02.MemberVO;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class MemberDAO {
private PreparedStatement pstmt;
private Connection con;
private DataSource dataFactory;
public MemberDAO(){
try{
/*Connection Pool 클래스 사용*/
Context ctx = new InitialContext();
Context envContext = (Context) ctx.lookup("java:/comp/env");
dataFactory = (DataSource) envContext.lookup("jdbc/mariadb");
}catch (Exception e)
{
e.printStackTrace();
}
}
/*insert addMember 메소드*/
public void addMember(MemberVO memberVO)
{
try {
con = dataFactory.getConnection();
/*파라미터로 받아온 getter로 받아옴.*/
String id = memberVO.getUser_id();
String pwd = memberVO.getPwd();
String name = memberVO.getName();
String email = memberVO.getEmail();
/*prepareStatement 클래스 사용*/
String query = "insert into t_member";
query += "(user_id, pwd, name, email)";
query += "values(?,?,?,?)";
System.out.println("query : " + query);
pstmt = con.prepareStatement(query);
pstmt.setString(1, id);
pstmt.setString(2, pwd);
pstmt.setString(3, name);
pstmt.setString(4, email);
pstmt.executeUpdate();
}catch (Exception e){
e.printStackTrace();
}finally {
if(pstmt != null)
{
try{
pstmt.close();
}catch (Exception ex)
{
ex.printStackTrace();
}
}
}
}
public List<MemberVO> listMembers()
{
List<MemberVO> list = new ArrayList<MemberVO>();
try
{
/*t_member 테이블 조회*/
con = dataFactory.getConnection();
String query = "select * from t_member";
System.out.println("prepareStatement : " + query);
/*prepareStatement 객체 사용하여 쿼리 조회*/
pstmt = con.prepareStatement(query);
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
/*쿼리 실행 후 조회된 수량 많큼 각 컬럼 데이터를 뽑아옴.*/
String id = rs.getString("user_id");
String pwd = rs.getString("pwd");
String name = rs.getString("name");
String email = rs.getString("email");
Date joinDate = rs.getDate("joinDate");
/*MemberVO Setter에 파라미터로 데이터 전달*/
MemberVO vo = new MemberVO();
vo.setUser_id(id);
vo.setPwd(pwd);
vo.setName(name);
vo.setEmail(email);
vo.setJoinDate(joinDate);
list.add(vo);
}
rs.close();
}
catch (Exception e)
{
e.printStackTrace();
}
finally {
if(pstmt != null)
{
try{
pstmt.close();
}catch (Exception ex)
{
ex.printStackTrace();
}
}
if (con != null)
{
try{
con.close();
}catch (Exception ex)
{
ex.printStackTrace();
}
}
}
return list; // 레코드 수량 만큼 List 배열에 retrun
}
}
'JAVA' 카테고리의 다른 글
Servlet 포워드 기능 (0) | 2021.08.01 |
---|---|
Servlet 회원 정보 삭제 로직 (0) | 2021.08.01 |
DataSource를 이용한 데이터베이스 연동 (0) | 2021.07.30 |
Servlet 비즈니스 로직 처리 (0) | 2021.07.27 |
Servlet 로그인 요청시 유효성 검사 간단 예제소스 (0) | 2021.07.26 |