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 페이지에 표시되지 않습니다.
아무도 도와 줄 수 있습니까?
을 넣어 잊으 셨나요? – KyelJmD
누락 = <% = session.getAttribute ("사용자 이름"); %> – NullPointerException
스크립틀릿보다 JSP EL을 선호합니다 (예 :'$ {사용자 이름} '). –