2017년 10월 5일 목요일

Mybatis 자동 생성키 사용

mysql의 경우에 auto_increment 를 통해 자동 생성키를 쓸 수 있는데, insert시 이 자동생성된 값을 가져오고 싶을때는

useGeneratedKeys를 true로 설정, KeyProperty에 가져오고싶은 값을 넣는다. 

나의 경우엔 답변or댓글의댓글을 만드는 과정에서 그룹을 설정하기위해 자동증가값을 그룹에 같은값으로 업데이트하려고 했었다. 

(...게시물을 만들면서 group을 같이 설정하고싶었는데, 실패해서 게시물만든후 group값을 bnum으로 업데이트하였다...비효율적인 것 같으므로 다른 방법을 찾아야할 것 같다.)

아무튼 자동증가되는 primarykey를 가져오고 싶었는데 계속 0을 가져왔었다. 

그래서 

매퍼에 위의 방법과 같이 bnum을 키프로퍼티에 넣고 

1
2
3
    <insert id="insert" parameterType="net.cot_pr1.domain.QnA" useGeneratedKeys="true" keyProperty="bnum">
        INSERT INTO qna (bnum, title, content, writer, answer, qgroup) VALUES (0,#{title},#{content},#{writer},#{answer},#{qgroup})
    </insert>
cs

컨트롤러에서 

1
2
3
4
5
6
qnaService.create(vo);
        
int bnum = vo.getBnum();
vo.setBnum(bnum);
qnaService.setgroup(vo);
        
cs
이런식으로 bum을 다시 가져와서 group에 넣었다..

2017년 10월 1일 일요일

삼항 연산자

if문을 줄여서 쓸 수 있는 삼항 연산자


ex)
1
2
3
4
5
if(a<b){
    res = 1;
}else{
    res=2;
}
cs
삼항 연산자로 다시 나타낸다면 

1
result = (a<b)?1:2
cs


(조건)? a : b;


조건이 
true면 a , false면 b

2017년 9월 29일 금요일

git 커밋 되돌리기

git에 커밋 후 커밋내용을 아예 지우고 싶을때 사용.....



프로젝트있는 폴더에서 명령프롬프트을 열어서 

git reset HEAD~1(숫자는 되돌리는 커밋횟수??) 

git push origin + master 




잘못하면 커밋 다 날라가니 쓰기전에 한번 더 찾아보고 사용할 것!!
(git무서웡 ㅠ) 

2017년 9월 26일 화요일

세션과 쿠키의 차이점

Session과 Cookie

 웹사이트에서는 웹페이지에 특정 방문자가 머무르고 있는 동안에 그 방문자의 상태를 지속시키기 위해 쿠키와 세션을 이용한다.

Session
- 특정 웹사이트에서 사용자가 머무르는 기간 또는 한 명의 사용자의 한번의 방문을 의미한다.
- Session에 관련된 데이터는 Server에 저장된다.
- 웹 브라우저의 캐시에 저장되어 브라우저가 닫히거나 서버에서 삭제시 사라진다.
- Cookie에 비해 보안성이 좋다.

Cookie
- 사용자 정보를 유지할 수 없다는 HTTP의 한계를 극복할 수 있는 방법
- 인터넷 웹 사이트의 방문 기록을 남겨 사용자와 웹 사이트 사이를 매개해 주는 정보이다.
- Cookie는 인터넷 사용자가 특정 웹서버에 접속할 때, 생성되는 개인 아이디와 비밀번호, 방문한 사이트의 정보를 담은 임시 파일로써,
  Server가 아닌 Client에 텍스트 파일로 저장되어 다음에 해당 웹서버를 찾을 경우 웹서버에서는 그가 누구인지 어떤 정보를 주로 찾았는지 등을 파악할 때 사용된다.
- Cookie는 Client PC에 저장되는 정보기 때문에, 다른 사용자에 의해서 임의로 변경이 가능하다.
(정보 유출 가능, Session보다 보안성이 낮은 이유)

Q. 보안성이 낮은 Cookie 대신 Session을 사용하면 되는데 안하는 이유?
A. 모든 정보를 Session에 저장하면 Server의 메모리를 과도하게 사용하게 되어 Server에 무리가 감


둘의 큰 차이점은 저장되는 위치?? 세션은 쿠키보다 느린속도..
출처: http://hahahoho5915.tistory.com/16 [넌 잘하고 있어]

참조
http://bllizz.tistory.com/15 

2017년 9월 12일 화요일

[rejected] master -> master (non-fast-forward)

git을쓰면서 이클립스에서 커밋앤 푸쉬를 하는데 저런 문구가 되면서 git저장소에 커밋이 되지 않는 현상이 발생하였다.

프로젝트 팀 메뉴에서 히스토리를 보니 아직 기록이 남아있는 것같아 'push branch master' 로 했더니 저번 내용까지 갱신되었다. 


git 어렵다 ㅠㅠ  소스날라갈까봐 무서움 ㅠㅠㅠ
공부 필요한듯..



--추가--
9/17
readme 파일을 git페이지에서 업데이트하고 커밋할때 발생하는듯.
내생각엔.. 변경된 내용이 이클립스에 적용이 안되서 그런듯??

2017년 9월 6일 수요일

REST란?

위키백과 설명...
REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. 이 용어는 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개되었다. 필딩은 HTTP의 주요 저자 중 한 사람이다. 이 개념은 네트워킹 문화에 널리 퍼졌다.
엄격한 의미로 REST는 네트워크 아키텍처 원리의 모음이다. 여기서 '네트워크 아키텍처 원리'란 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반을 일컫는다. 간단한 의미로는, 웹 상의 자료를 HTTP위에서 SOAP이나 쿠키를 통한 세션 트랙킹 같은 별도의 전송 계층 없이 전송하기 위한 아주 간단한 인터페이스를 말한다. 이 두 가지의 의미는 겹치는 부분과 충돌되는 부분이 있다. 필딩의 REST 아키텍처 형식을 따르면 HTTP나 WWW이 아닌 아주 커다란 소프트웨어 시스템을 설계하는 것도 가능하다. 또한, 리모트 프로시저 콜대신에 간단한 XML과 HTTP 인터페이스를 이용해 설계하는 것도 가능하다.
필딩의 REST 원리를 따르는 시스템은 종종 RESTful이란 용어로 지칭된다.

**********
 REST 방식의 웹 서비스를 쉽게 이해하기 위해서 어떻게 메시지를 주고 받게 되는지 동작 아키텍처를 살펴보도록 하겠습니다. 먼저 기존의 SOAP을 이용한 일반적인 웹 서비스 방식은 다음과 같습니다. 


[일반적인 웹 서비스]



반면에 REST는 URL을 요청하게 됩니다. 복잡한 SOAP 메시지를 호출하지 않아도 URL을 이용해서 데이터를 요청해야 한다는 것이죠.

[REST 방식의 웹 서비스]

위의 그림을 보면 12133이라는 URL을 통하여 데이터를 요청하고 있고 그 데이터는 XML 형식으로 반환하게 됩니다. 반환되는 XML 형식은 다음과 같습니다. 


웹에있는 자원들을 HTTP를 활용하여 전송하기 위한 아주 간단히 만든 인터페이스? 
>>유지보수 쉬움
 ex) board/list , board/write


특징
1. 클라이언트와 서버는 독립적이다.
2. 캐시 가능 
3. 계층화, 클라이언트는 중간 서버를 통해 연결한다.
4. 유니폼하다. URL로 지정한 리소스에 대해 조작이 통일, 한정적인 인터페이스로 수행한다.
5. 자체표현만으로 쉽게 이해 가능
6. 무상태?? 각 요청간 클라이언트의 객체는 서버에 저장 불가

장점
1. 사용이 쉬움, 간결함
2. 클라이언트와 서버가 명확히 분리
3. 원하는 데이터 표현을 사용할 수 있음

단점
1. 표준이 없음(보안또한?)
2. HTTP메소드의 한계?(HTTP 통신 모델에 의존?)
3. 둘 이상을 대상으로 상호작용하는 분산환경에는 유용하지 않음


*************************
어렵군!!



ajax 란?

Ajax(Asynchronous Javascript and Xml)

XMLHttpRequest를  사용하여  페이지 전체가 아닌 필요한 부분만 갱신할 수있도록 함.
json, xml, html 등 다양한 형식의 정보를 주고 받음 


장점
  • 페이지 이동없이 고속으로 화면을 전환할 수 있다.
  • 서버 처리를 기다리지 않고, 비동기 요청이 가능하다.
  • 수신하는 데이터 양을 줄일 수 있고, 클라이언트에게 처리를 위임할 수도 있다.
단점
  • Ajax를 쓸 수 없는 브라우저에 대한 문제가 있다.
  • HTTP 클라이언트의 기능이 한정되어 있다.
  • 페이지 이동없는 통신으로 인한 보안상의 문제
  • 지원하는 Charset이 한정되어 있다.
  • 스크립트로 작성되므로 디버깅이 용이하지 않다.
  • 요청을 남발하면 역으로 서버 부하가 늘 수 있음.
  • 동일-출처 정책으로 인해 다른 도메인과는 통신이 불가능하다.


기존방식과 AJAX의 차이
1) 기존방식
웹 브라우저가 웹 서버에 요청 전송
웹 서버는 JSP 등의 서버 어플리케이션을 사용해 사용자의 요청 처리 후 결과를 HTML로 생성해서 웹 브라우저에 전송
웹 브라우저는 응답으로 받은 HTML을 분석한 뒤 그 내용을 화면에 그림
- 결과적으로 웹 브라우저가 웹 서버와 통신을 하고 요청 결과는 HTML로 생성되고 사용 입장에서는 페이지 이동이 생함


2) AJAX방식
사용자가 이벤트를 발생 > 자바스크립트는 DOM을 사용해서 필요한 정보를 구한 뒤, XMLHttpRequest 객체를 통해서 웹 서버에 요청을 전달
웹 서버는 XMLHttpRequest로부터의 요청을 알맞게 처리후 결과를 XML이나 단순 Text을 생성해서 XMLHttpRequest에 전송
서버로부터 응답이 도착하면 XMLHttpRequest 객체는 자바스크립트에 도착 사실을 알고 자바스크립트는 응답 데이터와 DOM을 이용해 사용자 화면에 반영
결과적으로 사용자 입장에서는 페이지 이동이 발생되지 않고 페이지 내부 변화만 일어남


AJAX의 주요 구성 요소
- XMLHttprequest : 웹서버와 통신을 담당함. 사용자의 요청을 웹서버에 전송 및 웹서버로부터 받은 결과를 웹브라우저에 전달함
- DOM : 문서의 구조를 나타냄, 폼 등의 정보나 화면 구성을 조작할때 사용함
- CSS : 글자색,배경색,위치,투명도 등 UI관련 부분을 담당
- 자바스크립트 : 사용자가 마우스를 드래그하거나 버튼을 클릭하면 XMLHttpRequest객체를 사용해 웹서버에 요청을 전송함.
XMLHttpRequest 객체로부터 응답이 오면 DOM, CSS등을 사용해 화면을 조작함



차이 출처
출처: http://hieroglyph.tistory.com/13 [컴퓨터 이야기]




장단점 출처
https://ko.wikipedia.org/wiki/Ajax