2011-04-23 2 views
32

그래서이 서블릿이 요청되면 사용자의 세션에 Java 객체를 추가하기 위해 서블릿을 얻으려고합니다. 그러나 서블릿이 다음 페이지로 리디렉션 된 후 객체를 검색하려고하면 null 객체가 대신 나타납니다.HttpSession에 Java 객체를 어떻게 저장합니까?

request.setAttribute("object", obj); 

가 그럼 난합니다 (JSP에서)하여 검색하려고 :

Object obj = request.getAttribute("object"); 

그래서 여기

내가 (서블릿 단위)의 HttpSession에 개체를 추가 할 것입니다 obj가 null이되지 않게하려면 어떻게해야합니까?

는 업데이트 : 또한 아무것도이 시도했다 :하여 JSP에 다음과

HttpSession session = request.getSession(); 
session.setAttribute("object", obj); 

:

Object obj = request.getSession().getAttribute("object"); 

두 가지 방법이 여전히 null를 돌려줍니다.

+4

을 다음과 같이

<%= session.getAttribute("object")%> 

을 표현을 사용하거나 다음과 같이 EL을 사용할 수 있습니다 HttpRequest로 설정 중입니다. 그러나 질문은 HttpSession을 말합니다. 어느 쪽을하려고하십니까? – CoolBeans

+0

또한 JSP 상단에 다음과 같은 항목이 있는지 확인하십시오. <% @ page language = "java"session = "true"%> –

+0

obj가 null입니까? request.getSession()에서 해결할 객체를 얻을 수없는 것을 발견했습니다. 두 번째 페이지에서 다른 세션 객체를 만들어야하고 session.getAttribute ("object")를 수행해야했습니다. 대신. – meltdownmonk

답변

42

개체를 세션에 추가하는 대신 요청에 개체를 추가하고 있습니다.
당신이 필요로하는 것은 : 서블릿에서

HttpSession session = request.getSession(); 
session.setAttribute("MySessionVariable", param); 

당신은 당신이 데이터를 저장할 수 4 개 범위를 가지고있다.

  1. 응용 프로그램

당신이 이해해야합니다

  • 세션
  • 요청
  • 페이지. 더보기 위해

  • +6

    이고 request.getSession()에서 세션을 가져올 수 있습니다. – MeBigFatGuy

    +0

    나는 동일한 효과를 얻으 려 시도했지만 그 역시 시도해 보았습니다. – Tamer

    +1

    어떻게 JSP로 읽으려고합니까? – MeBigFatGuy

    12

    here은하지 요청 때문에, 세션에 추가합니다.

    HttpSession session = request.getSession(); 
    session.setAttribute("object", object); 
    

    또한 JSP에서 스크립틀릿을 사용하지 마십시오. 대신 EL을 사용하십시오. object에 액세스하려면 ${object}이 필요합니다.

    JSP 기술 버전 2.0의 주요 기능은 표현식 언어 (EL) 지원입니다. 표현식 언어를 사용하면 JavaBeans 구성 요소에 저장된 응용 프로그램 데이터에 쉽게 액세스 할 수 있습니다. 예를 들어, JSP 표현식 언어를 사용하면 페이지 작성자가 간단한 변수의 경우 ${name} 또는 중첩 된 속성의 경우 ${name.foo.bar}과 같은 간단한 구문을 사용하여 bean에 액세스 할 수 있습니다.

    1

    요청 개체가 세션이 아닙니다.

    저장할 세션 개체를 사용하려고합니다. 세션이 요청에 추가되며 요청간에 데이터를 유지하려고합니다.세션은

    HttpSession session = request.getSession(true); 
    

    에서 얻을 수 있습니다. 세션에서 setAttribute 또는 getAttribute를 사용할 수 있습니다. JSP 세션에

    최신 튜토리얼까지 더는 다음과 같습니다 http://courses.coreservlets.com/Course-Materials/pdf/csajsp2/08-Session-Tracking.pdf 여기

    +0

    EL을 사용하여 유사한 문제가 발생했습니다. 응용 프로그램 및 요청 범위의 속성에 액세스 할 수 있지만 세션 범위는 액세스 할 수 없습니다. 적절한 구문을 사용하고 있습니다. – kiwicomb123

    5

    당신이 HttpRequest 또는 HttpSession를 사용하여 작업을 수행 할 수 있습니다. 그리고 문제가 JSP 내에 있다고 생각하십시오. 당신이 내부 서블릿을 사용하려는 경우

    ,

    Object obj = new Object(); 
    session.setAttribute("object", obj); 
    

    또는

    HttpSession session = request.getSession(); 
    Object obj = new Object(); 
    session.setAttribute("object", obj); 
    

    을 다음과 않는 JSP에 액세스하려면 다음 사용을 요청하거나 세션을 사용하여 속성을 설정 한 후 ,

    <%= request.getAttribute("object")%> 
    

    또는

    <%= session.getAttribute("object")%> 
    

    그래서 문제가 JSP에있는 것 같습니다.

    다음과 같이 그것이 있어야 스크립틀릿을 사용하려면

    ,

    <% 
    Object obj = request.getSession().getAttribute("object"); 
    out.print(obj); 
    %> 
    

    또는 ${object} 또는 ${sessionScope.object}

    관련 문제