희원96
코딩 공부 일기
희원96
전체 방문자
오늘
어제
  • 다이어리 (94)
    • 일상 (2)
      • #.일기 (2)
      • 정보처리기사 (0)
    • 코딩 공부 (90)
      • Python (11)
      • Java (12)
      • DB (18)
      • Arduino (5)
      • HTML,CSS (7)
      • JSP, Servlet (14)
      • Javascript (8)
      • jQuery (2)
      • Spring (1)
      • Android (8)
      • ML (4)
      • React (0)
    • 프로젝트 (1)
      • 미니프로젝트 (1)
      • 1차프로젝트 (0)
      • 2차프로젝트 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 개발 공부 일기

인기 글

태그

  • 안드로이드
  • jQuery
  • HTML
  • Database
  • 스마트인재개발원
  • arduino
  • Ajax
  • Servlet
  • JS
  • 자바
  • 제이쿼리
  • CSS
  • 머신러닝
  • JavaScript
  • java
  • JSP
  • 파이썬
  • 자바스크립트
  • Android
  • JavaFestival
  • 아두이노
  • 데이터베이스
  • ml
  • Python
  • 스프링
  • Spring
  • 화이팅
  • DB

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
희원96

코딩 공부 일기

(JSP) model2 실습
코딩 공부/JSP, Servlet

(JSP) model2 실습

2022. 5. 12. 15:17

Main.jsp

더보기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>메인페이지</h1>
<a href = "ex01Join.jsp">회원가입</a>
<br>
<a href = "ex01Login.jsp">로그인</a>
</body>
</html>

Join.jsp

더보기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="JoinService" method = "post" >
ID : <input type="text" name = "id"><br>
PW : <input type="password" name = "pw"><br>
NAME : <input type="text" name = "name"><br>
AGE : <input type="text" name = "age"><br>s
<input type="submit" value = "회원가입">
</form>
</body>
</html>

JoinService.java

더보기

package com.smhrd.controller;

import java.io.IOException;
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.DAO;
import com.smhrd.model.IotMemberVO;

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

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


//ex01JoinService.jsp와 같은 역할을 하는 컨트롤러

//1.한글 인코딩 진행하기
request.setCharacterEncoding("UTF-8");

//2. 데이터 가져오기
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));

//3. 데이터를 하나로 묶기
IotMemberVO vo = new IotMemberVO(id, pw, name, age);

//4. DB연결과 관련된 도구 DAO 생성하기
DAO dao = new DAO();

//5. 데이터 추가하는 메소드 사용하기

int row = dao.join(vo);

//6. 성공실패 여부를 판단해서 흐르므 제어하기
if(row > 0) {
//성공
response.sendRedirect("ex01Login.jsp");
}else {
response.sendRedirect("ex01Join.jsp");
//실패

}

}

}

Login.jsp

더보기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action = "LoginService" method = "post">
ID : <input type="text" name = "id"><br>
PW : <input type="password" name = "pw"><br>
<input type="submit" value = "로그인">
</form>
</body>
</html>

LoginService.java

더보기

package com.smhrd.controller;

import java.io.IOException;
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.DAO;
import com.smhrd.model.IotMemberVO;

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

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

// 1) 사용자가 입력한 데이터 꺼내오기
request.setCharacterEncoding("UTF-8");

String id = request.getParameter("id");
String pw = request.getParameter("pw");


// //2)입력한 데이터를 하나의 자료형으로 묶기
// IotMemberVO vo = new IotMemberVO(id,pw);
//
// //3)DB에 접근 --> DAO 생성
// DAO dao = new DAO();
//
// //4) 입력한 데이터가 테이블 내에 존재하는지 비교
// IotMemberVO result = dao.login(vo);



//4) 입력한 데이터가 테이블 내에 존재하는지 비교
IotMemberVO result = new DAO().login(new IotMemberVO(id,pw));

//5) 흐름 제어하기
if(result != null){
//성공
//jsp : session 내장겍체이기 때문에 별도로 생성할 필요가 없다.
//servlet : session 내장객체가 아니다. 생성하는 작업이 필요하다.
//1) session은 client가 용청하면 server에서 session id를 만들어서
//client로 되돌려준다!!!
//2) session을 꺼내올 때 client(웹브라우저)가 있는
//session id 값이 필요하다.
//3) 웹 브라우저 요청에 대한 정보가 담긴 request로부터 session을 꺼내와야 한다.

HttpSession session = request.getSession();
session.setAttribute("info", result);


response.sendRedirect("ex01LoginSuccess.jsp");

}else{
response.sendRedirect("ex01LoginFail.jsp");
}

}

}

LoginSuccess.jsp

더보기

<%@page import="com.smhrd.model.IotMemberVO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%

//닉네임을 꺼내오기
//1) 세션에 있는 데이터 가져오기

IotMemberVO result = (IotMemberVO)session.getAttribute("info");
String name = result.getName();

%>

<h1>로그인 성공!</h1>
<b><%=name %>님 환영합니다!</b>
<a href = "ex01Main.jsp"><button>Main page로 돌아가기</button></a>
</body>
</html>

LoginFail.jsp

더보기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>로그인 실패!</h1>
<a href = "ex01Main.jsp"><button>메인 페이지로 돌아가기</button></a>
<a href = "ex01Login.jsp"><button>로그인 페이지로 돌아가기</button></a>
</body>
</html>

DAO

더보기

 package com.smhrd.model;

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

public class DAO {
   
   // JDBC 코드 가지고 있는 자료형
   
   private Connection conn = null;
   private PreparedStatement psmt = null;
   private ResultSet rs = null;
   
   String nickname = null;
   
   // 1. DB 연결을 위한 메소드
   private void getConn() {
      
      // 1) 드라이버 동적 로딩 
      try {
         Class.forName("oracle.jdbc.driver.OracleDriver");
      // 2) DB 연결
         String url = "jdbc:oracle:thin:@localhost:1521:xe";
         String user = "hr";
         String password = "hr";
         conn = DriverManager.getConnection(url, user, password);
         
      } catch (ClassNotFoundException e) {
         e.printStackTrace();
      } catch (SQLException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }
   
      // 2) DB 자원반납 메소드
      private void getClose() {
            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();
            }
         
      }
      
      // 3. 회원정보를 데이터베이스에 저장할 수 있는 메소드 생성
      /**
       * IotMemberVO 자료형을 매개변수로 받아서  
       *  테이블에 데이터를 추가해주는 메소드다.
       *    @author 희원
       *    @since 2022.05.12
       *    @return int(영향을 받은 행의 개수)
       *  @param IotMemberVO(사용자 한명에 대한 정보)
       *    * */
      public int join(IotMemberVO vo) {
         int row = 0;
         
         try {
            getConn();
         
            String sql = "insert into iotmember values(?,?,?,?)";
         
            psmt = conn.prepareStatement(sql);
            
            psmt.setString(1, vo.getId());
            psmt.setString(2, vo.getPw());
            psmt.setInt(3, vo.getAge());
            psmt.setString(4, vo.getName());
            
            // 실행 후 되돌아 온 정수형 데이터가 의미하는 건
            //데이터 베이스 내부에서 영향을 받은 행의 개수.
            row = psmt.executeUpdate();
            
            
            
         } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
         } finally {
            getClose();
         }
         
         return row;
      }
      
      
      //public boolean login(IotMemberVO vo) {
      //9
      public IotMemberVO login(IotMemberVO vo) {
         
         //6
         //boolean check = false;
         //8
         IotMemberVO result = null;
         
         try {
            // 1
            getConn();
            
            // 2
            String sql = "select * from iotmember where id = ? and pw = ?";
         
            // 3
            psmt = conn.prepareStatement(sql);
            
            psmt.setString(1, vo.getId());
            psmt.setString(2, vo.getPw());
            
            // 4
            rs = psmt.executeQuery();
            
            // 5
            //데이터가 있으면 true, 없으면 false
            //check = rs.next();
            // 7
            if(rs.next()) {
               // rs에서는 데이터를 꺼낼 때
               // 커서가 가리키고 있는 데이터만 가져올 수 있다.
               String id = rs.getString("id");
               String pw = rs.getString("pw");
               String name = rs.getString("nickname");
               int age = rs.getInt("age");
               
               result = new IotMemberVO(id, pw, name, age);
               
            }
            
            
         } catch (SQLException e) {
            e.printStackTrace();
         } finally {
            getClose();
         }
         
         //return check;
         //10
         return result;
         }
      
      
}      
      
   

iotmember

더보기

package com.smhrd.model;

public class IotMemberVO {

//한명에 대한 정보를 저장할 수 있는 자료형

private String id;
private String pw;
private String name;
private int age;

//모든 데이터 초기화 시키는 생성자 만들기
public IotMemberVO(String id, String pw, String name, int age) {
this.id = id;
this.pw = pw;
this.name = name;
this.age = age;
}

//생성자 오버로딩
public IotMemberVO(String id, String pw) {
super();
this.id = id;
this.pw = pw;
}


//getter 메소드 만들기
public String getId() {
return id;
}

public String getPw() {
return pw;
}

public String getName() {
return name;
}

public int getAge() {
return age;
}


}

    '코딩 공부/JSP, Servlet' 카테고리의 다른 글
    • [Mybatis]회원 가입 실습 xml
    • [MyBatis]환경 구축
    • [JSP] MVC, JDBC(model1 실습)
    • [JSP]Session
    희원96
    희원96
    개발 공부

    티스토리툴바