[문제점]
웹애플리케이션 소스중 특정 패키지의 소스를 보안상 이유(또는 다른 이유)로 jar로 배포해야할 경우 Component-Scan의 base-package에 해당되는데도 bean생성을 못하는 경우가 있다.

[해결방안]
이클립스의 export기능으로 만들었다면 Add directory entries 옵션을 선택하고 jar를 만들면 된다.

[원인]
default로 이클립스는 jar를 만들때 클래스만 패키징하고 디렉토리는 집어넣지 않아서 컴포넌트 스캔 시 문제가 발생하는 것이다.

'IT > FrameWork' 카테고리의 다른 글

[eGovFrame] 쿠키 사용 제한  (0) 2012.07.13
[eGovFrame]세션 종료시점 이벤트 핸들링  (0) 2012.07.13
 

[eGovFrame] 쿠키 사용 제한

IT/FrameWork | 2012. 7. 13. 11:58
Posted by 까군

수정중...


[현상]
컨트롤러단에서 쿠키에 값을 집어넣기 위해
response.addCookie(이름,값)해도 쿠키가 생성되지 않아 당황스러움..

[원인]
스프링에서는 컨트롤러에서 쿠키에 값 Set처리하는게 안된다고 함..
인터셉터나 Jsp에서 하는 건 가능하다고 하나..
전자정부표준v2.0에서 제공하는 jsp샘플을 통해 테스트해도 생성되지 않아 더 당황스러움..

[결론]
CookieGenerator 클래스이용..하거나 Service가 아닌 jsp에서 직접 쿠키 생성.

1. CookieGenerator 이용
CookieGenerator cg =
new CookieGenerator();

cg.setCookieName("쿠키이름");
cg.addCookie(response, 값);

참조URL : http://static.springsource.org/spring/docs/1.1.x/api/org/springframework/web/util/CookieGenerator.html 

2. jsp에서 직접 쿠키 이용

EgovCookieProcessCusotm.jsp

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page language="java" contentType="text/html; charset=UTF-8" session="false" %>
<%@ page import="egovframework.com.utl.cas.service.EgovSessionCookieUtil"  %>
<%@ page import="java.util.*"  %>
<%@ page import="java.net.*"  %>
<%!
    String safeGetParameter (HttpServletRequest request, String name){
        String value = request.getParameter(name);
        if (value == null) {
            value = "";
        }
        return value;
    }
%>
<%!
    void setCookie (HttpServletRequest request, HttpServletResponse response, String cookieNm, String cookieVal, int period){
   
        Cookie cookie = new Cookie(cookieNm, cookieVal);
        cookie.setMaxAge(60*period);
        cookie.setPath("/");
        response.addCookie(cookie);
    }


 
 String getCookie (HttpServletRequest request, String cookieNm ) {  
  Cookie[] cookies = request.getCookies();
  if(cookies == null){
   return "";
  }
  String cookieValue = null;
  
  for (int i=0; i < cookies.length; i++) {
   if(cookieNm.equals(cookies[i].getName())) {
    
    cookieValue = cookies[i].getValue();
   }
  }
  
  return cookieValue;
 }

 void delCookie (HttpServletResponse response, String cookieNm){
    Cookie cookie = new Cookie(cookieNm, "");
    cookie.setMaxAge(-1); // 0 : 쿠키 삭제 , -1 : 쿠키 파일 생성 안됨. 브라우저 닫힌 후 삭제(default)
    cookie.setPath("/");
    response.addCookie(cookie);
}

%>

 

 

Servlet API 2.4부터 지원하는 HttpSessionListener를 사용하시면..
세션이 없어지는 시점에 세션 정보를 확인하실 수 있을 것 같습니다.

간단한 사용 예는 다음과 같습니다.
(구체적인 사용 방법은 javax.servlet.http.HttpSessionEvent에 대한 javadoc 등을 참조하시면 될 것 같습니다.)

public class EgovHttpSessionListener implements HttpSessionListener{
public void sessionCreated(HttpSessionEvent event){
// event.getSession() 참조
}
public void sessionDestroyed(HttpSessionEvent event){
// event.getSession() 참조
}
}

<web.xml>
<listeners>
<listener-class>egovframework.template.EgovHttpSessionListener</listener-class>
</listeners>

- 출처 전자정부표준시스템 Q&A -

 

블로그 이미지

까군

카테고리

분류 전체보기 (62)
IT (21)
HTTP (0)
JAVA & JSP (2)
WAS (6)
FrameWork (3)
etc (2)
OpenLayers (0)
AIX (5)
DB (3)
G2 (0)
생활 (0)
명언 (41)