블로그 이미지
개발자의 조건은 어떤것도아닌 3일은 기본으로 날샐수있는 체력과 3일을 안씻어도 찝찝합을 못느끼는 것과 라면을 먹어도 탈없는 위입니다.
DefineJAVA

공지사항

최근에 받은 트랙백

글 보관함

calendar

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      

'jsp'에 해당되는 글 2

  1. 2011/05/05 세션 강제 종료(강제 로그 아웃)
  2. 2008/01/29 struts에서 Foward 사용하기 (1)

세션 강제 종료(강제 로그 아웃)

2011/05/05 13:46 | Posted by DefineJAVA
크리에이티브 커먼즈 라이선스
Creative Commons License

Servlet 버젼이 올라 감으로 HttpSession에서 HttpSessionContext을 가져오는 메소드인 getSessionContext를 사용 못하게 되었다.
실제 사용을 하면 객체을 반환을 하기는 하지만 객체 안에 세션은 비워져 있다.

문서를 뒤져 보니 보안 관계상 사용을 못한다고 어쩌고 적혀 있기는 하는데.....그래도 관리자가 강제 로그아웃 시키거나 세션을 지워줘야 할 경우가 있을 것 같아서 고민끝에 편법을 하나 생각 해 냈다.(Jeus에서는 된다는 말도 있음)

HttpSessionContext 사용이 가능 하다면 HttpSessionContext .getSession(아이디)를 사용하여 세션 객체를 반환받고 HttpSession.invalidate() 메소드를 호출 하면된다.

HttpSessionContext 사용이 불가능 하다면 아래 소스와 같이 jsessionId값을 뒤쪽에 붙여 보내에 해당 세션으로 연결 시켜서 로그 아웃을 실행 하면 된다.


call.jsp

String jsessionId = "288B29804635D51357A52F6CCF25617B";
BufferedReader in = null;
String address = "http://me:8080/cms/logout.jsp;jsessionid="+ jsessionId;
try
{
 URL url = new URL(address);
 in = new BufferedReader(new InputStreamReader(url.openStream()));
 String line = in.readLine();
 in.close();
} catch (Exception e) {
 System.out.println("-.-;;");
}
in = null;

logout.jsp
System.out.println(session.getId());
 session.invalidate();

이 편법은 Session Hijacking이라는 다른 사람의 세션을 훔치는 방법을 응용한 방법이다.

약간의 문제가 있을 수도 있지만 우선은 이렇게 처리했다.

jsessionId값을 모르면 아무 소용이 없기 때문에 HttpSessionListener를 구현하여 세션이 생성되고 세션을 종료 되는 시점을 체크 하여 특정 저장 공간에 세션아이디 값과 아이피등 여러 정보를 저장 해 놓고 사용 하면된다.
저작자 표시 비영리 변경 금지

struts에서 Foward 사용하기

2008/01/29 14:11 | Posted by DefineJAVA
크리에이티브 커먼즈 라이선스
Creative Commons License

이번에는 Action (Foward)에 대해 배우겠습니다.
이것은 별도의 Class를 걸치지 않고 바로 view 페이지로 이동할 때 쓰입니다.
이번에 우리는 Hello Struts! 문장이 출력되는 JSP 페이지와 연결 하여 요청이 들어오면 Struts를 통해서 해당jsp 파일이 보여지도록 만들것입니다.
별다른 비지니스로직이 처리되는것이 아닌 바로 프리젠테이션로직으로 이동하는 것입니다.
순서는 다음과 같습니다.

1. jsp 파일 생성
2. struts-config.xml에 action 등록
3. 실행

아주 간단합니다. 특별한 비지니스 로직을 통하지 않으므로 Class를 만들 필요도 없구요.

1. Eclipse에서 jsp파일을 한개 만듭니다.
파일명은 helloStruts.jsp로 하겠습니다.
편의를 위해 디렉토리 한개를 만들겠습니다.

사용자 삽입 이미지

디렉토리와 파일명은 /jsp/study01/helloStruts.jsp 이와 같이 하겠습니다.
사용자 삽입 이미지

파일이 만들어 생성 되었으면 내용을 편한대로 입력하시고 저장하시면 됩니다.
사용자 삽입 이미지

2. struts-config.xml파일을 열어서 action을 등록 합니다.

사용자 삽입 이미지

<action-mappings /> 에 다음과 같이 등록 해 줍니다.
<action path="/hello" forward="/helloStruts.jsp" />

<action-mappings>
     <action path="/helloStruts" forward="/ helloStruts.jsp" />
</action-mappings>

3. 실행
이걸로 Foward 가능한 action 등록은 끝났습니다. 이제 각자 서버에 맞게 배포 후 실행 하면 다음과 같은 화면을 볼 수 있을 것 입니다.

사용자 삽입 이미지


Struts에서 Foward는 다음과 같은 순서로 이루어 집니다.
1. 요청이 들어오면 우선 URL 패턴을 통해 이것이 Struts를 이용하여 실행이 될것인지 판단합니다.
2. 스트럿츠를 통해 실행이 되어야 하는 패턴일 경우 struts-config의 action-mapping 부분에 등록되어 있는 여러 액션중 path가 맞는 것을 찾아 해당 액션이 가르키는 foward의 내용을 보여 줍니다.
(action의 type이 지정되어 있다면 해당 클레스의 excute 메소드를 실행시킵니다. )
3. foward에 해당되는 응답을 줍니다.

사용자 삽입 이미지


그림에서 파란색으로 칠해 있는 부분이 Struts에 관련된 부분입니다.
url 패턴 검사는 struts 사용을 위해 Servlet으로 등록할 때 *.do로 오는 것을 struts로 처리한다고 정의 했을 것입니다.
그러므로 helloStruts.do로 호출하게 된다면 위의 순서에 따라 helloStruts.jsp의 내용을 뿌려주게 됩니다.

글을 쓰다가 보니 또 뒤죽 박죽 되버렸네요~
다음엔 조금더 생각 있이 써야 겠네요!
내을은 class를 한개 만들어 비지니스 로직을 실행 가능 하도록 만들도록 하겠습니다.
그럼 ' '

이전 1 다음