일부 기능을 처리하고 결과를 JSP 페이지로 보내는 Java HttpServlet 클래스와 함께 작동하는 "look up"html 페이지가 있습니다.세션 속성을 유지하는 방법
조회를 수행하려면 다른 서블릿의 세션에 넣는 loginresult 객체가 필요합니다.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
// get attributes that were filled in on the login webpage
request.getAttribute("username");
request.getAttribute("password");
String username = request.getParameter("username");
String password = request.getParameter("password");
LoginManager loginManager = new LoginManager(username.trim(), password.trim());
if (loginManager.doLogin() == true) {
javax.servlet.http.HttpSession session = request.getSession();
session.setAttribute("loginResult", loginManager.getLoginResult());
session.setAttribute("binding", loginManager.getBinding());
response.sendRedirect("lookup.html");
이 내 JSP 페이지에서 찾아 볼 서블릿
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
javax.servlet.http.HttpSession session = request.getSession();
LoginResult lr = (LoginResult) session.getAttribute("loginResult");
if(lr == null)
{
throw new Exception("Your session has expired, please log in again");
}
// some look up code
RequestDispatcher dispatcher = request.getRequestDispatcher("result.jsp");
request.setAttribute("result", result);
request.setAttribute("question", question);
request.setAttribute("xml", xml);
dispatcher.forward(request, response);
에서 다음을 수행하는 입력 버튼입니다 무슨이다 :
이
은 로그인 서블릿에서 일어나는 것입니다 온 클릭 = "window.location.href = 'lookup.html'"//간혹 결과 페이지를 초점이 맞지 않거나 최소화하거나 너무 오래 기다리면 검색 페이지로 돌아갑니다. e는 내 loginresult 객체 == null로 보입니다. 제 의견으로는 이음매가 만료되었습니다. Apache Tomcat 서버가 세션을 30 분 동안 유지한다고 생각했지만.
내 세션 속성이 사라지는 이유는 무엇입니까?
나는 현명한 제안을하기 위해 세션 속성을 만드는 방법과 나중에 사용하는 방법을 포함하는 코드를 게시해야한다고 생각합니다. –
"조회 페이지로 돌아 가기"라는 구는 분명하지 않습니다. 로그인했으면 조회 페이지로 간 다음 잠시 동안 페이지를 나가고 다시 열린 페이지 (조회 페이지)를보고 세션이 사라집니다. 정확히 "반환"이란 뜻은 무엇입니까? –
로그인 한 후 조회 페이지로 이동합니다. 조회 페이지에서 조회 할 수 있습니다. 결과는 결과 페이지에 표시됩니다. 결과 페이지에서 조회 페이지로 돌아갈 수 있습니다. 세션 속성이 존재하는 한 다시 조회 할 수 있습니다. 그래서 나는 사용자의 브라우저가 열려있는 한 세션을 지속하기를 원합니다. –