본문 바로가기

카테고리 없음

HTML - JSP - forward / request / session +application / JSP 에서 AL 사용 이해예제 ( 게시글 )

index.jsp 코드

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>표지 페이지</title>
</head>
<body>

<form action="main2.jsp" method="post"> <!-- main2로 이동, 정보를 주는거니 post -->
	<input type="text" name="id">
	<input type="submit" value="로그인">
</form>
</body>
</html>

 

 

add.jsp 코드

누가 어떠한 msg를 작성했는지 AL<String> 에 저장하는 로직

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.ArrayList" %>
<%
   request.setCharacterEncoding("UTF-8");

   String msg=request.getParameter("msg");
   msg=session.getAttribute("id")+"     "+msg; // 글쓴이 + 내용으로 출력 위해
   
   ArrayList<String> datas=(ArrayList)application.getAttribute("datas");
   if(datas==null){ // 글을 담을 AL이 없다면 담을 AL를 만들어줘야함
      datas=new ArrayList<String>();
      application.setAttribute("datas", datas);
   }
   datas.add(msg);
   
   response.sendRedirect("main2.jsp"); // 전달할 정보가 없이 새로운 요청을 하기 때문에 senRedirect
%>

 

 

main.jsp 코드

 

if(id!=null){ // 매번 하지말고 index2.jsp를 통해서 페이지를 출력할 때에만 세션에 새 정보를 넣어달라는 의미
session.setAttribute("id", id); // 보안상의 이유로 session에 넣어야함.
}

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.ArrayList" %>
<%
   request.setCharacterEncoding("UTF-8");
   
   String id=request.getParameter("id");
   if(id!=null){ // 매번 하지말고 index2.jsp를 통해서 페이지를 출력할 때에만 세션에 새 정보를 넣어달라는 의미		
		session.setAttribute("id", id); // 보안상의 이유로 session에 넣어야함.
		}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<form action="add2.jsp" method="post"> <!-- add.2로 채팅내역을 보내야함 -->
   [<%=session.getAttribute("id")%>]님: <input type="text" name="msg"> <input type="submit" value="글쓰기">
</form>
<hr>
<h3>글 목록</h3>
<ol>
<%
   ArrayList<String> datas=(ArrayList)application.getAttribute("datas");
   if(datas==null){
      out.println("아직 내용이 없습니다!");
   }
   else{
      for(String v:datas){
         out.println("<LI>"+v+"</LI>");
      }
   }
%>
</ol>

</body>
</html>

 

 

수행결과

 

application 단위이기 때문에 서버를 종료할 때 까지 남아있으며,

다른 브라우저에서 다른 아이디로 접속해 글을 남겨도 적용이 같이 된다.