ALLYES
[2022년 청년친화형 기업 ESG지원 사업 - 32] 본문
일시 : 2022.10.18
시간 : 9:00 ~ 18:00
오전 : JSP
오후 : Java Spring
오전 [JSP]
4개의 servlet 생성

4개의 코드파일 작성
- GoJoinService.java
package com.smhrd.controller;
import java.io.IOException;
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;
@WebServlet("/GoJoinService")
public class GoJoinService extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String view = "WEB-INF/views/Join.jsp";
RequestDispatcher rd = request.getRequestDispatcher(view);
rd.forward(request, response);
}
}
- GoLoginService.java
package com.smhrd.controller;
import java.io.IOException;
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;
/**
* Servlet implementation class GoLoginService
*/
@WebServlet("/GoLoginService")
public class GoLoginService extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String view = "WEB-INF/views/Login.jsp";
RequestDispatcher rd = request.getRequestDispatcher(view);
rd.forward(request, response);
}
}
- GoMainService.java
package com.smhrd.controller;
import java.io.IOException;
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;
@WebServlet("/GoMainService")
public class GoMainService extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 단순 페이지 이동
// main.jsp로 이동 단, forward 방식으로 이동
String view = "WEB-INF/views/Main.jsp";
RequestDispatcher rd = request.getRequestDispatcher(view);
rd.forward(request, response);
}
}
- GoMypageService.java
package com.smhrd.controller;
import java.io.IOException;
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;
@WebServlet("/GoMypageService")
public class GoMypageService extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String view = "WEB-INF/views/mypage.jsp";
RequestDispatcher rd = request.getRequestDispatcher(view);
rd.forward(request, response);
}
}
MemberSystem2를 복제하여 FrontController로 재정의
그 후 servers에서 membersystem2를 삭제
(삭제를 해야 에러가 안생김)

새로운 package 생성 : com.smhrd.frontController
- FrontController.java

package com.smhrd.frontController;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Map;
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 javax.servlet.http.HttpSession;
import com.smhrd.controller.Controller;
import com.smhrd.controller.GoJoinCon;
import com.smhrd.controller.GoLoginCon;
import com.smhrd.controller.GoMainCon;
import com.smhrd.controller.GoMypageCon;
import com.smhrd.controller.GoSelectCon;
import com.smhrd.controller.JoinCon;
import com.smhrd.controller.LoginCon;
import com.smhrd.controller.UpdateCon;
import com.smhrd.model.MemberDAO;
import com.smhrd.model.MemberVO;
@WebServlet("*.do") // .do가 붙은 모든 요쳥을 이 FrontController가 해결함
public class FrontController extends HttpServlet {
private static final long serialVersionUID = 1L;
private Map<String, Controller> mappings;
@Override
public void init() throws ServletException {
// Servlet이 생성 될 때 실행(딱 1번만)
// 절대 FrontController는 수정을 하지 않으려고
// HandlerMapping이라는 Class를 만듦
HandlerMapping handler = new HandlerMapping();
mappings = handler.getMappings();
}
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("FrontController 호출");
// 1. 어떤 요청이 들어오는지 urlmapping만 잘라내기
// /MemberSystem/join.do
String uri = request.getRequestURI();
// /MemberSystem
String cpath = request.getContextPath();
// /join.do
String command = uri.substring(cpath.length());
System.out.println("요청 mapping : " + command);
String view = null;
request.setCharacterEncoding("EUC-KR");
Controller con = mappings.get(command);
// 2. 요청 구분해서, 각각의 기능 실행시키기
// if문 끝 ===========================================
if (con != null) {
view = con.execute(request, response);
}
// 페이지 이동
if (view != null) {
if (view.contains("redirect:/")) {
// redirect:/goMain.do
// .split(":/") --> [ "redirect", "goMain.do" ]
response.sendRedirect(view.split(":/")[1]);
} else {
RequestDispatcher rd = request.getRequestDispatcher("WEB-INF/views/" + view + ".jsp");
rd.forward(request, response);
}
}
}
}
- Servlet : HandlerMapping.java
package com.smhrd.frontController;
import java.util.HashMap;
import com.smhrd.controller.Controller;
import com.smhrd.controller.DeleteCon;
import com.smhrd.controller.GoJoinCon;
import com.smhrd.controller.GoLoginCon;
import com.smhrd.controller.GoMainCon;
import com.smhrd.controller.GoMypageCon;
import com.smhrd.controller.GoSelectCon;
import com.smhrd.controller.JoinCon;
import com.smhrd.controller.LoginCon;
import com.smhrd.controller.UpdateCon;
public class HandlerMapping {
// urlmapping <--> POJO 짝 지어 가지고 있을 자료구조 HashMap 생성
// key : value 형태로 데이터를 저장
// key를 집어넣으면 value는 형태
// {"name" : "안현진", ...}
private HashMap<String, Controller> mappings;
// 이 HandlerMapping 생성될 때, data가 저장될 수 있도록 생성자 생성
public HandlerMapping() {
mappings = new HashMap<String, Controller>();
// HashMap에 데이터 넣기
// .put(key, value)
mappings.put("/goMain.do", new GoMainCon());
mappings.put("/goLogin.do", new GoLoginCon());
mappings.put("/goJoin.do", new GoJoinCon());
mappings.put("/goMypage.do", new GoMypageCon());
mappings.put("/goSelect.do", new GoSelectCon());
mappings.put("/join.do", new JoinCon());
mappings.put("/login.do", new LoginCon());
mappings.put("/update.do", new UpdateCon());
mappings.put("/delete.do", new DeleteCon());
}
public HashMap<String, Controller> getMappings() {
return mappings;
}
}
package : com.smhrd.controller
- interface : Controller.java
package com.smhrd.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface Controller {
public String execute(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException;
}
- class : DeleteCon.java
package com.smhrd.controller;
import java.io.IOException;
import javax.servlet.ServletException;
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;
public class DeleteCon implements Controller {
@Override
public String execute(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 1. 데이터 수집
HttpSession session = request.getSession();
MemberVO info = (MemberVO)session.getAttribute("info");
String id = info.getId();
// 2. 회원 삭제 기능 실행
// delete from member2 where id = ?
MemberDAO dao = new MemberDAO();
int cnt = dao.delete(id);
if(cnt>0) {
System.out.println("회원탈퇴 성공");
session.removeAttribute("info");
}else {
System.out.println("회원탈퇴 실패");
}
return "redirect:/goMain.do";
}
}
- class : GoJoincon.java
package com.smhrd.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class GoJoinCon implements Controller {
@Override
public String execute(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
return "Join";
}
}
- Class : GoLoginCon.java
package com.smhrd.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class GoLoginCon implements Controller {
@Override
public String execute(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
return "Login";
}
}
- Class : GoMainCon.java
package com.smhrd.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// 알바생(POJO)
public class GoMainCon implements Controller {
public String execute(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
// ~~ 프로그램 ~~~
// 다음페이지 리턴
return "Main";
}
}
- Class : GoMypageCon.java
package com.smhrd.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class GoMypageCon implements Controller {
@Override
public String execute(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
return "mypage";
}
}
- Class : GoSelectCon.java
package com.smhrd.controller;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.smhrd.model.MemberDAO;
import com.smhrd.model.MemberVO;
public class GoSelectCon implements Controller {
@Override
public String execute(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
MemberDAO dao = new MemberDAO();
ArrayList<MemberVO> list = dao.select();
System.out.println(list);
request.setAttribute("list", list);
return "select";
}
}
- Class : JoinCon.java
package com.smhrd.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.smhrd.model.MemberDAO;
public class JoinCon implements Controller {
@Override
public String execute(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String nick = request.getParameter("nick");
String addr = request.getParameter("addr");
MemberDAO dao = new MemberDAO();
int cnt = dao.join(id, pw, nick, addr);
if (cnt > 0) {
System.out.println("회원가입 성공!");
} else {
System.out.println("회원가입 실패...");
}
return "redirect:/goMain.do";
}
}
- Class : LoginCon.java
package com.smhrd.controller;
import java.io.IOException;
import javax.servlet.ServletException;
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;
public class LoginCon implements Controller {
@Override
public String execute(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String login_id = request.getParameter("id");
String login_pw = request.getParameter("pw");
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("로그인 실패...");
}
return "redirect:/goMain.do";
}
}
- Class : UpdateCon.java
package com.smhrd.controller;
import java.io.IOException;
import javax.servlet.ServletException;
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;
public class UpdateCon implements Controller {
@Override
public String execute(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 1. 데이터 받아오기
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String nick = request.getParameter("nick");
String addr = request.getParameter("addr");
// 데이터 묶어주기
MemberVO info = new MemberVO(id, pw, nick, addr);
// 2. DAO의 update( info )메서드 실행
MemberDAO dao = new MemberDAO();
int cnt = dao.update(info);
// 3. 성공/실패 구분
if (cnt > 0) {
System.out.println("정보 수정 성공");
// session에 저장된 info 수정
HttpSession session = request.getSession();
session.setAttribute("info", info);
} else {
System.out.println("정보 수정 실패");
}
// 4. mypage.jsp로 돌아가기
return "redirect:/goMypage.do";
}
}
package : com.smhrd.model
- Servlet : MemberDAO.java
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("Connection 성공!");
} else {
System.out.println("Connection 실패!");
}
} 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 {
getConn();
// 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) {
// TODO Auto-generated catch block
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) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
close();
}
return info;
}
// ===============
// 회원목록
public ArrayList<MemberVO> select() {
// DB에서 전체 회원 목록 가져오기
ArrayList<MemberVO> list = new ArrayList<MemberVO>();
try {
getConn();
// 3. SQL문 준비 -> 실행준비 마치기
String sql = "select * from member2";
psmt = conn.prepareStatement(sql);
// 4. 실행
rs = psmt.executeQuery();
// 5. ResultSet 가공
while (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 (Exception e) {
e.printStackTrace();
} finally {
close();
}
return list;
}
// ===============
// 마이페이지 회원정보 수정하기
public int update(MemberVO info) {
// DB에서 전체 회원 목록 가져오기
try {
getConn();
String sql = "update member2 set pw=?, nick=?, addr=? where id =?";
psmt = conn.prepareStatement(sql);
psmt.setString(1, info.getPw());
psmt.setString(2, info.getNick());
psmt.setString(3, info.getAddr());
psmt.setString(4, info.getId());
// Query --> rs (표)
// Update --> int (몇개 수정되었는지)
cnt = psmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
close();
}
return cnt;
}
// 회원탈퇴
public int delete(String id) {
// DB에서 전체 회원 목록 가져오기
try {
getConn();
String sql = "delete from member2 where id =?";
psmt = conn.prepareStatement(sql);
psmt.setString(1, id);
// Query --> rs (표)
// Update --> int (몇개 수정되었는지)
cnt = psmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
close();
}
return cnt;
}
}
- Servlet : MemberVO.java
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;
}
}
오후 [Java Spring]
표준프레임워크 포털
https://www.egovframe.go.kr/home/ntt/nttRead.do?pagerOffset=0&searchKey=&searchValue=&menuNo=65&bbsId=4&nttId=1743

버전 4 파일 다운로드
C:\ 경로로 재 설정 후 압축 해제
eclipse.edu 실행

오라클 포트 번호와 겹치므로 포트번호 변경

Mysql 참고



'ESG' 카테고리의 다른 글
| [2022년 청년친화형 기업 ESG지원 사업 - 34] (0) | 2022.10.20 |
|---|---|
| [2022년 청년친화형 기업 ESG지원 사업 - 33] (0) | 2022.10.19 |
| [2022년 청년친화형 기업 ESG지원 사업 - 31] (0) | 2022.10.17 |
| [2022년 청년친화형 기업 ESG지원 사업 - 30] (0) | 2022.10.14 |
| [2022년 청년친화형 기업 ESG지원 사업 - 29] (1) | 2022.10.13 |