반응형

Cache-Control 헤더 : 캐시 관련 정책 설정 헤더

1. max-age

캐시 유지 시간.

max-age=0 인 경우 캐시서버의 캐시된 entry에 대해서 원본서버(웹서버)로 유효성 검증을 다시하라는 의미. 유효성 검증을 다시 한다는 것은 캐시에 저장되어 있는 파일이 fresh한 상태라도 원본서버에 있는 파일과의 동일성 유무를 무조건 체크하라는 의미. -> 요청이 많을 경우 원본 서버에 부하를 일으킬 가능성이 있음.

 

2. no-cache

원본서버(웹서버)로부터 무조건 다시 읽어서 응답하라는 의미. max-age=0인 경우는 동일성 유무에 대해서만 매번 체크하지만 no-cache의 경우에는 무조건 원본서버에서 읽어 응답한다는 차이가 있다.

 

3. no-store

캐시 자체를 저장하지 않음

 

출처) 탑스팟 알기사 정보보안기사 교재

반응형
반응형

 


1. ftp-simple Extensions 설치
 - VSCode 에서 FTP 접속을 도와주는 패키지
2. F1 검색 > ftp-simple config setting  > 접속 정보 입력 (JSON)
 - 접속할 서버 및 경로 지정
3. F1 검색 ==> ftp-simple remote directory 선택
 - 접속 연결

반응형
반응형

특정 페이지의 html 소스를 텍스트로 가져오려고 함.


const request = new XMLHttpRequest();
const url = 'https://localhost:8080/test'; // 소스 가져올 페이지 

request.open('GET', url, true);
request.onload = function () {
var htmlText = request.responseText;
}

console.log(htmlText);

 

반응형
반응형

maven 스프링 프로젝트에 외부 라이브러리를 추가하려고 함.

1. lib폴더 아래에 외부에서 가져온 jar 파일을 위치시킴.

2. pom.xml 파일의 dependency 부분에 아래처럼 내용을 추가해준다.

<dependency>
	<groupId>barcodes</groupId> <!--이름-->
	<artifactId>barcodes</artifactId> <!--이름-->
	<version>7.2.2</version> <!--버전-->
	<scope>system</scope> <!--scope-->
    	<!--파일위치-->
	<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/barcodes-7.2.2.jar</systemPath> 
</dependency>

아니면 이렇게...

<dependency>
	<groupId>org.apache.tika</groupId>
	<artifactId>tika-core</artifactId>
	<version>2.8.0</version>
</dependency>

 

 

3. Eclipse의 경우 pom.xml 저장

프로젝트 우클릭 > Maven > Update Project 


Maven 의존성의 범위에 관해서는 아래 페이지를 참고하였음..

 

Maven – Introduction to the Dependency Mechanism

Introduction to the Dependency Mechanism Dependency management is a core feature of Maven. Managing dependencies for a single project is easy. Managing dependencies for multi-module projects and applications that consist of hundreds of modules is possible.

maven.apache.org

 

Dependency Scope

  • compile
    아무 것도 지정되지 않은 경우 사용되는 기본 범위.
    모든 클래스 경로에서 사용가능함.
  • provided
    런타임시에는 포함X, 컴파일 시점에만 포함됨. runtime시에 JDK나 컨테이너가 dependency를 제공할 것으로 간주하여 런타임시에는 classpath에 추가되지 않음.
  • runtime
    컴파일에는 포함X, 런타임과 test 시에만 포함됨.
  • test
    테스트 컴파일 및 실행 단계에만 포함
  • system
    JAR의 위치를 명시해야함. 항상 사용가능하며 레포지토리가 아닌 외부에서 찾음
  • import
    <dependencyManagement> 부분에서만 사용됨.     
반응형
반응형

필요한 내용은 다음과 같다.

1. post 메소드로 요청하는 경우 

헤더 생성 + uri 생성 + body부 데이터 생성 => RestTemplate 으로 url 요청하기

 

2. GET 메소드로 요청하는 경우

헤더 생성 + uri 생성(파라미터가 있는 경우 붙여준다) => RestTemplate으로 url 요청하기

//ResTemplate 생성
RestTemplate restTemplate = new RestTemplate();

//헤더 생성
HttpHeaders headers = new HttpHeaders();
headers.add("Accept", "*/*");
headers.add("Content-Type", "application/json;charset=UTF-8");

//url 생성
URI url = URI.create("http://localhost:8888/api/test");

//POST로 보내는 경우 : body에 실어보낼 json데이터 생성
JSONObject jsonReq = new JSONObject();
jsonReq.put("data1", "data1");
jsonReq.put("data2", "data2");
HttpEntity<String> entity = new HttpEntity<>(jsonReq.toString(), headers);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);

//GET으로 보내는 경우 : 쿼리파라미터는 url에 붙여 보내면 댐
RequestEntity<String> req = new RequestEntity<>(headers, HttpMethod.GET, url);
ResponseEntity<String> res = restTemplate.exchange(req, String.class);
반응형
반응형

JSON obejct는 아래 의존성을 사용하였음

org.json은 사용해봤는데 이건 또 첨 사용해봄..

		<dependency>
			<groupId>com.googlecode.json-simple</groupId>
			<artifactId>json-simple</artifactId>
			<version>1.1</version>
		</dependency>

 

URL 요청 시 응답 결과는 아래와 같음

<200,{"result":0,"data":[
{"category":"animal","type":"tiger","name":{"girl":"tigirl","boy":"tiboy"},count":"2},
{"category":"animal","type":"pig","name":{"girl":"pigirl","boy":"pigboy"},"count":2}
]

 

URL 요청 및 응답 파싱하기.

//요청할 URL의 헤더 생성
HttpHeaders headers = new HttpHeaders();
headers.add("Accept", "application/json");
headers.add("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE + ";charset=UTF-8");

//요청할 URL 생성
URI Url = URI.create("https://testsite.co.kr/api");

//요청
RequestEntity<String> requestEntity = new RequestEntity<>(headers, HttpMethod.GET, Url);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<JSONObject> responseEntity = restTemplate.exchange(requestEntity, JSONObject.class);

//응답 파싱
JSONObject responseJSON = responseEntity.getBody();
//body에서 "data"부분을 JSON Array로 파싱
JSONArray responseArray = new JSONArray(){{ addAll((Collection)responseJSON.get("data"));}};

ObjectMapper objectMapper = new ObjectMapper();
List<JSONObject> dataList = new ArrayList<>();

for(Object obj  : responseArray){
	//JSONArray에서 꺼낸 각 JSON을 obj-> Map 으로 변환시켜 사용한다.
	Map<String,Object> tmpMap= (Map) obj;
	Map<String,Object> listMap = objectMapper.convertValue(tmpMap.getOrDefault("name",null),Map.class);

	if(listMap != null) {
		listMap.put("myList", tmpMap.get("type"));
		JSONObject resultObj = new JSONObject(){{ putAll(listMap);}};
	}
}

 

JSONArray에 add 하기  addAll(Collection)
JSONObject에 put하기 putAll(Map)

json-simple은 첨이라 사용법이 익숙해지질 않음

반응형
반응형

sidebar 요소의 position은 fixed

.sidebar{
    position : fixed;
}

 

스크롤 위치에 맞춰 해당 요소의 margin-top이나 margin-left 속성을 실시간으로 변경해주어 이동하는 것처럼 보이게 하는 원리임.

//가로스크롤 시에는 고정하고 세로스크롤시에는 움직이는 경우
$(function() {
  var marginTop = parseInt( $(".sidebar").css('margin-top') );
  $(window).scroll(function(e) {
    $(".sidebar").css("margin-top", marginTop - $(this).scrollTop() );
  });
});

//세로스크롤 시에는 고정하고 기로스크롤시에는 움직이는 경우
$(function() {
  var marginLeft = parseInt( $(".sidebar").css('margin-left') );
  $(window).scroll(function(e) {
    $(".sidebar").css("margin-left", marginLeft - $(this).scrollLeft() );
  });
});
.scrollLeft() 선택한 요소 집합의 첫 번째 요소의 수평 스크롤 바의 위치를 얻거나, 
선택된 요소의 수평 스크롤 바의 위치를 인수로 전달받은 값으로 설정한다.
.scrollTop() 선택한 요소 집합의 첫 번째 요소의 수직 스크롤 바의 위치를 얻거나, 
선택된 요소의 수직 스크롤 바의 위치를 인수로 전달받은 값으로 설정한다.

 

 


참고

스크롤바 위치 관련 내용

 

jQuery 입문 | 요소의 영역 | 요소의 스크롤 위치 .scrollLeft() .scrollTop()

요소의 스크롤 위치 jQuery는 선택한 요소의 스크롤 위치를 손쉽게 반환하고 설정 할 수 있는 메소드를 제공한다. 메소드 설명 .scrollLeft() 선택한 요소 집합의 첫 번째 요소의 수평 스크롤 바의 위

www.devkuma.com

세로 고정 가로 스크롤 내용

 

 

CSS 세로 고정 가로 스크롤 - 제타위키

다음 문자열 포함...

zetawiki.com

 

반응형
반응형

Run As > Maven install 하여 war 파일을 생성하려고 했는데

아래와 같은 에러가 떴다.

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sample: Compilation failure

 

해결 방법 : 

Maven 버전이 안 맞아서 그렇다는 경우도 있었으나 나는 JRE 경로가 안 맞는 경우였다.

JRE 경로설정 : [Window] > [Preferences] > [Installed JREs]

기존에 설정되어 있던 경로를 Edit을 눌러 Java 폴더 밑의 jdk 안에 있는 것으로 선택해주었다.

Apply and Close 후 다시 Maven install 해주니 target폴더 밑에 war파일이 생겼다. ㅎㅎ 

반응형
반응형

project 디렉토리를 선택하고 import 하려는데 폴더 선택이 안 되는경우

이클립스에서 같은 이름의 프로젝트가 있기때문...

1. Window > Show View > Project Explorer 를 눌러 프로젝트 목록에 들어간다. 

2. 같은 이름의 프로젝트를 삭제해준다.

반응형
반응형

Eclipse에서 Maven 프로젝트를 import 했는데 

The method is undefined for the type... 

오류가 뜨면서 실행이 안 됨.... Project Explorer 에 빨간 엑스가 잔뜩... 

 

해본방법 1:

프로젝트 우클릭 > Build Path > Configure Build Path > Order and Export 에 체크 안 된것 체크해봄..

 

해본방법 2 : lombok 업데이트

lombok 다운로드 페이지 > Download 클릭 

 

Download

 

projectlombok.org

다운받은 lombok.jar 를 클릭하면 installer가 뜬다. 

Installer에서는 lombok을 설치 혹은 업데이트 할 수 있는 IDE를 자동으로 찾아준다.

그러면 Install/Update 버튼을 눌러서 실행해준다. 

완료되면 Install successful이 뜬당. IDE를 재실행 해주었다. 

 

해본방법 3 : [Project] > [Clean]

 

해본방법 4 : JRE 경로를 재설정 해주었다. 방법은 아래글에 .  . . . 

 

[Eclipse] Maven 빌드 /Maven war 파일 생성 / Maven install 에러 /Maven build 오류 / Failed to execute goal org.apache.m

Run As > Maven install 하여 war 파일을 생성하려고 했는데 아래와 같은 에러가 떴다. Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sam..

mchch.tistory.com

 

반응형

+ Recent posts