2012-12-20 5 views
0

입니다 사용하지 않는 것을 어떻게 할까? 그 세션은 JSP로 요청과 같은 implicite 읽었지만, 실제로 그것을 사용하는 방법을 모르겠다.JSP 세션 내 문제는 서블릿

URL에 몇 가지 변수를 전달하는 기본 페이지가 있습니다 (예 : index.jsp? id = 1).

도움 주셔서 감사합니다.

답변

3

을 사용할 수 있습니다

및 위해 index.jsp를? 세션의 속성을 얻을 수 있습니다 당신 JSTL<c:set><c:remove>을 사용하여 세션 속성을 관리 할 수 ​​있습니다. 효과적으로 session.removeAttribute("foo") 않습니다

<c:set var="foo" value="bar" scope="session" /> 

을 다음과 같은 :

효과적으로 session.setAttribute("foo", "bar") 않습니다 다음 물론

<c:remove var="foo" scope="session" /> 

, 당신은 할 수 액세스하는 속성의 일반적인 EL 방법을 사용하여 다음과 같은 인쇄 session.getAttribute("foo"). 구체적인 문제에

${foo} 

관련없는, 당신은 서블릿에 대한 당신의 혐오에 작동합니다. 이것은 좋은 습관이 아닙니다. JSTL은 비지니스 로직을 만드는 데 필요한 모든 것을 제공하지 못하기 때문에 기존의 스크립틀릿으로 되 돌린다.. 나는 그것이 단지 무지라고 생각한다. How to avoid Java code in JSP files?

+0

귀하의 의견을 고맙게 생각하지만, 주요 문제는 내가 만든 것이 아닌 뭔가를 만들고 있다는 것입니다. 즉,이 "엉망"을 발견했기 때문에 나는 그것을 가지고 갱신 할 충분한 시간이 없다고 생각합니다. 올바른 코드. 내가 그 링크들을 읽었을 때, 당신은 정말로 옳았습니다, 어쨌든 고맙습니다. – abierto

1

당신이 JSP 코드에서 이것을 사용할 필요가

 <% 

    HttpSession sess = request.getSession(); 

    if (sess==null) 
    { 
     RequestDispatcher dispatcher = request.getRequestDispatcher("/login.jsp"); 
     dispatcher.forward(request, response);       
    } 

     %> 

당신은 ID = 1 당신이

  request.getParameter("id") 
+0

문제와 함께 추가 된 값을 검색 난 다른 JSP로 리디렉션 없다는 것입니다 내 index.jsp 페이지의 모든 것을 처리하십시오. 전에 'HttpSession sess = request.getSession();'을 사용하려고했습니다. 하지만 뭔가를 제출하고 페이지 자체를 다시로드 할 때 sess 변수가 여러 개 선언되어 오류가 발생합니다. – abierto

+0

이미 존재하는 경우 생성 전에 세션 객체를 확인하십시오. 그렇지 않으면 생성하지 마십시오. 단순히 생성하십시오. –

+0

어떻게 확인합니까? – abierto

2

는 두 개의 JSP

  1. index.jsp를 = 얻을 매개 변수가 가정 : https://stackoverflow.com/tags/servlets/info는 또한이 대답은 다소 계몽 수 있습니다 : 조심스럽게 쉽게 생성하고 사용할 수있는 방법을 알아 우리의 서블릿 위키 페이지를 참조

    <%
    String empId = request.getParameter("id");
    session.setAttribute("empId", empId);
    response.sendRedirect("homePage.jsp");

    0 index.jsp를 세션에 추가 값 (내장 객체)의

  2. 현재 홈페이지에 있습니다.JSP = 쓰기 코드는 이전에 키 EMPID

    <%

    String employeId = (String)session.getAttribute("empId");

    %>

+0

답변 해 주셔서 감사합니다.하지만 단일 JSP 페이지에서만 작업하고 싶습니다. – abierto