포틀릿 환경 설정

환경 설정은 사용자 정의된 정보를 저장하기 위해 포틀릿이 설정합니다. 기본적으로, PortletServingServlet 서블릿은 각 포틀릿 창에 대한 포틀릿 환경 설정을 쿠키에 저장합니다. 그렇지만 위치를 변경하여 세션, .xml 파일 또는 데이터베이스에 저장할 수 있습니다.

쿠키에 포틀릿 환경 설정 저장

쿠키 속성은 다음과 같이 정의됩니다.
경로
context/portlet-name/portletwindow
이름:
쿠키 이름에는 PortletPreferenceCookie라는 고정 값이 있습니다.
쿠키 값에는 다음 구조에 맵핑하는 환경 설정 목록이 포함됩니다.
*['/' pref-name *['=' pref-value]]
모든 환경 설정은 '/'로 시작하며 그 뒤로 환경 설정 이름이 옵니다. 환경 설정이 하나 이상의 값을 갖는 경우 값 앞에는 '=' 문자로 구분되는 이름이 옵니다. 널값은 '#*!0_NULL_0!*#' 문자열로 표시됩니다. 예를 들어, 쿠키 값은 /locations=raleigh=boeblingen/regions=nc=bw와 유사할 수 있습니다.

포틀릿 환경 설정 스토리지 사용자 정의

세션, .xml 파일 또는 데이터베이스에 환경 설정을 저장하기 위해 쿠키를 처리하는 방법을 대체할 수 있습니다. 스토리지를 사용자 정의하려면 포틀릿을 호출하기 전에 요청과 응답을 랩핑하는 새 시작점으로 필터, 서블릿 또는 JavaServer Pages 파일을 작성해야 합니다. 쿠키 대신 세션에 환경 설정을 저장하도록 PortletServingServlet 동작을 변경하는 방법을 이해하려면 다음 예제 랩퍼를 검사하십시오.

다음은 기본 서블릿이 포틀릿 호출을 관리하는 방법의 예입니다.
public class DispatchServlet extends HttpServlet
{
    ...
  public void service(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
	response.setContentType("text/html");
	
	// create wrappers to change preference storage
	RequestProxy req = new RequestProxy(request);
	ResponseProxy resp = new ResponseProxy(request, response);

	// create url prefix to always return to this servlet
                ...
                req.setAttribute("com.ibm.wsspi.portlet.url.prefix", urlPrefix);
        
	// prepare portlet url
	String portletPath = request.getPathInfo(); 
                ...

	// include portlet using wrappers
	RequestDispatcher rd = getServletContext().getRequestDispatcher(modifiedPortletPath);
                rd.include(req, resp);
  }
}
다음 예에서, 요청 랩퍼는 세션 밖에서 환경 설정을 검색하도록 쿠키 처리를 변경합니다.
public class RequestWrapper extends HttpServletRequestWrapper 
{
    ...
    public Cookie[] getCookies() {
        Cookie[] cookies = (Cookie[]) session.getAttribute("SessionPreferences");
        return cookies;
    }
}
다음 예에서, 응답 랩퍼는 세션에 환경 설정을 저장하도록 쿠키 처리를 변경합니다.
public class ResponseProxy extends HttpServletResponseWrapper 
{
   ...
    public void addCookie(Cookie cookie) {
        Cookie[] oldCookies = (Cookie[]) session.getAttribute("SessionPreferences");
        int newPos = (oldCookies == null) ? 0 : oldCookies.length;
        Cookie[] newCookies = new Cookie[newPos+1];
        session.setAttribute("SessionPreferences", newCookies);

        if (oldCookies != null) {
        System.arraycopy(oldCookies, 0, newCookies, 0, oldCookies.length);
        } 
        newCookies[newPos] = cookie;
    }
}

주제 유형을 표시하는 아이콘 개념 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cport_cookies
파일 이름:cport_cookies.html