반응형

도.대.체

 

이유가 뭘까.

 

1. popup 페이지 jsp단에서 jquery로 cookie 생성

$.cookie('DOWNLOAD_STATUS', 'in progress', {path:'/'});

 

2.  controller 불러서 modelAndView excel 객체로 return.

 

return 할 excel 객체 생성 시 

 

Cookie cookie = new Cookie("DOWNLOAD_STATUS", "complete");
	cookie.setHttpOnly(true);
	cookie.setPath("/");					// 모든 경로에서 접근 가능하도록 
	response.addCookie(cookie);				// 쿠키저장

쿠키도 같이 생성하여 HttpServletResponse 에 추가. (response.addCookie)

 

3. jsp에서 cookie 값 확인

if($.cookie('DOWNLOAD_STATUS') == 'complete') {
   alert("성공");
}

 

4. 결과적으로 $.cookie('STATUS') == undefind

 

대체 왜??

 

크롬 개발자모드에서도 확실히 값이 확인되는데..

 

분명히 complete 라고 찍혀있지만 

개발자모드 console 에서 $.cookie('DOWNLOAD_STATUS'); 찍어보면 undefind로 나온다.

 

크롬 개발자모드 Application > cookies > 서버 주소로 들어가서 확인되는 쿠키를 찍었는데 undefind가 나온다고?...

이해가 안됨.

 

다음주에야 말로 문제 해결할것이다.

 

예상가능한 트러블로는

 

1. java단에서 HttpServletResponse 로 보내줬을때 jsp에서 잘 못받나?...뭔가 꼬이나?..

2. 데이터타입이 달라서 string으로 못읽어오나?..

 

이정도이다.

 

왜냐하면

 

관리자모드 Application cookies 에서 봤을 때 

1. jsp에서 cookie 생성했을때 --> 정상적인 값 (in progress)

2. java에서 jsp로 다시 넘어왔을때 ---> 정상적인 값 (complete)

 

인데... 넘어오고나서 콘솔로 쿠키찍어봤을 때 undefind 뜨는걸보니 ... 넘어올때 무슨 문제가 있던게 아닌가 싶다.

 

 

 

문제해결!!

Cookie cookie = new Cookie("DOWNLOAD_STATUS", "complete");
	cookie.setHttpOnly(false);              // true -> false로!!!!!
	cookie.setPath("/");					// 모든 경로에서 접근 가능하도록 
	response.addCookie(cookie);				// 쿠키저장

httpOnly를 false로 바꿔주면..해결 ^^......

728x90
반응형

Edit Configrations... > Gradle Debug > Debug all tasks on the execution graph 체크

 

728x90
반응형

1. 톰캣 서버 한글설정 (VM options)

 

톰캣 서버돌릴때도 한글이 깨지므로 VM options 를 설정해야된다.

아래의 문구를 vm options에 저장

-Dfile.encoding=UTF-8

 

2. 일반 파일 한글설정 

일반 파일에서도 한글이 깨질때는 File > settings > Editor > File Encodings 에서 UTF-8 설정

728x90
반응형

문제상황)

부득이 SELECT, INSERT, UPDATE를 전부해야될 때 cursor와 반복을 활용하였다.

 

DECLARE

V_ID NUMBER;           	--id 담을 변수
V_GROUP_ID NUMBER;     	--group_id 담을 변수

CURSOR V_CURSOR			--CURSOR 정의
IS
    SELECT *
    FROM TABLE_1
    WHERE ID=XXX;
    
BEGIN

    FOR v_list IN V_CURSOR LOOP		--반복문 시작, 이때 v_list 는 별도 선언없이 바로 사용.
            
        --1. SEQ SELECT  			--특정 key 로 select 한 seq를 V_ID, V_GROUP_ID 에 삽입
        SELECT seq INTO V_ID FROM TABLE_2 WHERE key='XXX';
        SELECT seq INTO V_GROUP_ID FROM TABLE_3 WHERE key ='XXX';
         
        --2. SEQ INSERT		-- 위에서 정보가 삽입된 변수를 활용하여 insert
        INSERT INTO TABLE4 (ID, GROUP_ID) 
        VALUES (V_ID, V_GROUP_ID);
		 
        --3. OP_POINT UPDATE		
        UPDATE TABLE_5 
        SET seq = XX
        WHERE ID = v_list.ID		--CURSOR로 가져온 행이 들어가있는 v_list를 활용함
            AND TYPE = v_list.TYPE	--v_list.컬럼명 으로 호출가능
            AND NAME = v_list.NAME;
    END LOOP;
	
COMMIT;

END;

 

간단하게 FOR IN 형식의 반복문을 사용하였다.

 

DECLARE 에 CURSOR를 선언해주고 BEGIN 안쪽에서 FOR-IN 돌려서 활용하면 끝.

728x90
반응형

기존에 만들어져있는 SVN 저장소에 로컬 프로젝트 업로드하기

 

진짜- 많이 해멨는데 되게 간단하다

 

windows에서 업로드해야하는 프로젝트 폴더 우클릭 > svn import > 

만약 svn 저장소 URL 이 https://windev01:8443/svn/test  이며 

내가 올리고싶은 저장소 경로가 https://windev01:8443/svn/test/commit_test 일때 

 

Repository

URL of repository : https://windev01:8443/svn/test/commit_test 

 

이렇게 경로 넣어주면 test 경로안에 알아서 commit_test라는 폴더가 생기고 그 안에

해당 프로젝트가 commit 될것이다.

728x90
반응형
//parent.js/////////////////////////

function parentMethod1(){
    childJs.childMethod();
}

function parentMethod2(email){
   console.log("hello~");
}

//child.js////////////////////////

function childMethod(){
  var email='hhh@gmail.com';
  parent.parentMethod2(email);
}

위와 같이 부모js ->자식.js ->부모.js 로 이동을 하고싶었는데

자식js에서 부모.js 함수를 호출하니 인텔리제이 상에선 문제가 없는데 실제 실행 시 undefine 에러가 났다.

(위 예제의 parent.parentMethod2 호출 부분)

 

자식.js에선 부모.js를 못찾아서 부모를 죽이고 다시 불러볼까 했지만 방법을 찾지못하였다.

 

결국 부모.js에서 실행할 함수 자체를 넘겨주기로 하여 해결했다.

 

//parent.js/////////////////////////

function parentMethod1(){
    childJs.childMethod(parentMethod2);
}

function parentMethod2(email){
   console.log("hello~");
}

//child.js////////////////////////

function childMethod(parentMethod2){
  var email='hhh@gmail.com';
  parentMethod2(email);
}

 

728x90
반응형

intelliJ 기준 spring 프로젝트 배포하는 법

 

Build>Build Artifacts

프로젝트명.war > Build 선택

war exploded

war2 가 있지만 가장 맨 위의 war 를 선택하여 빌드한다.

빌드되어 저장되는 위치는 인텔리제이하단에 출력되지만 2-3초만에 사라진다.

잘 모르겠으면 자신의 프로젝트 디렉터리/프로젝트명/target 위치에 가면 프로젝트명.war 를 확인할수있다.

 

여기까지가 자기가 만든 프로젝트를 war 파일로 돌돌 말아서 압축을 땅땅땅 한것이다.

 

이 war를 가지고 톰캣에 집어넣기만 하면 배포된다.

 

아파치톰캣7.0.94버전으로 예를들면 

 

톰캣저장위치/apache-tomcat-7.0.94/webapps/

 

위치에 ROOT파일이 있으면 삭제하고 없으면 아까 말아놓은 war 파일을 ROOT.war 로 이름을 바꾸고 톰캣을 실행했다가 종료시키면 해당 디렉터리에 ROOT.war 이외에 ROOT 폴더가 생성된다.

config 설정 바꿀거 있으면 바꾸고 서버 재실행시켜보면 정상적으로 웹페이지가 작동되는것을 확인할수있다.

 

 

728x90
반응형

 

DATE 자료형 데이터 출력하기

 

DB에 저장된 DATE 형식의 데이터를 그대로 VIEW 단에 끌고오면 이상한글씨가 생긴다.

 

그럴땐 아예 SELECT 할때 처리해주면 된다

SELECT TO_CHAR(CDATE, 'yyyy-mm-dd hh:mm:ss')
FROM 테이블

TO_CHAR 로 스트링으로 변환을 암시하고 파라메터로 변환할 컬럼, 변환시킬 데이터 형식을 설정해주면 된다.

YYYY-MM-DD HH:MM 까지만 해도 그대로 출력된다.

 

 

DATE 자료형 데이터 입력하기

 

테스트 등의 이유로 인하여 DATE 형식의 컬럼에 값을 넣을때에는 

UPDATE 테이블명
SET 컬럼 = TO_DATE('2019-08-13 10:00:00', 'YYYY-MM-DD hh24:mi:ss')
WHERE 인덱스

이런식으로 넣으면 된다.

24시간 기준이라면 시간 옆에 24를 추가하면 된다.

왜 시간 분 초를 HH MI SS 로 했냐면

Month 의 MM과 Minute 의 mm이 같으면 인식을 못하기에 분은 mi로 표기해준다.

728x90
반응형

프로시저의 기본형태

CREATE PROCEDURE 프로시저명
AS
BEGIN
SET NOCOUNT ON 
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
	
	SELECT *
	FROM 테이블

SET NOCOUNT OFF
RETURN
END;

 

인자값 파라메터 받을때

CREATE PROCEDURE 프로시저명(
	변수명1 자료형,
	변수명2 자료형
)
AS
BEGIN
SET NOCOUNT ON 
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
	
	SELECT * 
	FROM 테이블명
	WHERE 컬럼 = 변수명1 AND 컬럼 = 변수명2

SET NOCOUNT OFF
RETURN
END;

인자값을 포함한 변수는 보통 어미로 @p_ 가 많이 붇는다

파라미터의 줄임말인듯.

 

@p_변수명 이런식으로 많이쓴다

 

 

변수선언

CREATE PROCEDURE 프로시저명(
	@p_test cahr(8)
)
AS
BEGIN
SET NOCOUNT ON 
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
	
    
    DECLARE @p_hello VARCHAR(40) ;
    
	SELECT * 
	FROM 테이블명
	WHERE 컬럼 = @p_test AND 컬럼 = @p_hello

SET NOCOUNT OFF
RETURN
END;

 

조건문 사용

CREATE PROCEDURE 프로시저명(
	@p_test cahr(8)
)
AS
BEGIN
SET NOCOUNT ON 
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
	
    
    DECLARE @p_hello INT ;
    
    IF (@p_hello = 0)
    BEGIN
    	SELECT * 
    	FROM 테이블명
	END
    
    ELSE 
    BEGIN
    	SELECT * 
        FROM 테이블명
	END

SET NOCOUNT OFF
RETURN
END;

 

728x90
반응형

view 데이터 json형태로 만들기

var obj = {}; //var Obj = new Object(); 와 동일

obj.name = $('#yourName').val();

단순 object 형태로 만든다.

자바를 사용해 본 적이 있다면 map 이라고 인식하면 된다.

key : name, value : $('#yourName').val()

 

이때 자바에서는 map 으로 이것을 변환하여 받아들일 수 있다.

 

object 여러개 생성

var obj = {}; //var Obj = new Object(); 와 동일
var Arr = []; //var Arr = new Array(); 와 동일

obj.name = $('#yourName').val();
obj.face = $('#face').val();

Arr.push(obj);

Arr = [{name : value},

         {face : value}];

이런 형태가 된다. ajax 로 보낼때 유용하다

728x90

+ Recent posts