일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- #홍콩쌀국수 #탐차이
- #홍콩2층버스
- #홍콩 #홍콩한달살기 #홍콩버스 #버스어플 #홍콩음식 #홍콩여행 #kmb #lwb#홍
- #홍콩 #홍콩여행 #홍콩한달살기 #옥토퍼스카드
- #홍콩 #홍콩여행 #홍콩한달살기 #홍콩사이언스파크 #홍콩산책 #홍콩야경 #홍콩턱돌이
- forward #include #param
- Servlet #JSP #GET #POST #클라이언트
- #라이브러리 #개발자 #REACT #Bootstrap
- #라이브러리
- #라이브러리 #개발자 #REACT #Bootstrap #Visual Studio
- 블로그 태그 #국비 #국비학원 #IT #개발자 #프로그래머 #신입 #코딩 #안드로이드 #자바 #JAVA #오라클 #Oracle #SQL #MYSQL #HTML #CSS #JAVASCRIPT #자바스크립트 #서블릿 #SERVLET #JSP #자바스프링 #데이터베이스 #
- JSP #표현언어 #page #include #taglib
- #홍콩여행 #홍콩국가 #홍콩지도 #홍콩날씨
- JSP #액션태그 #
- 서블릿 #Servlet #Request #Response #개발자
- 백엔드개념 #WAS
- #홍콩 #홍콩여애 #홍콩한달살기 #베트남식당 #viet'schoice #외식 #카레 #양지머리카레 #양지머리 #고기쌀국수 #육수존맛 #레몬차 #밀크티 #shatin #홍콩쇼핑 #asus노트북 #어댑터 #홍콩돼지코
- #라이브러리 #개발자 #REACT #Bootstrap #REST API #웹 디자인 #디자인 툴
- #국비 #국비학원 #IT #개발자 #프로그래머 #신입 #코딩 #안드로이드 #자바 #JAVA #오라클 #Oracle #SQL #MYSQL #HTML #CSS #JAVASCRIPT #자바스크립트 #서블릿 #SERVLET #JSP #자바스프링 #데이터베이스 #프레임워크
- #라이브러리 #개발자 #REACT #Bootstrap #REST API
- #홍콩 #홍콩여행 #홍콩한달살기 #홍콩집밥 #홍콩생활 #홍콩베이징구스 #홍콩산책 #홍콩조깅 #홍콩우편함
- Today
- Total
기분좋음
국비 55 일차 본문
쿠키(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="범위"/>