Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

기분좋음

국비 55 일차 본문

IT 포트폴리오/국비지원교육 Diary

국비 55 일차

기분좋음:) 2022. 3. 10. 17:58
반응형

쿠키(cookie)

• 웹 서비스를 제공하는 핵심 프로토콜 HTTP는 비연결 지향형 통신 프로토콜이다.

• 클라이언트가 요청을 하면 서버는 응답을 한 후 연결을 끊어버린다.

• 클라이언트가 어떤 정보를 요청할 때마다

  서버는 이전 정보는 기억하지 않고 새로운 연결을 생성한 후, 응답을 진행한다.

 

HTTP가 비연결형 통신 프로토콜이기에 내용유지 X → Cookie 

 

Cookie 

• 쿠키는 클라이언트의 컴퓨터(하드 디스크)에 파일 형태로 저장 하는 정보

                     → 웹 페이지 요청시 저장해둔 쿠키 정보를 서버에 보내서 사용

• 사용자 정보를 지속적으로 유지하기 위해서 사용

장점: 서버의 부하 감소, 사용자 정보 적절하게 활용 

단점: 보안에 취약

 

ex) 쿠키사용-장바구니

쿠키 4KB로 크기 제한 되어있고, 300개의 데이터 정보 배열 저장가능 - 오래된 정보 자동 삭제

 

쿠키 사용법

 - 쿠키 객체 생성

 - 쿠키에 속성 값을 설정

 - response 객체에 addCookie()메소드를 호출해 쿠키 추가

 

쿠키 객체 생성

Cookie info = new Cookie("쿠키이름","쿠키의 값");

쿠키 관련 메소드

메소드 설명
void setComment(String) → String getComment(String) 쿠키에 대한 설명 설정  → 가져오기
void setDomain(String) String getDomain()  쿠키의 유효한 도메인 설정 → 가져오기
void setMaxAge(int)  int getMaxAge() 쿠키의 유효 기간 설정 → 가져오기
void setSecure(String) →  Boolean getSecure()  쿠키의 보안 설정 → 가져오기
void setValue()String) →   String getValue()  쿠키의 값을 설정 → 가져오기

유효시간은 초단위로 숫자를 입력 ex)365일 = 365*24*60*60을 입력

 

 

쿠키를 클라이언트에 보내는 법

(크롬은 쿠키를 암호화 해서 저장 → 쿠키내용 확인시 브라우저에서 확인)

response.addCookie(info);

쿠키를 서버가 받아오는 법

-쿠키가 여러개이므로 배열형태로 가져온다. (반복문으로 확인)

Cookie[] cookies = request.getCookies();

저장된 쿠키 삭제 방법

(유효시간을 0으로 설정)

cookie.setMaxAge(0);

 

 

세션(session)

쿠키의 단점( 저장된 디렉토리만 검색시 정보유출) 보안취약 문제 극복위해 사용

 

세션이란 서버상에 존재하는 객체로서 브라우저당 하나를 할당

HTTP는 기본적으로 비연결 상태 프로토콜이므로 이전의 정보를 저장할수 없지만 ,

서버의 세션 객체가 해당 브라우저와의 정보를 저장했다가 다음 요청시 저장된 정보가 있다면 객체 내에서 꺼내서 사용

ex) 로그인 인증

 

세션의 장점

- 서버에서만 접근가능(보안 유지↑)

- 저장할 수있는 데이터의 한계가 없다.(메모리 허용범위 내 저장가능)

 

세션 사용하기 - 내장 객체 session을 사용한다.

(세션에 값을 저장후, 가져와서 사용)

• 세션에 값을 저장하기

session.setAttribute(String name, Object value);

• 세션에서 값을 얻어오기

[문자열] (String) session.getAttribute(String name);
[숫자] (Integer) session.getAttribute(String name);

 

 

메소드 설명
void setAttribute(String name, Object value) 세션에 지정된 이름에 객체를 추가
Object getAttribute(String name) 이름에 해당하는 객체 값을 가져온다. 없을 경우 null반환, 반환 타입은 Object이므로  반드시 형변환이 필요
Enumeration getAttributeNames() 세션에서 모든 객체의 이름을 Enumeration형으로 가져온다.
Boolean isNew() 해당 세션이 처음 생성되었다면 true, 이전에 생성된 세션이라면 false을 반환
int setMaxInactiveInterval() →  get 사용자가 다음 요청을 보낼 때까지 세션을 유지하는 최대 시간(초 단위)을
설정 → 반환  (기본 30분, -1입력시 무한대)
void invalidate() 해당 세션을 없애고 세션에 속한 값을 제거

 

Enumeration getAttributeNames()

-Enumeration객체로 얻어온 후 두개의 메소드를 사용해 확인

메소드 설명
Boolean hasMoreElements() Enumeration 객체에 뽑아 올 데이터가 있는지를 확인 후 있으면 true,없으면 false를 반환
E nextElements()  데이터를 하나씩 뽑아오는 역할

 

6강

 

자바 빈(java bean)

관련 된 데이터들을 하나로 묶어서 관리하기 위한 메커니즘

데이터를 표현하는 것을 목적으로 한 자바 클래스

• 자바 빈은 정보의 집합체로 필요한 정보를 객체로 구성해서 한꺼번에 접근해서 사용가능(틀)

• 단순 정보의 저장뿐 아니라 데이터 은닉 개념을 사용

 

-자바 빈 규칙

  • 클래스는 패키지화 되어야 한다.  -(도메인이름,폴더이름)형태로 선언
  • 멤버변수는 property(접근제한자 private)라고 한다.
  • 외부 접근 Getter/Setter로 접근

ex)회원가입 시에 회원가입 페이지에 받은 정보를 데이터베이스에 전달

 

Bean class생성

package com.edu.test;

public class MemberBean {
	private String name;
	private String userid;	
	private String nickname;
	private String pwd;
	private String email;
	private String phone;
	//멤버변수 접근제한자 private(데이터 은닉)
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}        
    .....
    //외부 접근 Getter/Setter

 

JSP에서 자바빈 활용하는 액션태그

액션태그 설명
<jsp:useBean> 자바빈을 생성
<jsp:getProperty> 자바빈에서 정보를 가져온다
<jsp:setProperty> 자바빈에 정보 저장

JSP에서 자바 빈을 생성

1. 액션태그로 생성

    <jsp:useBean>

2. 액션태그 없이 생성

<%@ page import="패키지명.자바빈클래스" %>
<%
MemberBean member = new MemberBean();
%>

3.임포트 없이 자바빈 객체를 생성

<%
패키지명.MemberBean member= new 패키지명.MemberBean();
%>

 

 

JSP에서 자바 빈 객체에서 프로퍼티 값 가져오기

 

<%=member.getName()%>

JSP에서 자바 빈 객체에서 프로퍼티 값 설정

<% member.setName("홍길동")

 

자바 빈 객체를 액션태그로 가져오기 = 유효범위.setAttribute()    동일 기능

<jsp:useBean   class="패키지명.MemberBean"
                  id="member"
                  scope="page"/>
                  
               동일
               
<%
패키지명.MemberBean member = new 패키지명.MemberBean();
pageContext.setAttribute("member",member);
%>

 

 

scope속성

자바빈 태그에 의해 생성된 객체가 사용될 수 있는 유효 범위를 결정

scope 속성 값 설명
page 자바 빈은 생성된 페이지 내에서만 사용
request 자바 빈은 생성된 요청을 수행하는 페이지들 에서만 사용
session 자바 빈은 생성된 세션에서 요청을 처리하는 페이지들에서 사용
application 자바 빈은 생성된 응용 프로그램에 포함된 모든 페이지들에서 사용

 

 

값 저장, 가져오기

<jsp:setProperty name="member" propert="name"/>

                                               동일

Member.setName('request.getParameter("name")')

 

 

 

property="*" 한꺼번에 데이터를 가져와서 저장

<jsp:setProperty name="member" property="*"/>

 

표현 언어(EL:Expression Language)

값을 웹 페이지에 표시하는데 사용하는 태그

 

${변수}

종류 연산자
산술 +, -, *, /(div), %(mod)
관계형 ==(eq), !=(ne), <(lt), >(gt), <=(le), >=(ge)
조건형 a ? b : c
논리형 &&(and), ||(or), !(not)
null 검사 empty (비어있으면 true)

기호와 텍스트 둘다 사용 가능 

${3==3} 과 ${3eq3} 동일 

 

요청 처리  param

내장객체 설명
param JSP 내장객체 request의 getParameter()와 동일 역할 -파라미터의 값을 알려준다.
paramValues request의 getParameterValues()와 동일 역할 -동일한 이름의 파라미터 값들을 배열 형태로 얻어온다.

param객체는 .또는 []로 사용자의 입력값을 가져온다

ex) ${param.id} , ${param["pwd"]}

 

• 표현 언어에서 null처리는 공백으로 사용된다.

• Java에서 객체 비교를 위해선 equals메소드를 사용해야 하는 반면 표현언어로는 ==으로 객체에 저장된 값을 비교할    수 있다.

• 표현언어는 문자열을 숫자로 변환할 필요도 없다. (형 변환 없이 산술 가능)

 

표현언어 객체에 저장된값 가져오기

${pageScope.num1}

${requestScope.num1}

${sessionScope.num1}

${applicationScope.num1}

 

JSTL(JSP Standard Tag Library)

JSP에 사용가능한 표준 태그 라이브러리(코드를 간결하고 가독성 높게 처리 가능)

자신만의 태그-커스텀 태그를 표준화 한 것

 

• 간단한 프로그램 로직의 구현가능(변수 선언, 조건(if),반복(for)등에 해당하는 로직)

• 다른 JSP 페이지 호출

• 날짜, 시간, 숫자의 포맷

• JSP 페이지 하나를 가지고 여러 가지 언어의 웹 페이지 생성

• 데이터 베이스로의 입력, 수정, 삭제, 조회

• XML 문서의 처리

• 문자열을 처리하는 함수 호출

 

JSTL 5가지 커스텀 태그

커스텀 태그 설명
core(기본기능) 일반프로그램이 제공하는 것과 유사한 기능을 제공
format(형식화) 숫자, 날짜, 시간을 포맷팅하는 기능
sql(데이터베이스) 데이터 베이스의 데이터를 입력, 수정, 삭제, 조회하는 기능
xml(XML 처리) XML 문서를 처리할 때 필요한 기능
function(함수 처리) 문자열을 처리하는 함수를 제공

 

JSTL 설치

아파치 톰캣 사이트에 들어간다. https://tomcat.apache.org/

taglib → compat 제외 나머지 3개 다운로드 → WebContent → Web-INF →lib에 넣어준다.

 

 

태그 라이브러리를 사용하려면 JSP 페이지에 taglib 지시자를 추가하여 URI 식별자와 접두사를 연결해야 한다.

•prefix가 태그에 사용할 접두어

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

 

 

core태그 종류(기본 접두어 c)

태그  설명
<c:set> 변수의 값을 설정
<c:remove> 변수 제거
<c:if> 조건문 사용 (if 문)
<c:choose> 여러 조건에 따라 달리 처리 사용 (switch 문)
<c:forEach> 반복문 사용
<c:import> 외부자원을 url을 지정하여 가져다 사용
<c:redirect> 지정한 경로로 이동
<c:out> 데이터 출력시 사용 <%= %>을 대체가능
<c:catch> 예외 처리에 사용
<c:forTokens> 구분자로 불리된 각각의 토큰 처리시 사용

 

<c:set> : 변수에 값을 저장할 때 사용

속성 설명
var 변수 이름을 String으로 지정
value 변수에 저장할 값을 지정
scope 변수의 유효범위 지정 (기본값=page)

 

<c:set var="msg" value="Hello" scope="request />
     변수이름   저장할 값(생략가능)   저장 영역

 

 

<jsp:setProperty name="자바빈 객체" property="프로퍼티이름" value="저장할값"/>을 대체 가능

<c:set target="${자바빈 객체}" property="프로퍼티 이름" value="저장할 값" />

 

변수 선언 후 산술연산이나 비교연산도 사용 가능

<c:set var="변수" value="${10>5" />

 

 

<c:remove> 변수 삭제시 사용

<c:remove var="변수이름" scope="범위"/>
반응형

'IT 포트폴리오 > 국비지원교육 Diary' 카테고리의 다른 글

국비 57 일차  (0) 2022.03.14
국비 56 일차  (0) 2022.03.11
국비 54 일차  (0) 2022.03.08
국비 53 일차  (0) 2022.03.07
국비 52 일차  (0) 2022.03.03