728x90
반응형

이클립스에서 웹개발을 위한 tomcat의 시작, 종료를 할 수 있고 이클립스 console에서 log를 볼 수 있는 Tomcat Plugin을 설치해보겠습니다. 

Tomcat을 사용하는것은 크게 3가지로 나눌 수 있습니다

1. Tomcat 직접 시작

2. 이클립스의 Run Server기능을 이용하여 Tomcat 시작

3. Tomcat Plugin으로 Tomcat 시작

위의 세가지 방식중 이 포스팅에서는 3번을 알아 볼 것이며, 이런 저런 방법으로 일해보면서 Tomcat Plugin인을 이용한 방법이 가장 편했다고 생각합니다.

1번은 log를 보기가 힘들고, 2번은 이런저런 알수없는 오류들을 겪었습니다.


------------설치------------

1. http://www.eclipsetotale.com/tomcatPlugin.html#A3 접속

2. tomcatPluginV33.zip 를 다운로드 (2012년 4월2일 기준 ) 

(Tomcat Plugin 3.3버전에서는 이클립스 3.6까지만 지원한다고 나와있지만 이클립스 3.7.2버전에서도 정상 작동을 확인 했습니다.)

3. 압축풀면 com.sysdeo.eclipse.tomcat_3.3.0 라는 폴더가 나오는데 이것을 이클립스의 plugins폴더 안에 복사합니다, Tomcat Plugin은 별도의 install없이 이클립스 내부에 플러그인 폴더를 복사하는것으로 설치가 됩니다.

4. 이클립스를 재시작하면 아래와같이 Tomcat 이미지가 생기고, 좌로부터 시작, 종료, 재시작 입니다.


5. 이클립스의 window -> preferences -> Tomcat 항목에서 Tomcat version은 6을 선택하고, Tomcat home은 톰캣이 있는 디렉터리를 지정하는데 bin, conf, work와 같은 폴더가있는 바로 상위 폴더를 지정해야 합니다.


6. 이제 Tomcat startup 아이콘을 클릭하면 console창에 로그들이 지나가고 정보: Server startup in ~~~ ms 로그가 나오면 정상.


728x90
반응형
728x90
반응형
1. SYNONYM의 개념 

  - 내 계정에서 다른 계정의 특정 테이블을 내 계정에서 볼 때

    Alias(별칭)를 정해놓고, 그 테이블을 참조할 때 Alias로 참조한다.

 

2. SYNONYM의 사용 

  - ORACLE0904 라는 계정에서 SCOTT 계정의 DEPT(부서테이블)을 보려 한다면,

     통상적으로 이렇게 사용한다.

    예) SELECT * FROM SCOTT.DEPT

 

  - 하지만, 이렇게 사용한다면, 나중에 SQL문이 길어질 때, SQL문의 복잡함에 한 몫을 더한다는 점과

     다른 스키마(여기서는 SCOTT)에 있는 오브젝트(여기서는 DEPT)의 위치를

     노출시킨다는 점에서 보안성에도 문제가 있을 수 있다고 한다.

 

  - 그래서 SCOTT.DEPT 라는 부분을 내 계정에서 간단히 줄여 별칭으로 사용하기 위함이 SYNONYM이다.

    예를 들어, 별칭....이라...음. 나는 앞으로 SCOTT.DEPT를 'DEPT2'라는 별칭으로 사용하기 위해

    내 계정에서 별칭을 정하는 작업을 다음과 같이 한다.

    예) CREATE SYNONYM DEPT2 FOR SCOTT.DEPT

 

  - 이렇게 별칭을 설정하여 놓고, SELECT * FROM DEPT2 라는 쿼리를 수행하면,

    SELECT * FROM SCOTT.DEPT 쿼리 수행 결과와 결과가 같음을 확인할 수 있다.

    쿼리문 길이 및 보안유지에도, 조금이나마 도움이 된다는 취지에서 SYNONYM을 사용한다.

 

  * 만약 ORACLE0904 계정에서 SCOTT 계정의 테이블을 SELECT 할 권한이 없다면,

    SCOTT 계정으로 접속하여, 다음과 같이 권한을 주고 작업하면 된다.

    예) GRANT SELECT ON DEPT TO ORACLE0904 
            
--> ORACLE0904 계정에게 DEPT 테이블의
 SELECT 권한 부여

 

  * 또한 나중에 이 별칭을 사용하지 않게 된다면, 해당 SYNONYM을 다음과 같이 없애줘 버리면 그만이다.

    예) DROP SYNONYM DEPT2

728x90
반응형
728x90
반응형

자바스크립트의 보안 정책 중 하나인 SOP(Same-Origin Policy) 때문에 데이터를 호출하는 도메인과 데이터를 반환하는 도메인의 주소가 다르면 Ajax를 이용할 수 없다. 그러나 JSONP 라는 형식이나 Proxy 매시업 페이지를 통해 해결 할 수 있는데 여기서는 JSONP를 이용한 방법을 설명하겠다.

원래 Ajax의 코드는 아래와 같다. 그러나 아래 코드로는 Cross Domain에 직면했을때 정상적인 responseText를 얻을 수가 없다.

1
2
3
4
5
6
7
8
9
10
11
12
13
$.ajax({
  type: "POST",
  url: "search.do",
  data: $('#searchbox').val(),
  contentType: "application/x-www-form-urlencoded; charset=UTF-8",
  success: function(data) {
    if (data != null) {
      // ...
    } else {
      //....
    }
  }
});

그러므로 우리는 새로운 방법을 사용해야 한다.


JSONP(JSON with Padding) 을 이용한 Ajax 통신

 - 반환되는 데이터 (JSON)가 아래와 같다고 하자.

1
2
3
4
{
  'result': 'user',
  'go': '테스트'
}


 - 정상적인 데이터를 받기 위해서는 아래와 같이 작성해야 한다. (두 가지 방법 중 아무거나 해도 상관없다.)

 1. $.getJSON()

1
2
3
4
5
    function(data) {
            alert(data.result + ", " +  data.go);
    }
);
 
 2. $.ajax();

1
2
3
4
5
6
7
8
9
10
11
$.ajax({
    url : "http://ip:8080/jsp/upload",
    data : "id=user",
    dataType : "jsonp",
    jsonp : "callback",
    success: function(data) {
        if(data != null)    {
            alert(data.result + ", " +  data.go);
        }
    }
});
 

jQuery 1.2부터는 JSONP 호출에 대한 네이티브 지원이 제공되고 있다. JSONP 콜백을 지정한 경우 다른 도메인에 있는 JSON 데이터를 로드할 수 있으며 JSON 콜백은 url?callback=? 라는 구문을 사용하여 지정할 수 있다.

$.getJSON() 방식을 살펴보면 url 맨 끝에 callback=이라는 문자열과 함께 실제 함수 이름 대신 ? 기호를 콜백 함수 이름으로 입력하는 것을 볼 수 있다. 이는 jQuery가 ? 기호를 인라인 함수를 호출하는 생성된 함수 이름(예:jsonp1234568416)으로 바꾸기때문이다. 굳이 ? 을 적을 필요는 없고 따로 처리하는 콜백함수가 있다면 해당 함수의 이름을 적어줘도 무방하다. 그러나 익명 메소드로 바로 처리할 경우 반드시 ? 를 써줘야 한다.


데이터 반환 (Servlet)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  request.setCharacterEncoding("UTF-8");
  response.setCharacterEncoding("UTF-8");
 
  // 전송된 데이터를 추출(id와 콜백 메소드명)
  String id = request.getParameter("id");
  String callBack = request.getParameter("callback");
 
  // 반환 될 데이터
  JSONObject obj = new JSONObject();
  obj.put("result", id);
  obj.put("go", "테스트");
 
  // 호출 할 javascript 콜백 메소드를 지정 해 준다.
  PrintWriter out = response.getWriter();
  out.write(callBack + "(" + obj.toString() + ")");
  System.out.println(callBack + "(" + obj.toString() + ")");
 
  out.flush();
  out.close();
}

Serlvet으로 구현한 데이터 반환 메소드이다. JSONP는 Get방식으로만 데이터를 가져올 수 있으므로 doGet메소드에 로직을 작성하였다. 
위 코드를 살펴보면 먼저 전달받은 데이터들을 json 형태로 구성한 뒤 콜백함수의 이름으로 감싸줘야 한다. 

최종적으로 반환해야 할 문자열은 아래와 같다. 말 그대로 JSONP(json with padding)이다.

 jQuery17204359748272690922_1338291446125({"result":"user","go":"테스트"})


결과


출처 : http://warmz.tistory.com/739


728x90
반응형

'Web Programming > java-jsp' 카테고리의 다른 글

[펌] eclipse 톰캣 환경 설정하기~  (0) 2015.06.16
오라클 시노님, grant 설정  (0) 2015.06.01
암호화 MD5 vs SHA256  (0) 2015.04.07
DWR 사용시 Session 값 얻기  (0) 2015.04.07
USB 디버깅 ?  (0) 2015.04.06
728x90
반응형

MD5 (Message-Digest algorithm 5) 

MD5는 메세지 축약 알고리즘으로써, 파일 무결성 검사용도로 많이 쓰이고 있다. 

128bit 의 해쉬를 제공하며, 암호와와 복호화를 통하여 보안용도로도 많이 쓰인다. 

하지만 암호화 결함이 발견되어 보안 용도로 사용할때에는 SHA와 같은 다른 알고리즘을 사용하는것이 권장되고 있다고 한다. 

 

SHA (Sechre Hash Standard) 

SHA(Secure Hash Algorithm, 안전한 해시 알고리즘) 함수들은 서로 관련된 암호학적 해시 함수들의 모음이다. 

여러 종류가 존재하며 그중 SHA-1은 SHA 함수들 중 가장 많이 쓰이며, TLS, SSL, PGP, SSH, IPSec 등 많은 보안 프로토콜과 프로그램에서 사용되고 있다. SHA-1은 이전에 널리 사용되던 MD5를 대신해서 쓰이기도 한다. 혹자는 좀 더 중요한 기술에는 SHA-256이나 그 이상의 알고리즘을 사용할 것을 권장한다.



암호화 Algorithm은 크게 3가지로 나뉜다. 

1. Hashing : 복호화 불가능. 단방향. 속도가 빠름 
2. Symmetric : 복호화 가능 (private key 사용) 
3. Asymmetric : 복호화 가능 (private, public key 사용) 

1. Hashing Algorithm 

종류 : MD5, SHA1, SHA256, SHA384, SHA512 등 Hash 를 계산할 때 쓰이는 종류이다. 
숫자가 클 수록 Hash 값이 복잡해지므로, 더 안전한 암호화 방법이 된다. 
예전에는 MD5, SHA1 등 16byte 크기의 Hash 값을 사용했지만, 요즘은 SHA512 등 Hash 값 크기가 큰 알고리즘을 추천한다. 

비밀번호등 일치 여부만을 확인하기 위해서 (복호화 불필요) 사용한다. 
전에도 밝혔지만 아주 큰 Data의 Identity 를 나타내는 값으로 쓸 수 있다. 

2. Symmetric Algorithm 

종류 : DES, TripleDES, Rijndael, RC2 
대칭형 암호화를 수행하고, 비밀번호 (private key)를 추가할 수 있다. 
비밀번호를 사용하면 복호화가 가능하므로, 내부통신 또는 같은 도메인에서 사용한다. 
Rijndael이나 RC2를 추천한다. 

3. Asymmetric Algorithm 

종류 : DSA, RSA (요즘은 RSA가 대세) 
공인인증서에서 사용하는 Algorithm으로, private key 뿐 아니라 public key도 있어야 한다. 외부 통신 등에 사용한다.

728x90
반응형
728x90
반응형
HttpSession session = request.getSession();

보통 위 같은 방식으로 session을 많이 얻어옵니다.
하지만 DWR를 사용할 경우 어떤 방식으로 session값을 얻어올가요?
결국 request 인스턴스만 가질수 있으면 session은 쉽게 얻을 수 있지 말입니다.

DWR 샘플들을 살펴보던중 WebContext 라는 클래스를 알게 되었습니다.
사실 DWR를 이용하여 JS에서 Java 메소드를 콜할시 결국 request를 보내게 됩니다.
이 request를 얻을려면 별도로 webContext라는 인스턴스를 얻어야만 하는데 
WebContextFactory.get() 로 쉽게 얻을 수가 있습니다.

WebContext wctx = WebContextFactory.get();
HttpServletRequest request = wctx.getHttpServletRequest();
HttpSession session = request.getSession();


728x90
반응형

+ Recent posts