The Debugging Chronicles : "코드의 미학"
예제와 함께 알아 보는 파라미터를 옮길 수 있는 내장객체들 본문
Request vs Session vs Application
3개의 내장객체들은 scope(유효기간)에 차이점이 있다!
1. Request
Request의 scope == 1 요청 (동안 살아 있을 수 있다)
=> 새로운 요청을 수행하면 기존의 정보들이 사라짐
.getParameter();
ex)리다이렉트는 새로운 요청
.sendRedirect(); 하니까 기존의 apple 값이 사라져버렸다
요청을 할때 마다 (버튼을 누를때마다) 데이터가 사라져버리면 안됨!!
2. Session
Session 의 scope == 1브라우져
=> 기존의 창을 닫으면 기존의 정보들이 사라짐
+시간이 정해져있음 - > 기존의 창이 유지되더라도, 일정 시간이 지나면 기존의 정보들이 사라짐
.getAttribute();
.setAttribute();
ex) 네이버의 로그인 정보
ex) 금융권 어플의 로그인 연장 버튼 30분
예제
a.jsp 에서는 방문자의 이름을 등록합니다.
a 페이지에서 설정한 이름으로 b.jsp 에서 댓글을 쓸수있습니다.
c.jsp 에서 댓글을 등록하는 로직을 구현해주세요.
사용자가 a<->b 페이지를 이동해도 댓글을 써왔던 목록들은 유지됩니다.
a.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="b.jsp" method="POST">
방문자 이름<input type="text" name="visitor">
<input type="submit" value="방문자 등록"/>
</form>
</body>
</html>
b.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.ArrayList" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>댓글 등록 페이지</title>
</head>
<body>
<%
// "name"의 데이터를 가져오기
String name=request.getParameter("name");
// name에 데이터가 있을때 즉 세션에 이름이 존재하면
if(name != null){
// member변수에 name데이터를 넣어 줘라
session.setAttribute("member", name);
}
//member변수에 세션에서 member의 데이터를 가져와서 넣어라
String member=(String)session.getAttribute("member");
ArrayList<String> datas=(ArrayList<String>)session.getAttribute("datas");
%>
<a href="a.jsp">처음으로 돌아가기</a>
<hr>
<form action="c.jsp" method="POST">
<%=member%>님의 댓글 : <input type="text" name="msg" required> <input type="submit" value="댓글작성">
</form>
<hr>
<%
if(datas != null){
%>
<ul>
<% for(String data:datas){ %>
<li><%= data %></li>
<% } %>
</ul>
<%
}
else{
out.println("아직 작성된 댓글이 없습니다...");
}
%>
</body>
</html>
c.jsp
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
/*
String member = 세션에 저장된 meber값;
String msg = request.getParameter("msg");
String msg = 현재 로그인한 사용자 이름+ b.jsp에서 건네준 msg
세션에 저장된 datas.add(msg);
*/
String member= (String)session.getAttribute("member"); //현재 로그인한 사용자 이름
String msg= request.getParameter("msg"); //b.jsp에서 건네준 msg
msg = member + "님 >> " + msg;
ArrayList<String> datas = (ArrayList<String>)session.getAttribute("datas");
if(datas == null){
datas= new ArrayList<String>();
session.setAttribute("datas", datas);
}
datas.add(msg);
response.sendRedirect("b.jsp");
%>
'서버프로그래밍 JSP' 카테고리의 다른 글
Insert board / MVC별로 유의할 점 (0) | 2024.09.03 |
---|---|
[Servlet]리스너 Listener (0) | 2024.09.02 |
.XML설정 파일 (0) | 2024.08.20 |
예제와 함께 알아 보는 파라미터를 옮길 수 있는 내장객체들 - 2 (0) | 2024.08.07 |
[JSP 내장객체] exception, out (0) | 2024.08.07 |