MVC 구조에 익숙해지기 위해 간단한 프로젝트를 만들었다. id와 비밀번호만으로 회원가입과 로그인, 정보 조회, 정보 수정과 탈퇴를 진행한다.
오늘은 회원가입과 로그인, 정보 조회까지 제작했다.
1. 서블릿
<servlet>
<servlet-name>controller1</servlet-name>
<servlet-class>controller.CRUDcon</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>controller1</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2. 컨트롤러
package controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dao.memberDAO;
public class CRUDcon extends HttpServlet{
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("컨트롤러 연결");
String RequestURI = request.getRequestURI();
String contextPath = request.getContextPath();
String command = RequestURI.substring(contextPath.length());
System.out.println(command);
response.setContentType("text/html; charset=utf-8");
request.setCharacterEncoding("utf-8");
if(command.equals("/addMember.do")) {
RequestDispatcher rd = request.getRequestDispatcher("/member/memberCreate.jsp");
rd.forward(request, response);
}else if(command.equals("/addMemberAction.do")){
String id = request.getParameter("id");
String pw = request.getParameter("password");
System.out.println("id: "+id);
System.out.println("pw: "+pw);
memberDAO dao = memberDAO.getInstance();
System.out.println("addMember() 호출");
dao.addMember(id, pw);
RequestDispatcher rd = request.getRequestDispatcher("/member/addMember_success.jsp");
rd.forward(request, response);
}else if(command.equals("/login.do")) {
RequestDispatcher rd = request.getRequestDispatcher("/member/login.jsp");
rd.forward(request, response);
}else if(command.equals("/loginAction.do")) {
String id = request.getParameter("id");
String pw = request.getParameter("password");
System.out.println(id);
System.out.println(pw);
memberDAO dao = memberDAO.getInstance();
System.out.println("login() 호출");
dao.login(id, pw, request);
System.out.println("로그인 성공 이동");
RequestDispatcher rd = request.getRequestDispatcher("/member/login_success.jsp");
rd.forward(request, response);
}else if(command.equals("/memberInfo.do")) {
memberDAO dao = memberDAO.getInstance();
System.out.println("memberInfo() 실행");
dao.memberInfo(request);
System.out.println("con id: "+request.getAttribute("id"));
System.out.println("con pw: "+request.getAttribute("pw"));
System.out.println("memberInfo.jsp 이동");
RequestDispatcher rd = request.getRequestDispatcher("/member/memberInfo.jsp");
rd.forward(request, response);
}
}
}
3. 모델
package dao;
import java.sql.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import database.DBConnection;
public class memberDAO {
private static memberDAO dao = new memberDAO();
public static memberDAO getInstance() {
return dao;
}
public void addMember(String id, String pw) {
System.out.println("addMember() 실행");
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = DBConnection.getConnection();
String sql = "insert into member values(?,?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, pw);
pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(pstmt != null)
pstmt.close();
if(conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void login(String id, String pw, HttpServletRequest request) {
System.out.println("login() 실행");
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = DBConnection.getConnection();
String sql = "select * from member where member_id=? and member_pw=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, pw);
rs = pstmt.executeQuery();
if(rs.next()) {
HttpSession session = request.getSession();
session.setAttribute("sessionId", id);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(pstmt != null)
pstmt.close();
if(conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}//login()
public void memberInfo(HttpServletRequest request) {
System.out.println("memberInfo() 실행");
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = DBConnection.getConnection();
HttpSession session = request.getSession();
String sessionId = (String)session.getAttribute("sessionId");
String sql = "select * from member where member_id=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, sessionId);
rs = pstmt.executeQuery();
if(rs.next()) {
String id = rs.getString("member_id");
String pw = rs.getString("member_pw");
System.out.println("rs id: "+id);
System.out.println("rs pw: "+pw);
request.setAttribute("id", id);
request.setAttribute("pw", pw);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(pstmt != null)
pstmt.close();
if(conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}//class
HTML 페이지는 아주 간단하게 a태그와 폼만 있기 때문에 코드는 생략한다.
'정리노트' 카테고리의 다른 글
[SQL] 데이터베이스 기본, SQL 기본 문법 (0) | 2024.01.02 |
---|---|
[JSP] MVC - 비즈니스의 역할 (0) | 2023.12.29 |
[JSP] 게시판 (0) | 2023.12.27 |
[JSP] MVC (0) | 2023.12.26 |
[JSP] JSTL (0) | 2023.12.22 |