ALLYES
[2022년 청년친화형 기업 ESG지원 사업 - 31] 본문
일시 : 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>
'ESG' 카테고리의 다른 글
| [2022년 청년친화형 기업 ESG지원 사업 - 33] (0) | 2022.10.19 |
|---|---|
| [2022년 청년친화형 기업 ESG지원 사업 - 32] (0) | 2022.10.18 |
| [2022년 청년친화형 기업 ESG지원 사업 - 30] (0) | 2022.10.14 |
| [2022년 청년친화형 기업 ESG지원 사업 - 29] (1) | 2022.10.13 |
| [2022년 청년친화형 기업 ESG지원 사업 - 28] (0) | 2022.10.12 |