wrkbrs

HttpSession, Servlet forward, request.setAttribute, session.setAttribute의 차이 본문

JSP

HttpSession, Servlet forward, request.setAttribute, session.setAttribute의 차이

zcarc 2018. 10. 27. 02:43

package servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ForwardSendRedirect extends HttpServlet
{
 private ServletContext sc;
 
 public void init(ServletConfig config) throws ServletException 
 {
  super.init(config);
  sc = getServletContext();
 }

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
 {
  executeAction(request, response);
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
 {
  executeAction(request, response);
 }

 public void executeAction(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
 {
  String func = request.getParameter("func");

  if(func.equals("001"))
  {
   HttpSession session = request.getSession(true);
   session.setAttribute("korea", "우리나라 좋은나라");

   request.setAttribute("korea", "잘 살아보세~~!");

   response.sendRedirect("/Result.jsp");

   /*request.setAttribute 의 경우는 sendredirect시 request가 초기화 되서 값이 없어진다.
senddirect시에는 request.setAttribte 사용 x
forward시에는 request.setAttribute 사용 0 */

  }
  else if(func.equals("002"))
  {
   HttpSession session = request.getSession(true);
   session.setAttribute("korea", "우리나라 좋은나라");

   request.setAttribute("korea", "잘 살아보세~~!");

   (sc.getRequestDispatcher("/Result.jsp")).forward(request, response);
   //(request.getRequestDispatcher("/Result.jsp")).forward(request, response);  //이렇게 해도 된다.

  }
 }
} 


<%@ page session="false" %>

 HttpSession session = request.getSession(false);

//session null을 사용하기 위해서 HttpSession으로 값을 가져온다.
 if(session!=null)
 {          
  }