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 |