서버 세션 기억공간에 (이름,값) 이름=값 :
<%
session.setAttribute("sname", "svalue");
%>
<br>
서버 세션 기억공간에 이름에 해당하는 값을 가져오기 :
<%=session.getAttribute("sname") %>
[출력]
서버 세션 기억공간에 이름에 해당하는 값을 가져오기 : svalue
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/login.jsp</title>
</head>
<body>
<h1>jsp1/login.jsp</h1>
<form action="loginPro.jsp" name="fr" method="get">
아이디 : <input type="text" name="id"><br>
비밀번호 : <input type="password" name="pass"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/loginPro.jsp</title>
</head>
<body>
<h1>jsp1/loginPro.jsp</h1>
<%
String id = request.getParameter("id");
String pass = request.getParameter("pass");
%>
폼에서 입력한 아이디 : <%=id %><br>
폼에서 입력한 비밀번호 : <%=pass %><br>
<%
// 데이터베이스 저장된 아이디 admin, 비밀번호 p123
String dbId="admin";
String dbPass="p123";
%>
데이터베이스에서 입력한 아이디 : <%=dbId %><br>
데이터베이스에서 입력한 아이디 : <%=dbPass %><br>
<%
// 주소값 비교하기때문에 ==로 비교하면 틀리다고 나옴
// 기본자료형 비교 숫자 == 숫자
// 참조형 비교 문자열 비교 문자열.equals(문자열)
if(id.equals(dbId) && pass.equals(dbPass)){
// 아이디 비밀번호 일치 => 권한부여
// => 연결만 되어 있으면 페이지 상관없이 값을 유지
// => 세션값을 부여
session.setAttribute("id",id);
// loginMain.jsp 이동
response.sendRedirect("loginMain.jsp");
}else {
// 아이디 비밀번호 틀림
// 뒤로 이동
out.println("아이디 비밀번호 틀림");
%>
<script type="text/javascript">
alert("아이디 비밀번호 틀림");
history.back();
</script>
<%
}
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/loginMain.jsp</title>
</head>
<body>
<h1>jsp1/loginMain.jsp</h1>
<%=session.getAttribute("id") %>님이 로그인하셨습니다.
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/logout.jsp</title>
</head>
<body>
<h1>jsp1/logout.jsp</h1>
<%
session.invalidate();
// response.sendRedirect("login.jsp");
%>
<script type="text/javascript">
alert("로그아웃");
location.href="login.jsp";
</script>
</body>
</html>
아이디 비밀번호 불일치하는 경우
login.jsp 화면으로 돌아감
아이디 비밀번호 일치하는 경우
loginMain.jsp 화면으로 넘어감
로그아웃 버튼 눌리면 그냥 login.jsp로 넘어가는 방법, 팝업메시지 뜬 후 login.jsp로 넘어가는 방법 2가지 있음
서버의 정보를 저장하는 내장객체
서버 start 하면 application 기억장소 할당
서버 stop 하면 application 기억장소 삭제
서버 당 1개 application 기억장소 생성
서버 정보 : <%=application.getServerInfo() %><br>
서버 물리적 경로 : <%=application.getRealPath("/") %><br>
[출력]
서버 정보 : Apache Tomcat/9.0.68
서버 물리적 경로 : D:\workspace_web1\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\webProject\
출력정보를 저장
<%
out.println("웹 출력 정보 저장");
System.out.println("콘솔 출력");
%>
<br>
출력 정보를 저장하는 기억장소 크기 : <%=out.getBufferSize() %><br>
출력 정보를 사용하고 남은 기억장소 크기 : <%=out.getRemaining() %><br>
<%
// 출력 마감
out.close();
out.println("마감하고 출력"); // 에러 발생
%>
[출력]
출력 정보를 저장하는 기억장소 크기 : 8192
출력 정보를 사용하고 남은 기억장소 크기 : 7823
현 페이지 정보를 저장하는 내장객체
페이지가 이동하면 기존 페이지 정보는 사라지고 새로운 페이지 정보 저장
기억장소 유지 기간 (Scope 값 유지 영역)
- pageContext : 하나의 페이지 값만 유지
- request, response : 요청정보 값 유지
- session : 연결만 되어있으면 페이지 상관없이 값 유지
- application : 서버가 start되어 있는 동안 값 유지
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/scopeFormm.jsp</title>
</head>
<body>
<h1>jsp1/scopeForm.jsp</h1>
<form action="scopePro.jsp" name="fr" method="get">
아이디 : <input type="text" name="id"><br>
비밀번호 : <input type="password" name="pass"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/scopePro.jsp</title>
</head>
<body>
<h1>jsp1/scopePro.jsp</h1>
<%
// 폼에서 입력한 아이디 비밀번호 => 서버에 전달 request 내장객체 저장
String id = request.getParameter("id");
String pass = request.getParameter("pass");
// 내장객체 저장소에 => 값저장
pageContext.setAttribute("page", "pageContext value");
request.setAttribute("req", "request value");
session.setAttribute("ses", "session value");
application.setAttribute("app", "application value");
%><br>
아이디 : <%= id %><br>
비밀번호 : <%= pass %><br>
// 내장객체에 값 입력하기
pageContext 값 : <%=pageContext.getAttribute("page") %><br>
request 값 : <%=request.getAttribute("req") %><br>
session 값 : <%=session.getAttribute("ses") %><br>
application 값 : <%=application.getAttribute("app") %><br>
<a href="scopePro2.jsp">scopePro2.jsp로 이동</a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/scopePro2.jsp</title>
</head>
<body>
<h1>jsp1/scopePro2.jsp</h1>
<%
// 폼에서 입력한 아이디 비밀번호 => 서버에 전달 request 내장객체 저장
String id = request.getParameter("id");
String pass = request.getParameter("pass");
%>
아이디 : <%=id %><br>
비밀번호 : <%=pass %><br>
pageContext 값 : <%=pageContext.getAttribute("page") %><br>
request 값 : <%=request.getAttribute("req") %><br>
session 값 : <%=session.getAttribute("ses") %><br>
application 값 : <%=application.getAttribute("app") %><br>
</body>
</html>
<a href="scopePro2.jsp?id=<%=id%>&pass=<%=pass%>">scopePro2.jsp로 이동</a>
주소값에 id pass값 담아서 넘기면 된다.
<script type="text/javascript">
alert("scopePro2.jsp 이동");
location.href="scopePro2.jsp?id=<%=id%>&pass=<%=pass%>";
</script>
javascript로 구현할 수도 있다.
<%
response.sendRedirect("scopePro2.jsp?id="+id+"&pass="+pass);
%>
response 내장객체에 담아서 넘길 수 있다.