본문 바로가기
복습정리

Java(jsp) + MySQL

by IT새내기IM 2023. 1. 21.

jsp 는 자바를 웹서버에서 쉽게 쓰기 위한 기술이며 언어가 아니다.

 

1. JDBC 기본 구조

2. MySQL 연동

dbconnection.java - getRole()

dbconnection.java 는 MySQL과 dbconnection.java 클래스를 이용하여 데이터를 처리하는 클래스 이다.

 

1. JDBC 드라이버 로딩

  • JDBC API 사용을 위해 Class.forName 메서드를 이용하여 JDBC 드라이버 로딩
  • DB 마다 클래스 이름이 다르므로 해당 DB 이름을 정확하게 넣어야 한다.
Class.forName("com.mysql.jdbc.Driver");

 Oracle DB 사용시 "oracle.jdbc.driver.OracleDriver"

2. 데이터베이스 연결

private static String dburl = "jdbc:mysql://localhost:3306/connectdb1?serverTimezone=Asia/Seoul&useSSL=false";
private static String dbUser = "connectuser";
private static String dbpasswd = "비밀번호";
  • dburl : 접속 url, //ip:포트번호/사용id
    MySQL의 기본 포트번호는 3306 
  • dbUser : 사용할 유저 아이디
  • dbpasswd = 유저 비밀번호

 Oracle DB 사용시
url 부분 : "jdbc:oracle:thin:@localhost:1521:xe"
@ip:포트번호:xe
 Oracle의 기본 포트번호는 1521 .

  • 데이터베이스 연결 설정
//드라이버 로딩
Class.forName("com.mysql.jdbc.Driver");
//커넥션 객체
conn = DriverManager.getConnection(dburl, dbUser, dbpasswd);

3. SQL문 작성

PreparedStatement ps = null; //객체 생성

String sql = "SELECT description,role_id FROM role WHERE role_id = ?";
ps = conn.prepareStatement(sql);
ps.setInt(1, roleId);
rs = ps.executeQuery(); //명렁어 실행
  • PreparedStatement 에서는 필요한 변수를 ? 로 표시하여 사용
  • ? 파라미터 값에 setInt를 이용하여 roleId 매핑
if(rs.next()) {
	String description = rs.getString(1);
	int id = rs.getInt("role_id");
	role = new Role(id, description);				
}
  • rs.next() : 데이터 존재 여부 확인
    결과값이 있다면 첫번째 레코드에 가서 true 리턴
    결과값이 없다면 false 리턴
  • 컬럼의 데이터 타입에 맞춰 컬럼 순서 or 컬럼명 입력

4. SQL문 처리명령

  1. executeQuery
    select 명령문에서 사용
    반환값 : ResultSet 클래스의 인스턴스로 반환
  2. executeUpdate
    insert, update, delete 명령문에서 사용
    반환값 : int

5. 연결 해제

rs.close();
ps.close();
conn.close();

출처:https://velog.io/@joajoa

 

 

request.setCharacterEncoding("utf-8");  한글이 있다면 캐릭터 셋 - 매칭 처리한다.

4대영역객체

  • JSP 내장 객체 중 각기 다른 영역(Scope)을 갖는 4대 영역 객체
    • page, request, session, application 영역에 대응하는 pageContext, request, session, application 객체
  • 각 영역 객체에 저장되는 데이터를 속성(Attribute) 이라고 하며, 저장 및 가져오는 메서드가 동일
    • 페이지에 데이터를 저장하는 메서드 : setAttribute()
    • DB에서 데이터를 가져오는 메서드 : getAttribute()

[ 각 영역 객체별 특징 ]

page 영역의 pageContext

  • 현재 페이지 정보를 저장하고 관리하는 객체
  • 현재 페이지 내에서만 접근 가능
    • 페이지가 변경(이동)되면 현재 페이지 정보가 저장된 pageContext 객체가 제거됨
    • 현재 페이지 정보는 사라지고, 새로운 페이지 정보를 관리하는 pageContext 객체가 생성됨

request

  • 현재의 요청(request) 정보를 저장하고 관리하는 객체
  • 현재 요청에서부터 응답(response) 페이지까지는 접근 가능
    • ex) "a.jsp" 페이지의 form 태그에서 "b.jsp" 페이지로 요청이 발생할 경우
    • 새로운 request 객체가 생성되고 응답 페이지인 "b.jsp" 페이지까지 request 객체가 유지됨 (request.getParameter() 메서드)
    • ex2) "a.jsp" 페이지에서 "Dispatcher 방식"의 포워딩을 통해 페이지를 이동할 경우
    • 새로운 request 객체가 생성되지 않고 그대로 request 객체가 유지됨
  • 만약, 새로운 요청이 발생하면 기존 request 객체가 제거됨
    • 기존에 저장되어 있던 요청 정보가 사라지고 새로운 request 객체가 생성됨

 

💡 (새로운 요청이란? response.sendRedirect(), 하이퍼링크, 자바스크립트 location.href, URL 직접 입력 등)

 

  • 주의사항!
    • form 태그 또는 URL 을 통해 전달된 파라미터값은 request.getParameter() 메서드로 가져올 수 있다.
    • request.setAttribute() 메서드로 저장되어 전달받은 데이터는 request.getAttribute() 메서드로만 가져올 수 있다.

session

  • 클라이언트와 서버 간의 연결 정보를 저장하고 관리하는 객체
  • 페이지와 무관하게 웹브라우저가 동작하는 동안 유지되는 객체
  • 웹브라우저를 완전히 종료하거나, 세션 타이머가 만료되거나(기본값 1800초 = 30분)
  • invalidate() 메서드를 호출하여 세션을 초기화하면 session 객체 정보가 제거됨(removeAttribute() 메서드는 단일 세션 속성 제거 가능한 메서드)
    • ex1) 로그인 시 세션 객체에 아이디를 저장하고, 로그아웃 수행 시 세션에 저장된 아이디 제거
    • ex2) 쇼핑몰에서 비회원 상태에서 장바구니에 상품을 담고, 웹브라우저 종료 시 세션에 저장된 장바구니 제거

application

  • 웹 애플리케이션 서버(WAS = 웹컨테이너 = 톰캣)에 대한 정보를 관리하는 객체
  • 웹 애플리케이션(프로젝트) 당 하나의 application 객체만 생성됨
    • 애플리케이션 전체 영역에서 하나의 객체를 공유함 (세션은 접속자마다, 브라우저마다 새로운 session 객체 생성)
    • 서버가 시작되면 application 객체가 생성되고, 서버가 중단되면 객체가 제거됨

[ 영역 객체의 공통 메서드 ]

  1. setAttribute(String key, Object value)
    • key 에 해당하는 이름으로 value 에 해당하는 데이터를 저장(= 매핑)
    • key 에 해당하는 이름은 객체의 데이터를 구분하는 용도로 사용하며 중복되는 key 값이 지정될 경우, 기존의 데이터를 덮어쓰게 됨
      • 하나의 key 에 저장될 수 있는 value(데이터)는 동시에 하나뿐
    • Object 타입으로 전달되는 value(데이터)는 모든 타입을 사용 가능(만능 타입)
      • ex) 사물함의 특정 번호를 key 로 지정하고, 해당 사물함 번호에 물건(value)을 저장하는 것
  2. getAttribute(String key)
    • key 에 해당하는 value(데이터) 를 리턴(= 가져오기)
    • 리턴타입이 Object 타입(어떤 데이터든 모두 Object 타입으로 리턴됨)
      • 따라서, 상황에 따라 변수에 저장 등의 경우 형변환 연산자를 통해 데이터타입을 변환해야 할 수 있음 ex) 사물의 번호를 key 로 사용하여 사물함 내에 저장된 물건(value)을 꺼내는 것
  3. removeAttribute(String key)
    • key 값으로 등록되어 있는 key 와 value 를 모두 제거

출처:https://dami97.tistory.com/entry/JSP-4%EB%8C%80-%EC%98%81%EC%97%ADScope-%EA%B0%9D%EC%B2%B4

 

 

 

 

 

 

'복습정리' 카테고리의 다른 글

F12 - Network - Ctrl+R 관리자  (0) 2023.05.04
Java  (0) 2023.01.15
JavaScript  (0) 2023.01.05
HTML CSS  (0) 2023.01.05

댓글