반응형

이번 포스팅은 JSP, Servlet, Java에서 현재 경로를 확인할 수 있는 방법에 대하여 알아보겠습니다.

#. JSP (Java Script Page) 의 경우
1. URL : <%= request.getRequestURL() %> </BR>
2. URI : <%= request.getRequestURI() %> </BR>
3. 전달 파라미터 : <%=request.getQueryString()%> </BR>
4. 전달 파라미터 Map으로 return : <%=reqeust.getParameterMap()%>

#. Servlet
절대 경로
// 웹서버의 Document Root
getServletContext().getRealPath("/"));
ex) getServletContext().getRealPath("/WEB-INF/web.xml"));

#. Java
절대 경로
// 현재 자신의 절대 경로
this.getClass().getResource("").getPath();
// classes 폴더의 최상위 경로
this.getClass().getResource("/").getPath();
// classes 폴더에서부터 시작하여 해당 파일까지의 절대 경로
this.getClass().getResource("/com/test/config/config.properties").getPath();

반응형

'Development > Web' 카테고리의 다른 글

[Web] 뷰 컴포넌트 통신  (0) 2022.09.19
[Web] 뷰 컴포넌트  (0) 2022.09.18
[Web] 뷰 인스턴스 라이프 사이클  (0) 2022.09.18
[Web] 뷰 인스턴스  (0) 2022.09.18
[Web] JSP에서 엑셀 파일로 저장하기  (0) 2020.04.08
반응형

이번 포스팅은 ORACLE DB 사용자 계정 패스워드 없애는 방법에 대하여 알아보도록 하겠습니다.

1. Oracle 사용자를 생성하면 기본적으로 패스워드 사용기간이 180일로 설정

2. 180 + 7일(경고 기간)이 지나면 계정이 잠김

3. 패스워드 사용기간 제한을 없애고 싶다면 아래와 같이 실행

SQL> SELECT * FROM DBA_PROFILES WHERE PROFILE = 'DEFAULT';

SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

반응형

'Development > DB' 카테고리의 다른 글

[DB] SQL의 기본과 활용 - 1  (0) 2022.08.31
[DB] Oracle Listener  (0) 2020.04.08
[DB] DB Sequence 생성과 삭제  (0) 2020.04.08
[DB] ROWNUM과 ROWID  (0) 2020.04.08
[DB] ORACLE DB SYSTEM, SYS 암호 변경  (0) 2020.04.08
반응형

이번 포스팅은 ORACLE DB의 SYSTEM 계정과 SYS 계정의 암호 변경하는 방법에 대하여 알아보도록 하겠습니다.

C:\> sqlplus "/as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production on 일 1월 19 13:05:13 2014

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

다음에 접속됨:

Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL> SHOW USER

USER은 "SYS"입니다.

 

SQL> ALTER USER SYS IDENTIFIED BY 원하는 암호;

사용자가 변경되었습니다.

 

SQL> ALTER USER SYSTEM IDENTIFIED BY 원하는 암호;

사용자가 변경되었습니다.

 

SQL> SELECT USERNAME, PASSWORD FROM DBA_USERS;

 

SQL> SHOW USER USER은 "SYS"입니다.

SQL> ALTER USER SYS IDENTIFIED BY 원하는 암호; 사용자가 변경되었습니다.

SQL> ALTER USER SYSTEM IDENTIFIED BY 원하는 암호; 

반응형

'Development > DB' 카테고리의 다른 글

[DB] SQL의 기본과 활용 - 1  (0) 2022.08.31
[DB] Oracle Listener  (0) 2020.04.08
[DB] DB Sequence 생성과 삭제  (0) 2020.04.08
[DB] ROWNUM과 ROWID  (0) 2020.04.08
[DB] ORACLE DB 사용자 계정 패스워드 없애는 방법  (0) 2020.04.08
반응형

이번 포스팅은 첨부파일을 통한 Java Class 파일 DeCompile 하는 방법에 대하여 알아보도록 하겠습니다.

 

jad.exe
다운로드

 

 

1. 첨부파일을 Download(jad.exe) 받아 실행

 

 

2. 첨부파일을 Download DeCompile할 Java class 파일과 같이 있는 폴더로 이동시킵니다.

 

 

3. CMD 창을 띄운 후 현재 경로를 Java Class 파일이 있는 폴더로 이동시킵니다.

    

   - cd 명령어 사용

 

 

4. jad -o -sjava 파일명.class 입력해주면 java 파일이 DeCompile이 완료가 됩니다.

반응형

'Development > Java' 카테고리의 다른 글

[Java] StringBuffer vs StringBuilder  (0) 2019.09.26
[Java] Handler 정리  (0) 2019.09.05
[Java] System.arraycopy 사용법  (0) 2019.09.04
반응형

이번 포스팅은 ORACLE DB에서 Lock이 걸렸을 경우 해결방법에 대하여 알아보도록 하겠습니다.




SQL*Plus: Release 11.2.0.1.0 Production on 일 1월 19 13:15:55 2014


Copyright (c) 1982, 2010, Oracle.  All rights reserved.


사용자명 입력: eun

비밀번호 입력:

ERROR:

ORA-28000: the account is locked



사용자명 입력: sys

비밀번호 입력:


다음에 접속됨:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options


SQL> --  SYS 로 접속해서 eun 의 계정 상태를 확인하니 잠겨있다.


 


  1  SELECT USERNAME, ACCOUNT_STATUS


  2        , TO_CHAR(LOCK_DATE, 'YYYMMDDHH24MI') LOCK_DATE

  3 FROM DBA_USERS WHERE USERNAME='AROINTECH';

 


USERNAME                       ACCOUNT_STATUS                   LOCK_DATE

------------------------------ -------------------------------- ------------

EUN                                EXPIRED & LOCKED                 201401191310



SQL> ALTER USER eun ACCOUNT UNLOCK;


사용자가 변경되었습니다. 



반응형
반응형

이번 포스팅은 Intent FLAG에 대하여 알아보도록 하겠습니다.

 

Android  플랫폼에서 Activity 는 또 다른 Activity 를 시작할 수 있고, 각각의 Activity 는 차곡 차곡 Task 라고 불리우는 Activity Stack 에 쌓이게 됩니다. 사용자는 뒤로가기를 통해 현재 화면상에 보이는 Activity 를 종료시키고, 바로 직전에 사용된 Activity로 돌아갈 수 있습니다. 

 

구글에서는 Activity를 호출할 때 사용되는 Intent 에 적절한 플래그 값을 설정해서 Activity Stack 을 제어할 수 있는 방법을 제공해 줍니다. 이 플래그들은  FLAG_ACTIVITY 라는 접두어를 갖고 있는데, 개인적으로 가장 요긴하게 사용하고 있는 FLAG_ACTIVITY 네 가지를 소개해 봅니다. 

 

 

# FLAG_ACTIVITY_SINGLE_TOP


우선 간단하게 그림으로 표현해 보았습니다. 

A 와 B  두 가지 Activity가 있습니다. A라는 Activity는 B Activity를  호출하고, B라는 Activity는 다시 자기 자신인 B Activity를 호출하는 경우라고 가정해 보겠습니다. (A->B->B)

 

 


   
     
  B B(재사용)
A A A

           A                  A->B             A->B->B

 

- 호출하는 B Activity가 이미 Task 의 가장 앞에 위치하는 경우, 또 하나의 B Activity를 생성하지 않습니다.

- 기존에 존재하는 B Activity가 재활용이됩니다. 

- B Activity가 재활용된다는 것을 개발자가 알아채고 새롭게 전달되는 Intent를 사용할 수 있도록 합니다.

   (B Activity 의 onPause() / onNewIntent() / onResume() override 메소드가 순차적으로 호출이 됩니다.)

- 동일한 Activity 를 여러 번 생성하는 것은 메모리 사용량과 Activity 시작 속도 모두에 좋지 않습니다. 이런 경우 FLAG_ACTIVITY_SINGLE_TOP를 적절하게 활용하면 제법 큰 효과를 볼 수 있습니다.

 

 

 # FLAG_ACTIVITY_NO_HISTORY 


우선 간단하게 그림으로 표현해 보았습니다. 

A 와 B  두 가지 Activity 가 있습니다. A라는 Activity는 B를 B라는 Activity는 A를 호출한 후에 (A->B->A) 사용자가 뒤로 가기를 하는 경우를 가정해 보겠습니다.

 

                      <일반적인 경우>                                                       < FLAG_ACTIVITY_NO_HISTORY 적용>

 

             
    A        
  B B     B(흔적X) A
A A A   A A A

           A                   A->B             A->B->A                                      A                  A->B             A->B->A

 

 

- FLAG_ACTIVITY_NO_HISTORY 로 설정된 Intent로 시작된 Activity B는 Task에 그 흔적을 남기지 않게 됩니다. 

- B Activity에서 또 다른 A Activity를 호출한 후, 뒤로 가기를 누르면 일반적인 경우 이전에 실행되었던 B Activity가 나타나지만, FLAG_ACTIVITY_NO_HISTORY를 사용하는 경우 맨 처음에 실행되었던 A Activity가 화면에 표시됩니다. 

- FLAG_ACTIVITY_NO_HISTORY 를 사용하게 되면 Task에 해당 Intent의 정보가 기록되지 않기 때문에, A->B 인 상황에서 Home 버튼 등을 눌러 다른 Task로 전환된 후, 다시 본 Task로 돌아오게 되면, A Activity가 화면에 표시되는 점은 주의해야 합니다.

- 또한, B Activity 의 onDestroy()가 호출되는 시점이 조금 애매합니다. 일반적인 예상과는 달리, B Activity에서 또 다른 A Activity 를 호출하는 세 번째 단계에서는 onStop() 까지만 호출되고, 이 후에 새롭게 호출된 A Activity 가 뒤로 가기 등 Stack에서 사라지는 순간에서야 onDestroy() 가 호출됩니다.

- FLAG_ACTIVITY_NO_HISTORY 는 여러모로 쓸모가 있는데, 특히 특정한 이벤트 알람 등을 위해 Dialog 형태로 화면에 표시되는 Activity에 적용하기에 편리합니다. (대개의 경우 팝업은 해당 시점에 한 번만 보여주면 되니까.)

 

 

#FLAG_ACTIVITY_REORDER_TO_FRONT와 FLAG_ACTIVITY_CLEAR_TOP 


우선 간략하게 그림으로 살펴 보겠습니다. 

A Activity 에서 B Activity를 그리고 B에서 A를 호출하는 상황을 가정해보았습니다. (A->B->A)

 

                      < 일반적인 경우>                                       <FLAG_ACTIVITY_REORDER_TO_FRONT와 FLAG_ACTIVITY_CLEAR_TOP>

 

               
    A          
  B B     B A  
A A A   A A B A

           A                  A->B              A->B->A                                      A                   A->B           (순서 변환)       (A를 최상단)

 

 

- FLAG_ACTIVITY_REORDER_TO_FRONT 는 매우 특이하게도 Task의 순서 자체를 뒤바꿔 줍니다. 

- 호출하는 Activity가 이미 Task 상에 존재하는 경우 해당 Activity를 새롭게 생성하는 대신, 아래쪽에 위치한 Activity의 순서를 Task의 가장 위로 끌어올려줍니다. 

- A->B->A 의 순서로 Activity 호출이 일어날 때, 새로운 A Activity가 생성되는 대신 아래쪽에 위치한 A Activity가 위로 올라와 최종적으로 B->A의 형태로 Task 가 구성되게 됩니다. 

- 어떤 Activity에서 특정 Activity로 점프하는 형식의 Flow를 구성해야하는 경우 요긴하게 사용될 수도 있지만, Task의 순서를 뒤섞는다는 점에서 사용에 주의를 기울일 필요가 있습니다.  (아무 생각없이 남발하게 되면 뒤로 가기 시 엉뚱한 Activity 가 표시되어 사용자들이 굉장히 혼란스러워하는 경우가 있습니다.) 

 

- FLAG_ACTIVITY_CLEAR_TOP  플래그가 사용되는 경우  호출하는 Activity가 이미 Task 상에 존재하는 경우, 해당 Activity 위에 존재하는 다른 Activity 를 모두 종료시켜 줍니다. 

- A->B->A 로 호출이 일어나는 경우, B Activity 가 종료되고, A Activity 만 Task에 남게 됩니다. 

  (A->B->C->A 인 경우에도 마찬가지로 B와 C 가 종료되고 A 만 남게 됩니다.)

 

 

 

[출처] 안드로이드 알아두면 요긴한 FLAG_ACTIVITY 네 가지

반응형

'Development > Android' 카테고리의 다른 글

[Android] Context  (0) 2020.04.08
[Android] Activity 호출  (0) 2020.04.08
[Android] ArrayList 객체를 Intent로 전달하는 방법  (3) 2020.04.08
[Android] MoveEvent Value  (0) 2020.04.08
[Android] Picsasso vs Glide  (0) 2019.10.01

+ Recent posts