20221031(월)
- 목차
- session 객체
- application 객체
- 내장객체의 영역
- JSP 페이지의 모듈화
- 데이터베이스와 JSP의 연동
< session 객체 >
- 세션(Session) : 클라이언트가 서버에 연결된 상태.
- 로그인 사용자를 구분해서
- 로그인한 사용자에게 보여주는 메뉴
- 비로그인한 사용자에게 보여주는 메뉴
- 세션ID
: 유저가 브라우저를 이용하여, 사이트를 첫 접속했을 경우
해당 서버에서 사용자를 구분하는 목적으로 발급(생성)해주는 고유한 ID
< application 객체 >
- 웹 어플리케이션 Context(문맥, 정황)의 정보를 저장하고 있는 객체
- 서버의 설정 정보, 자원에 대한 정보, 어플리케이션이 실행되는 동안에 발생할 수 있는 이벤트 로그 정보등을 제공
- 웹 어플리케이션 당 1개의 객체가 생성
<%@ 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>
<h2>application 내장객체</h2>
<%
String info = application.getServerInfo();
String path = application.getRealPath("/");
application.log("로그 기록 : ");
%>
웹 컨테이너의 이름과 버전 : <%= info %><br>
웹 어플리케이션 폴더의 로컬 시스템 경로 : <%= path %>
</body>
</html>
< 내장객체의 영역 >
- 웹 어플리케이션은 page, request, session, application 이라는 4개의 영역을 가짐
- 내장 객체의 영역 : 객체의 유효기간
- 객체를 누구와 공유할 것인가를 나타냄
✨ 영역 암기!!!
page영역 | 한 번의 웹 브라우저(클라이언트)의 요청에 대해 하나의 JSP페이지가 호출. |
request영역 | 한 번의 웹 브라우저(클라이언트)의 요청에 대해 같은 요청을 공유하는 페이지가 대응. 같은 request영역 include 액션 태그, forward 액션 태그를 사용하면 request 객체를 공유하게 됨 |
session영역 | 하나의 웹 브라우저 당 1개의 session객체가 생성. 같은 session영역 같은 웹 브라우저 내에서는 요청되는 페이지들 주로 회원관리에서 회원인증에 사용. |
application영역 | 하나의 웹 어플리케이션 당 1개의 application 객체가 생성. 같은 application영역 - 같은 웹 어플리케이션에 요청되는 페이지들 - /studyjsp 웹 어플리케이션에서는 같은 application객체를 공유 |
< JSP 페이지의 모듈화 >
(1) include 액션태그 - <jsp:include>
include action태그 jsp:include 는 별도로 실행이 되고 결과를 만들어서 들어오기 때문에
top_jsp파일도 java파일이 생성된다.
(include 지시자 <%-- <%@include file = "top.jsp" %> --%> 는 top.jsp 자바파일이 생성되지 않는다!
*결과는 화면으로 봤을 때 동일하지만 처리하는 과정이 다르다!
(2) request
- 주의! " " 사이에 <% 사이에 공백 넣으면 공백까지 값으로 입력되므로 주의하기!!!!
(3) forward 액션태그 - <jsp:forward>
include는 보여진다.
forward는 내용이 보여지지 않는다.
✨ JSP 인클루드 방법
1) include 지시자 <%@ include file = ""%>
2) 액션태그
- 파라미터 사용가능.
- <jsp:include>
- <jsp:forward>
< 데이터베이스와 JSP의 연동 >
- JDBC(Java Database Connectivity)의 개요
자바 프로그램(JSP포함)과 관계형 테이터 원본(데이터베이스, 테이블...)을 연결하는 인터페이스
JDBC 라이브러리는 ‘java.sql’ 패키지에서 제공
JDBC 라이브러리는 SQL문을 실행시키기 위한 인터페이스로 설계 - JDBC 라이브러리 : JDK 구성요소 중의 하나이다.
- java.sql 패키지가 JDBC 기능을 제공한다.
- 기능 : 데이타베이스를 연결하고 쿼리(SQL문)를 실행하는 기능 - JDBC Driver
: 데이타베이스를 접속하기 위하여, 데이타베이스 회사에서 제공하는 프로그램 - 오라클, MS-SQL Server, My-SQL, DB2, Sybase, ...
< 드라이버 테스트 >
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<h2>JDBC드라이버 테스트.</h2>
<%
Connection conn = null;
try {
String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:xe";
String dbId = "ora_user";
String dbPass = "1234";
// 오라클 드라이버(ojdbc8.jar)에 존재하는 클래스명
Class.forName("oracle.jdbc.OracleDriver"); // DriverManager 객체가 메모리상에 생성됨.
// Sql Developer 툴로 접속한 의미와 커넥션 객체생성 의미가 동일
conn = DriverManager.getConnection(jdbcUrl, dbId, dbPass);
out.println("데이타베이스가 연결됨");
} catch(Exception ex) {
}
%>
✨ 암기하기!!
JDBC를 사용한 JSP와 데이터베이스의 연동
JDBC프로그램의 작성단계
3단계(Statement/PrepardStatement/CallableStatement 객체 생성)
sql쿼리를 생성하며, 반환된 결과를 가져오게 할 작업영역을 제공
예)
- Statement stmt = conn.createStatement();
- PrepardStatement pstmt = prepareStatement(sql); ➡ 나중에 얘 관련 에러 많이나온다!(스프링에서)
- CallableStatement cstmt = prepareCall();
'🏫 Open API_JAVA' 카테고리의 다른 글
[70일차] JSTL 라이브러리 / 기본이론 / 스프링 프레임워크 / CRUD 기능 (0) | 2022.11.04 |
---|---|
[69일차] 쿠키 / 표현언어 Expression Language : EL (0) | 2022.11.03 |
[67일차] JSP 페이지의 디렉티브 / 스크립트 요소 / 주석 / 제어문 / 내장 객체 (0) | 2022.11.01 |
[66일차] 백엔드 / 웹 프로그래밍의 이해 / 각 파일들의 역할 - jsp, servlet (0) | 2022.10.31 |
[65일차] 예외처리 / 트랜잭션 (0) | 2022.10.30 |