2013-09-02 2 views
1

페이지가 두 개 있습니다 (예 : A와 B). 사용자가 페이지 A에서 페이지 B로 이동합니다. 페이지 -B는 Page-A에서 전달되는 일부 값을 가져야합니다. 이 값 중 일부는 객체입니다. 지금은 페이지-B문자열 압축 : URL을 통해 객체 전달

  • 스토어에 매개 변수를 전달하기 위해 다음과 같은 방법을 어떤 범위에서 객체 (예를 들어 세션, 페이지-흐름).
  • 개체를 쿼리 문자열로 String으로 변환 한 후 전달합니다. 위의 두 가지 방법 중

단점은 각각 다음과 같습니다 : 다른 세션에서 액세스하려고

  • 나중에 사용에 대한 사용자의 북마크 페이지-B 경우는 예외를 생성합니다. 객체가 범위에 없기 때문입니다.
  • URL 길이에 제한이 있습니다. 2048 자 (ref)입니다. 따라서 JSON으로 변환하여 URL을 통해 전달하려고하면 JSON String이 제한된 문자보다 많으면 Page-B에서 JSON 예외가 발생합니다.

제한된 문자를 초과하지 않도록 Object의 문자열 표현을 압축 할 수 있습니까?

(다른 방법을 통해)이 문제를 어떻게 해결할 수 있습니까?

모든 솔루션에 크게 감사드립니다.

+2

GET 매개 변수로 저장하고 ID를 전달하거나 개체를 게시하십시오. 또는 쿠키를 사용하십시오. –

+0

일반적으로 표준 GET 대신 POST 메서드를 사용하여 URL 길이 제한을 피하면 URL의 매개 변수 부분이 HTTP 요청의 메시지 본문 부분으로 이동합니다. – mvw

+0

URL에 어떤 종류의 개체가 전달됩니까? 나는 그들의 용도가 무엇인가? 세션 정보 또는 사용자 기본 설정과 같은 정적 정보를 나타 냅니까? 세션 범위가 사용자가 북마크 된 URL을 사용하려고하면 해당 객체를 사용하기 전에 다시 로그인하도록 사용자를 리디렉션해야합니다. 글쎄, 나는 웹 전문가가 아니지만 이것이 내가 그것을 보는 방법이다. 어쩌면 쿠키를 사용할 수 있습니다. –

답변

1

URL에 일련 번호가 지정된 객체를 넣는 것은 정말 좋은 생각입니다. URL (GET 매개 변수)을 통해 상태에 액세스하려면 일반적으로 URL에 문제의 항목을 식별하는 몇 가지 방법 만 포함되어 있어야합니다.

다행스럽게도 데이터베이스 백엔드를 사용하여 개체를 유지하는 경우 데이터베이스는 일반적으로 기본 키 형태로 자신에게 ID를 제공합니다. 그런 다음 ID를 URL에 넣고 Java에서 요청을 수신 할 때마다 해당 ID에 대한 객체를 검색하도록 할 수 있습니다.

데이터베이스 백 엔드를 사용하지 않으면 개체에 위치 할 수있는 ID를 개체에 부여해야합니다. 가장 간단한 해결책은지도에 개체에 대한 참조를 저장하고 URL에지도 키를 넣는 것입니다.

+0

그런 다음지도를 정리해야 할시기를 알아야합니다. – nafg

+0

@nafg 예, 그렇습니다. URL에있는 일련 번호가 지정된 데이터가 손상되지 않았거나 의도적으로 악의적으로 조작되는 것을 방지하는 것보다 훨씬 덜 까다로운 문제입니다. – GordonM

관련 문제