1. 기본 사용법

https://howtodoinjava.com/jaxb/jaxb-annotations/

 

A Guide to JAXB Annotations - HowToDoInJava

Learn about JAXB annotations in detail along with their usage during marshalling and unmarshalling operations eg. @XmlRootElement, @XmlElement and @XmlList,

howtodoinjava.com

 

2. 작스비를 효율적으로 사용하는 법

https://knight76.tistory.com/entry/JAXB-%EC%9E%98-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

 

JAXB 잘 사용하기

2010년 초에 정리한 줄 알았는데, 과거 메일을 참조로 정리한다. 이 내용은 현재 JAXB 버전과 다를 수 있다. JAXB에 대해서.. java XML 파서중에 Xstream, JAXB 가 있다. 취향에 따라서 다양하게 쓰기는 하는데....

knight76.tistory.com

 

 

 

 

Class<?> cls = Class.forName("패키지명" + "class 이름");//클래스의 메타정보 불러오기
Object obj = cls.newInstance();//메타정보로 인스턴스 생성해서 메모리에 올리기
//여기까지는 new class
Class<?> dtoCls = obj.getClass();//생성한 인스턴스로 클래스 형태로 불러오기

//Field 가져오기
Field field[]= dtoCls.getDeclaredFields(); //public으로 지정한 field명 가져오기

//Method 사용법
//생성자 있는 경우
Method setMethod = dtoCls.getMethod("set" + column, String.class); //method 불러오기
setMethod.invoke(obj, data); // method 실행

//return 있는 경우
Method getMethod = dtoCls.getMethod("get" + column); //method 불러오기
String result=getMethod.invoke(obj); // method 실행

 

 

 

 

 

[Java] 자바 - 리플렉션(Reflection)

* 리플렉션에 관한 소스코드가 있어 담아왔습니다 ~ - 리플렉션이란 컴파일시간에 클래스 정보를 분석하는 ...

blog.naver.com

 

https://javacan.tistory.com/tag/Method.invoke%28%29

 

'Method.invoke()' 태그의 글 목록

최범균이 운영하는 자바 및 웹 관련 컨텐츠 제공 블로그

javacan.tistory.com

 

https://pupustory.tistory.com/192

 

자바 리플랙션 필드값 수정(Java Reflection field value edit)

메소드 호출에 이어 이번엔 필드값을 수정해 보자. 이번에도 바로 코드부터 살펴보자. Exam_ReflectionField.java package pupustory.reflection.exam; import java.lang.reflect.*; public class Exam_Reflection..

pupustory.tistory.com

 

https://futurists.tistory.com/43

 

자바 동적로딩 이해(델리게이션 모델)

자바 프로그램은 한 개 혹은 그 이상의 클래스들의 조합으로 실핸된다. 그리고 실행 시 모든 클래스 파일드이 한 번에 JVM 메모리에 로딩되지 않고 요청되는 순간 로딩된다. 자바의 클래스 로더가 이런 역할을 수..

futurists.tistory.com

 

 

브라우저에 대하여....

 

브라우저의 역할과 스크립트의 로드 시점

브라우저는 어떻게 동작하는가? 사용자가 연결된 주소의 서버에 데이터 요청을 하게 되면 서버로부터 데이터를 다운로드 받은 것을 가지고 웹브라우저가 그것을 해석해서 사용자가 보는 UI 를 완성해 주게 됩니다...

webclub.tistory.com

 

 

브라우저의 역할과 스크립트의 로드 시점

브라우저는 어떻게 동작하는가? 사용자가 연결된 주소의 서버에 데이터 요청을 하게 되면 서버로부터 데이터를 다운로드 받은 것을 가지고 웹브라우저가 그것을 해석해서 사용자가 보는 UI 를 완성해 주게 됩니다...

webclub.tistory.com

 

 

브라우저 렌더링 엔진

https://12bme.tistory.com/208

 

[브라우저엔진] 브라우저 렌더링 엔진

2015년 구글은 크롬의 웹 렌더링 엔진으로 사용하던 WebKit을 대체하는 Blink라는 WebKit에서 파생된 새로운 웬 렌더링 엔진을 사용하기 시작했습니다. WebKit은 웹브라우저 시장의 40% 점유율을 가지는 웹 렌더링..

12bme.tistory.com

 

 

'Server' 카테고리의 다른 글

Ubuntu linux로 서버 구축하기  (0) 2019.08.27

web server와 was의 차이점에 대해서 공부하다가 정적인 페이지를 동적으로 만드는 javascript는 어떻게 돌아가는지 궁금해서 찾아봄. 

 

javascript 엔진 구동 방식 이해 관련 포스팅

 

 

https://engineering.huiseoul.com/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%9E%91%EB%8F%99%ED%95%98%EB%8A%94%EA%B0%80-v8-%EC%97%94%EC%A7%84%EC%9D%98-%EB%82%B4%EB%B6%80-%EC%B5%9C%EC%A0%81%ED%99%94%EB%90%9C-%EC%BD%94%EB%93%9C%EB%A5%BC-%EC%9E%91%EC%84%B1%EC%9D%84-%EC%9C%84%ED%95%9C-%EB%8B%A4%EC%84%AF-%EA%B0%80%EC%A7%80-%ED%8C%81-6c6f9832c1d9

 

 

'Javascript' 카테고리의 다른 글

var, let의 차이점  (0) 2019.11.19

ES5부터 변수를 선언할 수 있는 방법은 자료형에 상관없이 var로 통일해서 사용합니다.

다음 코드를 보겠습니다.

var ex=123;
console.log(ex);//123
{
var ex=456;
}
console.log(ex);//456

ex라는 변수가 전역 변수에서 초기화 된 후에 지역 변수로 선언하게 되면 전역변수(ex)가 지역변수의 값(456)을 가리킵니다.

그 이유는 자바스크립트는 함수 레벨 스코프를 따르기 때문이다. 

더보기

함수 레벨 스코프(Function-level scope)

함수 내에서 선언된 변수는 함수 내에서만 유효하며 함수 외부에서는 참조할 수 없다. 즉, 함수 내부에서 선언한 변수는 지역 변수이며 함수 외부에서 선언한 변수는 모두 전역 변수이다.

블록 레벨 스코프(Block-level scope)

모든 코드 블록(함수, if 문, for 문, while 문, try/catch 문 등) 내에서 선언된 변수는 코드 블록 내에서만 유효하며 코드 블록 외부에서는 참조할 수 없다. 즉, 코드 블록 내부에서 선언한 변수는 지역 변수이다.

 

javascript에서 변수가 선언되는 과정을 보겠습니다.

 

1. 자바스크립트는 실행시점에 변수와 함수에 대해 호이스팅을 수행.

   *hoisting:변수와 함수를 소스의 맨 위에 위치시킴.

 

2.변수를 실행컨텍스트의 변수객체에 등록한다.

 

3.실행컨텍스트에 등록된 변수객체를 메모리에 할당한다. 이 단계에서 변수는 undefined로 초기화 된다.

 

4.undefined로 초기화 된 변수에 값을 할당한다.

 

ES6부터 도입된 let,const를 사용한 코드를 보겠습니다.

let ex=123;
let ex = 456;  // Uncaught SyntaxError: Identifier 'ex' has already been declared
console.log(ex);//123
{
let ex=456;
console.log(ex);//456
}
console.log(ex);//123

var와 다른점 첫번째는 중복 선언이 안됩니다. 

두번째는 블록 레벨 스코프를 따른다는 것입니다.

let,const가 선언된 범위 안에서 호이스팅 되고, 전역변수인 경우에는 코드 맨 위에서 호이스팅 됩니다.

console.log(ex); //undefined
var ex=123;

let exlet=123;
{
console.log(exlet);
let exlet=123; // ReferenceError: exlet is not defined
}

let의 변수 선언 과정은 다음과 같습니다.

 

1. 자바스크립트는 실행시점에 변수와 함수에 대해 호이스팅을 수행.

   *hoisting:변수와 함수를 소스의 맨 위에 위치시킴.

 

2.변수를 실행컨텍스트의 변수객체에 등록한다.

 

3.스코프의 시작 지점부터 초기화 시작 지점까지는 변수를 참조할 수 없다. 스코프의 시작 지점부터 초기화 시작 지점까지의 구간을 ‘일시적 사각지대(Temporal Dead Zone; TDZ)’라고 부른다.

 

4.실행컨텍스트에 등록된 변수객체를 메모리에 할당한다. 이 단계에서 변수는 undefined로 초기화 된다.

 

5.undefined로 초기화 된 변수에 값을 할당한다.

 

변수가 메모리에 할당 되기 전이기 때문에 참조할 수 없다는 에러를 겪게됩니다.

 

 

 

 

Reference

https://poiemaweb.com/es6-block-scope

'Javascript' 카테고리의 다른 글

javascript 엔진  (0) 2019.12.02

인코딩은 jsp, 서버, spring 단계마다 각각 인코딩 설정해준대로 돌아간다.

2가지 인코딩 문제를 겪음.

1.Spring에서 수정하고, 수정사항을 보여주는데 인코딩이 깨짐.

이 때 javascript와 spring 상에서 잘 뿌려주는지 확인했는데 response 단에 문제가 있었음. 

 

해결방법은

@RequestMapping(value = "/addpresident", method = RequestMethod.POST, produces = "text/html; charset=utf-8")

 

mapping에다가 produces를 붙임.

 

2. 1번과 반대로 controller에 들어갈 때부터 인코딩 깨짐. DB에 이상한 글자가 들어가있길래 확인해 봄.

form태그로 보냈는데....

web.xml에 encoding Filter 추가

 
    https://gmlwjd9405.github.io/2019/01/01/spring-utf8.html

프로젝트를 하는데 시간 계산이 필요한 순간이 왔다.

처음에는 dto에서 String으로 받아서 DB에 String으로 넣고 있었는데 이러면 시간 계산이 안된다.

나의 경우 시간만 DB에 넣고 싶었는데 찾아본 결과 oracle에 시간만 넣을 수는 없다. 

oracle에서 시간을 원하는 형식으로 넣고 빼는 sql은 to_date와 to_char가 있는데 date는 dto에서도 date로 받을 수 있어서 시간 계산이 가능하다. to_char는 String으로 불러오기 때문에 계산이 불가능하다.

 

그리고 DB에 시간만 넣고 싶었는데 이건 불가능했다. 무조건 날짜가 들어가야했다. 그래서 그냥 String으로 넣고 쓰고싶을 때 불러와서 parsing후에 비교하는 방식으로 바꿨다.

 

그리고 시간 입력할 때는 dto에서 date형식으로 불러오고 넣는것 보다 String으로 입력해서 넣는게 훨씬 편하고 에러도 적은 것 같다.

'Spring' 카테고리의 다른 글

인코딩 문제 해결  (0) 2019.11.11
Numberformatexception 오류 해결  (0) 2019.10.21
File upload + MultipartFile 과 File 정리  (0) 2019.09.24
web.xml,root-context.xml,servlet-context.xml  (0) 2019.06.11

java.lang.indexoutofboundsexception: index: 1, size: 0 

at java.util.arraylist.rangecheckforadd(unknown source)

 

이런 에러를 만남.
이유는 for문을 돌리면서 list.add(index,object)를 써서 dto를 추가하는데

0번째에 null이 들어간 경우에는 1번에 데이터를 넣을 수 없기 때문이다.

list.add(object)를 써주면 자동으로 알아서 들어간다.

'Java' 카테고리의 다른 글

jaxb 관련 자료 모음  (0) 2020.01.21
JAVA Reflection 사용법 및 관련 자료 정리  (0) 2019.12.23

+ Recent posts