버터감자
오늘도 내 하루는
버터감자
전체 방문자
오늘
어제
  • 분류 전체보기 (139)
    • 🏃‍♀️ Do it ! (80)
      • TIL (73)
      • Project (5)
      • Certificate (2)
    • 📓 TechNote (52)
      • RPA (1)
      • Python (2)
      • JAVA (13)
      • Spring (11)
      • SQL (7)
      • Git & GitHub (6)
      • CS (0)
      • HTML & CSS & JavaScript (2)
      • Tools (9)
      • API (1)
    • 🔔 Error (7)
      • Error (7)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • foreach
  • 코틀린
  • 부트스트랩
  • SQL
  • dml
  • 홈페이지
  • 게시판
  • 세션
  • 함수
  • 큐
  • 데이터베이스
  • 버블소트
  • 톰캣
  • 배열
  • 문제풀이
  • sqld
  • opacity
  • 변수
  • 이클립스
  • 스택
  • 객체지향
  • 기본쿼리
  • final필드
  • 이것이자바다
  • 스프링
  • 포트폴리오
  • 오라클
  • callback
  • 안드로이드
  • 만들기

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
버터감자

오늘도 내 하루는

내장 객체(Implicit Object) - 세션 객체 / application 객체 / 내장객체의 영역 / 액션태그 (Action Tag)
🏃‍♀️ Do it !/TIL

내장 객체(Implicit Object) - 세션 객체 / application 객체 / 내장객체의 영역 / 액션태그 (Action Tag)

2022. 10. 31. 09:39
728x90

2022 / 10 / 31 월

  • 세션 객체 session
  • application 객체
  • 내장객체의 영역
  • 액션태그 (Action Tag)
  • 자바빈(JavaBean)
  • JDBC 라이브러리

✔ 세션 (session) 객체

세션
클라이언트가 서버에 연결된 상태

- 로그인 사용자를 구분해서,
로그인한 사용자에게 보여주는 메뉴
비로그인한 사용자에게 보여주는 메뉴

세션 ID
유저가 브라우저를 이용하여, 사이트를 첫 접속했을 경우
해당 서버에서 사용자를 구분하는 목적으로 발급(생성)해주는 고유한 ID


세션객체

하나의 웹 브라우저 내에서 정보를 유지하기 위한 세션 정보를 저장하고 있는 객체
 
웹 브라우저(클라이언트)당 1개가 할당
- 주로 회원관리 시스템에서 사용자 인증에 관련된 작업을 수행할 때 사용
 
session 내장 객체의 메소드
String getId( ) 해당 웹 브라우저에 대한 고유한 세션 ID를 리턴
long getCreationTime( )
해당 세션이 생성된 시간을 리턴
long getLastAccessedTime( )  마지막 접근시간을 리턴
void setMaxInactiveInterval(time)  세션 유지시간을 지정
int getMaxInactiveInterval( )  기본 값은 30분으로 세션 유지시간을 리턴
boolean isNew( )  새로 생성된 세션의 경우 true 값을 리턴
void invalidate( ) 세션을 무효화

⚙ 로그인된 상태에서 10초뒤 로그아웃이 되도록 코드를 작성해보자 !

1. sessionTimeout.jsp

<body>
<%
	// 톰캣의 기본 세션시간 : 30분(1800초)
	
	//세션시간을 설정할 때 사용. 단위 : 초
	session.setMaxInactiveInterval(10);

	// 서버측으로부터 발급받은 세션ID로 가지고 서버에 접속하여, 
    // 그 세션 ID로 관리되는 메모리에 아래정보를 저장한다. 
	session.setAttribute("loginstatus", "doccomsa");
	
%>
<a href="loginstatus.jsp">로그인 상태확인하기</a>
</body>

2. loginstatus.jsp

<body>
<%
	// 현재 갖고있는 세션ID로 서버측의 메모리에서 아래정보가 존재하는지 체크
	if(session.getAttribute("loginstatus") != null) {
		out.println("로그인 상태입니다.");
	}else {
		out.println("로그인 상태가 아닙니다.");
	}
%>
<a href="logout.jsp">로그아웃</a>
</body>

 


✔ application 객체

어플리케이션 객체 
- 웹 어플리케이션 Context의 정보를 저장하고 있는 객체
 
서버의 설정 정보, 자원에 대한 정보, 어플리케이션이 실행되는 동안에 발생할 수 있는
이벤트 로그 정보등을 제공하며, 웹 어플리케이션 당 1개의 객체가 생성
- 주로 방문자 카운트와 같은 하나의 웹 어플리케이션에서 공유하는 변수에 사용

 

application 객체 메소드
String getServerInfo( )
웹 컨테이너의 이름과 버전을 리턴
String getMimeType(fileName) 지정한 파일의 MIME타입 리턴
String getRealPath(path) 지정한 경로를 웹 어플리케이션 시스템상의 경로로 변경하여 리턴
void log(message)
로그 파일에 message를 기록

<body>

	<h2>application 내장객체</h2>
	<%
		String info = application.getServerInfo();
		String path = application.getRealPath("/");
		application.log("로그 기록 :");
	
	%>
	
	웹 컨테이너의 이름과 버전 : <%=info %><br>
	웹 어플리케이션 폴더의 로컬 시스템 경로 : <%=path %>

</body>


✔ 내장객체의 영역

웹 어플리케이션은 page, request, session, application 4개의 영역을 갖는다

 

내장 객체의 영역 : 객체의 유효기간 // 객체를 누구와 공유할 것인가를 나타냄
 

1. page영역
한 번의 웹 브라우저(클라이언트)의 요청에 대해 하나의 JSP페이지가 호출

2. request영역
한 번의 웹 브라우저(클라이언트)의 요청에 대해 같은 요청을 공유하는 페이지가 대응
- include 액션 태그, forward 액션 태그를 사용하면 request 객체를 공유하게 됨

3.session영역
하나의 웹 브라우저 당 1개의 session객체가 생성
- 같은 웹 브라우저 내에서는 요청되는 페이지들
- 주로 회원관리에서 회원인증에 사용

4. application영역
하나의 웹 어플리케이션 당 1개의 application 객체가 생성
- 같은 웹 어플리케이션에 요청되는 페이지들
- /studyjsp 웹 어플리케이션에서는 같은 application객체를 공유


✔ 액션태그 (Action Tag)

액션태그란 ?
페이지 사이의 제어를 이동시킬 수도 있고, 다른 페이지의 실행결과를 현재의 페이지에 포함시킬 수 있다.
JSP가 제공하는 액션 태그에는
include, forward, plug-in, useBean, setProperty, getProperty 등이 있다
 
forward 액션태그
<jsp:forward>
웹 페이지 간의 제어를 이동시킬 때 사용
plug-in 액션태그
<jsp:plug-in>
웹 브라우저에서 자바 애플릿을 실행시킬 때 사용
useBean 액션태그
<jsp:useBean>
자바빈을 JSP페이지에서 사용할 때 사용
setProperty 액션태그
<jsp:setProperty>
프로퍼티의 값을 세팅할 때 사용
getProperty 액션태그 
<jsp:getProperty>
프로퍼티의 값을 얻어낼 때 사용

1 . include 액션태그 - <jsp:include>

다른 페이지의 처리 결과를 현재 페이지에 포함하며, 페이지를 모듈화 할 때 사용한다.

1. includedTest.jsp

<body>
<p> 
include 지시자는 하나의 파일로 합쳐지고, 서블릿형태의 자바로 변환 및 컴파일 과정 후 실행된다. 
include 액션태그는 독립적으로 자바로 변환 및 컴파일 과정 후 실행되어, 그 결과가 삽입된다.
</p>

<jsp:include page ="top.jsp" />

</body>

2. top.jsp

<body>

join | mypage | login

</body>

jsp:include 는 별도로 실행이 되고 결과를 만들어서 들어오기 때문에
top_jsp파일도 java파일이 생성된다.

✨결과는 화면으로 봤을 때 동일하지만 처리하는 과정이 다르다 !


⚙ 사용자에게 이름을 입력받는 include 액션태그 예제 1

1. 첫번째 페이지의 pageName을 두번째 페이지에 입력하자

2. includedTest의 내용이 pageName에 저장되며 실행된다

🔔
사용자가 이름을 입력하면 두번째 페이지 실행
두번째 페이지와 세번째 페이지의 request는 동일한 의미를 갖게되며 실행된다.


🛠 실행 결과 🛠


⚙ include 액션태그 예제 2


❗⚠❗ 유의사항
value 값안에 공백을 넣으면 공백도 데이터로 파악한다.
따라서, 공백이 없도록 코드를 작성하자 !


2 . forward 액션태그 - <jsp:forward>

다른 페이지로 프로그램의 제어를 이동할 때 사용
 
forward 액션태그를 만나게되면,
그 전까지 출력버퍼에 저장되어 있던 내용을 제거한 후 forward 액션태그가 지정하는 페이지로 이동한다.
 

⚙ 사용자가 좋아하는 색을 나타내는 forward 액션태그 예제 1


1. forwardParam.jsp

<body>

<h2>포워딩될 페이지에 파라미터값 전달 예제</h2>
<form method="post" action="forwardParamTo.jsp">
  <dl>
    <dd>
      <label for="name">이름</label>
      <input id="name" name="name" type="text"
                 placeholder="홍길동" autofocus required>
    </dd>
    <dd>
      <label for="color">색선택</label>
      <select id="color" name="color" required>
        <option value="blue" selected>파랑색
        <option value="green">초록색
        <option value="red">빨강색
        <option value="yellow">노랑색
      </select>
    </dd>
    <dd>
      <input type="submit" value="확인">
    </dd>
  </dl>
</form>

</body>

2. red.jsp

    <style>
    	img {
    		border : 0px;
    		width : 70px;
    		height : 30px;
    	}
    </style>
    
    <%
    	String name = request.getParameter("name");
    	String selectedColor = request.getParameter("selectedColor");
    %>
    <h2> 포워딩되는 페이지 - <%=selectedColor + ".jsp" %></h2>
    <b><%=name %></b> 님이 좋아하는 색상은 <%= selectedColor%>이고, 생명을 상징하는 색입니다. <br>
    <img src ="<%=selectedColor + ".jpg" %>">

🛠 실행 결과 🛠


✔ 자바빈(JavaBean)

자바빈이란 ?

자바로 작성되어진 컴포넌트로 클래스들로 이루어진 복합적인 구조를 갖는다.

지금까지 코딩방법의 문제점
화면 표시부분과 로직코드가 같은 페이지 내에 기술되어 가독성이 떨어짐
-> 코드를 재사용하기 어려움


자바빈 클래스 작성
1. package 패키지명; (없으면 생략가능)
2. import 패키지명을 포함한 클래스의 풀네임; (없으면 생략가능)
3. class 클래스명{
//필수정의, 생략 불가능
}


✔ JDBC 라이브러리

JDBC 라이브러리?
- JDK 구성 요소 중 하나이다.
- java.sql 패키지가 JDBC기능을 제공한다.
- 기능 : 데이터베이스를 연결하고, 쿼리(SQL문)을 실행하는 기능

jdbc driver : 데이터베이스 접속하기 위해, 데이터베이스 회사에서 제공하는 프로그램
[ 오라클, MS-SQL Server, My-SQL, DB2, Sybase, ... ]

'🏃‍♀️ Do it ! > TIL' 카테고리의 다른 글

JSTL / Spring 준비하기 🛠  (0) 2022.11.02
쿠키 / 세션 / 표현언어(EL)  (0) 2022.11.01
백엔드 개발자가 되기 위해서는 ... / 웹 프로그래밍 / JSP  (0) 2022.10.27
데이터베이스 예외처리 / 트랜잭션  (0) 2022.10.26
데이터베이스 PL / SQL 기본 구조 , 구성요소, 제어문, 사용자 정의 함수 / 프로시저  (0) 2022.10.25
    '🏃‍♀️ Do it !/TIL' 카테고리의 다른 글
    • JSTL / Spring 준비하기 🛠
    • 쿠키 / 세션 / 표현언어(EL)
    • 백엔드 개발자가 되기 위해서는 ... / 웹 프로그래밍 / JSP
    • 데이터베이스 예외처리 / 트랜잭션
    버터감자
    버터감자
    🌱 새싹 개발자의 코딩 블로그 🌱

    티스토리툴바