Daily coding
JSP : 대표적인 내장객체 - request, response, session 본문
내장객체
: 동적 할당하지 않고 바로 사용할수 있는 Object
- request : 가장 많이 사용, getParameter, setAttribute, getAttribute 등 접근 가능 
- response : sendRedirect,  
- out 
- session .. 등
1. response
: getParameter - 무조건 String값만 받음 
<%
	// 이전 페이지로부터 데이터 받아오기
    String name = request.getParameter("name"); 	
    System.out.println("name = " + name );	// 출력
    String age = request.getParameter("age");
    System.out.println("age = " + age );	//출력
    // 데이터가 여러개 넘어올 때
    String hobby[] = request.getParameterValues("hobby");
    if( hobby != null && hobby.length > 0) {
        for(int i=0; i<hobby.length; i++){
            System.out.println("hobby = " + hobby[i]);
        }
    }
    
    
// 넘어올 때의 방식 : <input type="text">	: html
//			    <a href=''> : html
//				<form action=''> : html
//				location.href	: javascript
//			submit() : jquery
%>
<%
 
	// sendRedirect : 특정 파일 / url 등으로 이동
	// 데이터 가지고 이동할 수 있다.
	response.sendRedirect("NewFile.jsp");
	
	
	// 한글일때는 인코딩 방식 설정하기
	request.setCharacterEncoding("utf-8");
	
    // URLEncoder 까지 해주어야 정상적으로 한글 인코딩이 적용됨
	String name = "홍길동";
	name = URLEncoder.encode(name);
	
	
	response.sendRedirect("NewFile.jsp?name="+name);
    
%>
: 페이지 이동시 사용(단순이동)
- sendRedirect -> HttpServletResponse 소속
- 데이터를 가지고 이동할 수 있으나, 한글은 인코딩 방식을 설정해주어야 한다. ( 보내는 페이지에서 설정 )
ex > request.setCharacterEncoding("utf-8"); 
       // URLEncoder 까지 해주어야 정상적으로 한글 인코딩이 적용됨 
       String name = "홍길동"; 
       name = URLEncoder.encode(name);
response.sendRedirect("NewFile.jsp?name="+name);
2) forward 방식 : pageContext
<%
	// forward 방식
    String name = "일지매";
    request.setAttribute("name", name);
    // pageContext (내장객체) : forward사용할 때의 내장객체 
    // 자바에서는 Dispatcher로 접근했었음
    pageContext.forward("NewFile.jsp"); // 짐 보내기
%>
: Servlet에서는 HttpDispatcher의 객체를 이용해 forward를 사용했으나
jsp 에서는 내장객체 인 pageContext를 이용한다.
- request의 setAttribute를 통해 보낼 데이터를 넣는다. (servlet과 동일)
- pageContext.forward를 통해 이동할 링크를 입력한다.
- 보내는 데이터는 int나 String 등의 변수 하나도 가능하지만
class 형식으로 된 Object도 보낼 수 있다.
** 데이터를 forward로 보낼 때 모두 Object타입으로 보내기 때문에
받을 때는 형변환하여 사용해야 한다.
<%
	// 여기는 데이터를 받는 곳의 코드
	Object obj = request.getAttribute("human");
	Human human = (Human)obj;
%>
3. session
<%
      // session으로 짐 싸고 sendRequest로 데이터 보내기 
      int num = 2;
      String name = "정수동";
      Human human = new Human(num, name);
      // request.setAttribute("hman", human);
      // response.sendRedirect("NewFile2.jsp");
      // 위의 코드는 불가능
      // sendRedirect로 데이터 여러개 보내려면 
      // Object형식이 아닌 링크주소에 데이터를 다 붙여줘야함
      // session을 사용하면 객체 데이터 가지고 이동할 수 있음
      session.setAttribute("hman", human);
      response.sendRedirect("NewFile2.jsp");
%>
: sendRequest는 일반적으로 Object데이터는 보낼 수 없으나
내장 객체인 session을 이용하면 데이터를 보낼 수 있다.
< session으로 받은 데이터 보기 >
<%
	// 데이터를 받은 곳의 코드
	Human human = (Human)session.getAttribute("hman");
	// session 삭제하기
    // session이 무거우면 느려질 수 있으므로 사용 후 지운다
	session.removeAttribute("hman");
%>
'Front-end > 비동기통신' 카테고리의 다른 글
| AJAX : $.ajax를 이용하여 비동기통신 설정하기 (1) (0) | 2020.01.28 | 
|---|---|
| JSP : jsp 작성해보기 - 변수, 조건문/반복문, jsp 구조와 class import (0) | 2020.01.20 | 
| JSP : JSP 개념과 기본 (0) | 2020.01.20 | 
| Servlet : Cookie와 Session (0) | 2020.01.18 | 
| Servlet : include 방식과 forward방식 (0) | 2020.01.18 |