Notice
Recent Posts
Recent Comments
Link
«   2026/03   »
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 31
Tags
more
Archives
Today
Total
관리 메뉴

ALLYES

[2022년 청년친화형 기업 ESG지원 사업 - 31] 본문

ESG

[2022년 청년친화형 기업 ESG지원 사업 - 31]

Allyes_99 2022. 10. 17. 17:52

일시 : 2022.10.17

시간 : 9:00 ~ 18:00


오전/오후 : jsp

MVC

  • Model 
    • DB와 상호작용할 DAO, VO(DTO), utils
    • 데이터 처리를 위한 class 파일
  • View
    • 사용자 눈에 실제로 보여지는 화면
    • html, jsp
  • Controller
    • Model을 사용하여 실제 동작을 일으키느 객체
    • Servlet

<프로젝트 파일>


package - com.smhrd.controller

  • JoinService
package com.smhrd.controller;

import java.io.IOException;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Connection;

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 com.smhrd.model.MemberDAO;

@WebServlet("/JoinService")
public class JoinService extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
        // post 형식
		request.setCharacterEncoding("EUC-KR");
		
        // 입력받은 값 가져오기
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");
		String nick = request.getParameter("nick");
		String addr = request.getParameter("addr");

		// DAO 가져다가 join메서드를 사용
		MemberDAO dao = new MemberDAO();
		int cnt = dao.join(id, pw, nick, addr);
		
		if(cnt>0) {
			System.out.println("회원가입 성공");
		}else {
			System.out.println("회원가입 실패...");
		}
		
		response.sendRedirect("Main.jsp");

	}

}

  • LoginService
package com.smhrd.controller;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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 javax.servlet.http.HttpSession;

import com.smhrd.model.MemberDAO;
import com.smhrd.model.MemberVO;

@WebServlet("/LoginService")
public class LoginService extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
        // 값 가져오기
		String login_id=request.getParameter("id");
		String login_pw=request.getParameter("pw");
		
        // DAO에 있는 login메서드 사용
		MemberDAO dao = new MemberDAO();
		MemberVO info = dao.login(login_id, login_pw);
		
		if(info!=null) {
			System.out.println("로그인 성공!");
			HttpSession session=request.getSession();
			session.setAttribute("info",info);
			
		}else {
			System.out.println("로그인 실패...");			
		}
	
		response.sendRedirect("Main.jsp");
	}

}

  • SelectService
package com.smhrd.controller;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

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 com.smhrd.model.MemberDAO;
import com.smhrd.model.MemberVO;

@WebServlet("/SelectService")
public class SelectService extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		// DB에서 전체 회원 목록 가져오기
		MemberDAO dao = new MemberDAO();
		ArrayList<MemberVO> list = dao.select();
		
		
		// 회원 목록 데이터를 가지고 select.jsp
		System.out.println(list);
		
		// 어디에 저장??
		// Scope : 서버의 저장공간 / 어디까지 or 언제까지 유효한지 범위
		// page : 하나의 JSP내에서만 유지
		// request : 한번의 요청-응답 동안 유지
		// session : 하나의 브라우저 내에서 유지
		// application : 하나의 웹 어플리케이션 유지
		// 객체 바인딩 : 데이터를 저장해뒀다가, 페이지 이동후에 꺼내서 사용하는 방식
		
		request.setAttribute("list", list);
		
		//페이지 이동
		//forward 방식으로 이동
		String view ="select.jsp";
		// .getRequestDispatcher("어떤 페이지로 이동할지");
		RequestDispatcher rd = request.getRequestDispatcher(view);
		rd.forward(request, response);
		
		// 회원 목록 데이터를 가지고 select.jsp 이동
		// response.sendRedirect("select.jsp");

	}

}

package - com.smhrd.model

  • MemberDAO
package com.smhrd.model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class MemberDAO {

	// DAO : SQL문을 실행, 실행결과를 리턴
	// 여러 메서드에서 공통으로 사용하고 있는 변수들을 field로 빼자
	Connection conn = null;
	PreparedStatement psmt = null;
	ResultSet rs = null;
	int cnt = 0;
	MemberVO info = null;

	// 공통적으로 사용되고 있는 코드들을 메서드화
	// connection 생성
	public void getConn() {

		try {

			// 1.드라이버 로딩 (동적로딩)
			// - 어떠한 DBMS를 사용할지 명시
			Class.forName("oracle.jdbc.driver.OracleDriver");
			// 2. 커넥션 연결
			// - Java클래스 파일과 DB와의 연결
			String db_url = "jdbc:oracle:thin:@localhost:1521:xe";
			String db_id = "hr";
			String db_pw = "hr";

			conn = DriverManager.getConnection(db_url, db_id, db_pw);

			if (conn != null) {
				System.out.println("Connetcion 성공!");
			} else {
				System.out.println("Connetcion 실패...");
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// 연결 끊기
	public void close() {
		// 4. 연결끊기
		// - DB와 관련된 객체들 연결을 끊기
		try {
			if (rs != null) {
				rs.close();
			}
			if (psmt != null) {
				psmt.close();
			}
			if (conn != null) {
				conn.close();
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	// 회원가입 메서드
	public int join(String id, String pw, String nick, String addr) {
		// JDBC 순서 4단계

		try {

			// 3. SQL문 작성 및 실행
			// - 사용할 SQL문 작성 그리고 SQL문 실행
			String sql = "insert into member2 values(?,?,?,?)";
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, id);
			psmt.setString(2, pw);
			psmt.setString(3, nick);
			psmt.setString(4, addr);

			cnt = psmt.executeUpdate();

		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			close();
		}
		return cnt;

	}// =====================================

	// 로그인 메서드
	public MemberVO login(String login_id, String login_pw) {
		// JDBC 순서 4단계
		try {

			getConn();

			// 3. SQL문 작성 및 실행
			// - 사용할 SQL문 작성 그리고 SQL문 실행
			String sql = "select * from member2 where id= ? and pw= ?";
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, login_id);
			psmt.setString(2, login_pw);

			rs = psmt.executeQuery();

			if (rs.next()) {
				String id = rs.getString(1);
				String pw = rs.getString(2);
				String nick = rs.getString(3);
				String addr = rs.getString(4);

				info = new MemberVO(id, pw, nick, addr);
			}

		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			close();

		}
		return info;
	}// =======================================

	// 회원목록
	public ArrayList<MemberVO> select() {
		ArrayList<MemberVO> list = new ArrayList<MemberVO>();

		// DB에서 전체 회원 목록 가져오기
		try {
			getConn();

			// 3. SQL문 준비 -> 실행준비 마치기
			String sql = "select *from member2";
			psmt = conn.prepareCall(sql);

			// 4. 실행
			rs = psmt.executeQuery();

			// 5. ResultSet 가공
			if (rs.next()) {

				String id = rs.getString(1);
				String pw = rs.getString(2);
				String nick = rs.getString(3);
				String addr = rs.getString(4);

				MemberVO info = new MemberVO(id, pw, nick, addr);

				list.add(info);
			}

		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			close();
		}
		return list;

	}// ============================

	public int update(String id, String pw, String nick, String addr) {
		int cnt = 0;

		try {
			String sql = "update member2 set pw=?, nick=?, addr=? where id =?";
			getConn();
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, pw);
			psmt.setString(2, nick);
			psmt.setString(3, addr);
			psmt.setString(4, id);

			cnt = psmt.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();

		} finally {
			close();
		}
		return cnt;
	}// ==============================
}

  • MemberVO
package com.smhrd.model;

public class MemberVO {
	private String id;
	private String pw;
	private String nick;
	private String addr;	
	
	public MemberVO(String id, String pw, String nick, String addr) {
		this.id = id;
		this.pw = pw;
		this.nick = nick;
		this.addr=addr;
	}

	public String getId() {
		return id;
	}

	public String getPw() {
		return pw;
	}

	public String getNick() {
		return nick;
	}

	public String getAddr() {
		return addr;
	}

	public void setId(String id) {
		this.id = id;
	}

	public void setPw(String pw) {
		this.pw = pw;
	}

	public void setNick(String nick) {
		this.nick = nick;
	}

	public void setAddr(String addr) {
		this.addr = addr;
	}
	
	
}

Jsp 파일

  • Main.jsp
<%@page import="com.smhrd.model.MemberVO"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
   <div class="container">
     <h2>메인페이지</h2>
     <div class="panel panel-default">
       <div class="panel-heading">       
      <%
            MemberVO info = (MemberVO)session.getAttribute("info");
  			// 로그인 안했을 때
            if (info == null) {
               out.print("<span>원하시는 목록을 선택해주세요</span>");
            } else { // 로그인을 했을때 
               out.print("<span>" + info.getNick() + "님 환영합니다!</span>");
            }
       %>
     
       </div>
       
       <div class="panel-body">
	      <a href="Join.jsp"><button class="btn btn-info">회원가입</button></a>
    	  <a href="Login.jsp"><button class="btn btn-success">로그인</button></a>
    	  <a href ="SelectService"><button class="btn btn-warning">회원목록보기</button></a>     
    	 <%if( info != null){ %>
    	  <a href ="mypage.jsp"><button class="btn">마이페이지</button></a>     
      	<%} %>
      </div>
       <div class="panel-footer">담당자 : 박병관 연락처 : 010-4611-5278</div>
     </div>
   </div>
</body>
</html>

  • Join.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
   <form action="JoinService" method="post">
   <div class="container">
     <h2>회원가입 홈페이지</h2>
     <div class="panel panel-default">
       <div class="panel-heading">회원가입</div>
       
       <div class="panel-body">
         <table class="table table-hover table-sm table-borderless table-dark">
            <tr>
               <td>아이디</td>
               <td><input name="id" class="form-control" type="text"></td>
            </tr>
            <tr>
               <td>비밀번호</td>
               <td><input name="pw" class="form-control" type="password"></td>
            </tr>
            <tr>
               <td>닉네임</td>
               <td><input name="nick" class="form-control" type="text"></td>
            </tr>
            <tr>
               <td>주소</td>
               <td><input name="addr" class="form-control" type="text"></td>
            </tr>
            <tr>
               <td colspan="2">
                  <button class="btn btn-sm btn-info" type="submit">회원가입</button>
                  <button class="btn btn-sm btn-warning" type="reset">취소</button>
               </td>
            </tr>
         </table>
      </div>
       <div class="panel-footer">담당자 : 박병관 연락처 : 010-4611-5278</div>
     </div>
   </div>
   </form>
</body>
</html>

 


  • Login.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
   <form action="LoginService" method="post">
   <div class="container">
     <h2>로그인 홈페이지</h2>
     <div class="panel panel-default">
       <div class="panel-heading">로그인</div>
       
       <div class="panel-body">
         <table class="table table-hover table-sm table-borderless table-dark">
            <tr>
               <td>아이디</td>
               <td><input name="id" class="form-control" type="text"></td>
            </tr>
            <tr>
               <td>비밀번호</td>
               <td><input name="pw" class="form-control" type="password"></td>
            </tr>
            <tr>
               <td colspan="2">
                  <button class="btn btn-sm btn-info" type="submit">로그인</button>
                  <button class="btn btn-sm btn-warning" type="reset">취소</button>
               </td>
            </tr>
         </table>
      </div>
       <div class="panel-footer">담당자 : 박병관 연락처 : 010-4611-5278</div>
     </div>
   </div>
   </form>
</body>
</html>

  • mypage.jsp
<%@page import="com.smhrd.model.MemberVO"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<%
	//세션에서 사용자 정보 가져오기
	//다운캐스팅
	MemberVO info = (MemberVO)session.getAttribute("info");


%>
   <form action="UpdateService" method="post">
   <div class="container">
     <h2>마이페이지 홈페이지</h2>
     <div class="panel panel-default">
       <div class="panel-heading">마이페이지</div>
       
       <div class="panel-body">
         <table class="table table-hover table-sm table-borderless table-dark">
            <tr>
               <td>아이디</td>
               <td><input value = "<%=info.getId() %>" readonly name="id" class="form-control" type="text"></td>
            </tr>
            <tr>
               <td>비밀번호</td>
               <td><input value = "<%=info.getPw() %>" name="pw" class="form-control" type="password"></td>
            </tr>
            <tr>
               <td>닉네임</td>
               <td><input value = "<%=info.getNick() %>" name="nick" class="form-control" type="text"></td>
            </tr>
            <tr>
               <td>주소</td>
               <td><input value = "<%=info.getAddr() %>" name="addr" class="form-control" type="text"></td>
            </tr>
            <tr>
               <td colspan="2">
                  <button class="btn btn-sm btn-info" type="submit">수정하기</button>
                  <button class="btn btn-sm btn-warning" type="reset">취소</button>
               </td>
            </tr>
         </table>
      </div>
       <div class="panel-footer">담당자 : 박병관 연락처 : 010-4611-5278</div>
     </div>
   </div>
   </form>
</body>
</html>

  • select.jsp
<%@page import="java.util.ArrayList"%>
<%@page import="com.smhrd.model.MemberVO"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
	pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script
	src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<%

	ArrayList<MemberVO> list = (ArrayList<MemberVO>) request.getAttribute("list");
	out.print(list.size());

%>
	<form action="JoinService" method="post">
		<div class="container">
			<h2>회원정보보기 홈페이지</h2>
			<div class="panel panel-default">
				<div class="panel-heading">회원정보보기</div>
				<div class="panel-body">
					<table class="table table-bordered table-hover">

						<!-- for each문 
       							for (i : list)
     				  	-->

						<%for(MemberVO info : list) {%>
						<tr>
							<td><%=info.getId()  %></td>
							<td><%=info.getNick() %></td>
							<td><%=info.getAddr() %></td>
						</tr>
						<%} %>

					</table>
				</div>
				<div class="panel-footer">담당자 : 박병관 연락처 : 010-4611-5278</div>
			</div>
		</div>
	</form>
</body>
</html>