2013-04-18 1 views
2

Java 응용 프로그램에서 세션이 작동하는 데 문제가 있습니다.로그인/로그 아웃을위한 Java 세션 사용

내 login.jsp 페이지는 LoginAction 페이지를 호출합니다.

package struts.action; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 
import org.apache.struts.action.ActionForm; 
import org.apache.struts.action.ActionForward; 
import org.apache.struts.action.ActionMapping; 

import struts.form.LoginForm; 

public class LoginAction extends org.apache.struts.action.Action { 
private final static String SUCCESS = "success"; 
private final static String FAILURE = "failure"; 

    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 
     LoginForm lf = (LoginForm) form; 
     HttpSession session = request.getSession(true); 
     if (lf.getUsername().equals(lf.getPassword())) { 

      session.setAttribute("Username", lf.getUsername()); 
      System.out.println(session.getAttribute("Username")); 
      return mapping.findForward(SUCCESS); 

     } else { 
      return mapping.findForward(FAILURE); 
     } 
    } 
} 

LoginForm 페이지를

package struts.form; 
import org.apache.struts.action.*; 

public class LoginForm extends ActionForm{ 

    private String username; 
    private String password; 

    public LoginForm() { 
     super(); 
    } 
    private static final long serialVersionUID = 104092268304152302L; 

    public String getUsername() { 
    return username; 
    } 

    public void setUsername(String username) { 
    this.username = username; 
} 

    public String getPassword() { 
     return password; 
     } 

     public void setPassword(String password) { 
     this.password = password; 
    } 
} 

success.jsp, 대응

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> 
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> 
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> 
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><%@page 
    language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<html> 
<head> 
<title>success</title> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
</head> 
<body> 
<H1>Hello: <% session.getAttribute("Username"); %></H1> 

<html:form action="/LogoutAction" > 
     <html:submit value="Logout" /> 
</html:form> 

</body> 
</html> 

아웃 동작 페이지 패키지 struts.action에 기록 할 때 표시되는 페이지; LogoutForm에게 패키지 struts.form 대응

import javax.servlet.http.HttpSession; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.apache.struts.action.ActionForm; 
import org.apache.struts.action.ActionForward; 
import org.apache.struts.action.ActionMapping; 

public class LogoutAction extends org.apache.struts.action.Action { 

    private final static String SUCCESS = "success"; 
    private final static String FAILURE = "failure"; 

    @Override 
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) 
    throws Exception { 
     HttpSession session = request.getSession(true); 
     System.out.println(session.getAttribute("Username")); 

     try{ 
      session.removeAttribute("Username"); 
      session.invalidate(); 
      return mapping.findForward(SUCCESS); 
     }catch(Exception ex){ 
      System.out.println("Error"); 
     } 
    return mapping.findForward(FAILURE); 
    } 
} 

; import org.apache.struts.action. *;

public class LogoutForm extends ActionForm{ 

    private static final long serialVersionUID = 1L; 

} 

그래서 세션이 내 로그인 행동에서 만든, 그리고 내가 대해 getAttribute()를 사용하고 콘솔에 인쇄하는 것처럼이 작동되고, 사용자 이름이 올라옵니다. 그러나 사용자 이름은 내 success.jsp 페이지에 표시되지 않습니다.

아무도 도와 줄 수 있습니까?

+0

을 넣어 잊으 셨나요? – KyelJmD

+1

누락 = <% = session.getAttribute ("사용자 이름"); %> – NullPointerException

+1

스크립틀릿보다 JSP EL을 선호합니다 (예 :'$ {사용자 이름} '). –

답변

4

당신은 당신이 사용하는 Struts2의 버전 =

<H1>Hello: <%= session.getAttribute("Username"); %></H1> 
+0

그거야! 많이 감사합니다! – user2287752

+0

@ user2287752 도와 주시겠습니까? 프로젝트에 행운이 있기를 바랍니다. –