Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- session.getAttribute
- 파일호출
- 향상된 for문
- Import
- session.removeAttribute
- session.setAttribute
- scanner
- opener
- 미래직장
- javaBeans
- 자바빈즈
- 팝업창
- 빈즈
- Alert
- 페이지 이동
- 페이지이동
- 버리자
- target
- 파일 호출
- BEANS
- 데이터사이언스
- \
- 동기 부여
- static
- 영감
- 로그인화면
- "
- 동기부여
- ;
- iframe
Archives
- Today
- Total
갈림길 이정표
[JSP] Redirect / Forward 방식 본문


[jsp1call.html]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
Redirect / Forward test
<br>
<form action="irum.go" method="post">
자료 입력: <input type="text" name="data" value="tom">
<input type="submit">
</form>
</body>
</html>
[Jsp1Servlet.java]
package kr.co.pack;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/irum.go")
public class Jsp1Servlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// get,post 둘다 받겠다는 뜻
request.setCharacterEncoding("utf-8");
String data = request.getParameter("data");
/*넘어온 자료로 이런 저런 작업을 하다가....*/
//현재 Servlet 파일의 자료를 특정 jsp 파일에게 자바의 자료를 전달하는 방법... (Servlet이 jsp를 부를때)
//파일 호출 방법1 : *redirect 방식* ← client를 통해 서버의 파일을 호출 (default방식)
/*response.sendRedirect("jsp1called.jsp?data=" + data);*/ //넘길 자료가 더 있으면 & 사용
//이렇게 넘기면 단점: String 이외 객체(ex. ArrayList, Collection, car객체, animal객체 등)를 넘길 수 없다.
//해결점: 서버에서 서버를 호출하도록 하면 됨 (Forward 방식)
//파일 호출 방법2: *Forward 방식* ← 서버에서 직접 서버의 파일을 호출 (마치 html이 jsp를 부르는 것 처럼)
request.setAttribute("test", data);//현재 파일에서 유효한 객체(컨테이너 기능) | setAttribute: test라는 key의 속성을 data value로 받기
/*session, application, request 모두 key-value 형식으로 argument받음[컨테이너 기능]*/
/*※session은 각각의 client에서 사용가능한 모든 파일이 public | request는 private*/
/*
* RequestDispatcher dispatcher =
* request.getRequestDispatcher("jsp1called.jsp"); dispatcher.forward(request, response);
* //jsp파일은 service메소드를 Override 한것임
*/ //dispatcher.forward를 통해 request 값을 response 로 전달
//※ 클라이언트 통해서 전달되면 다사라짐
request.getRequestDispatcher("jsp1called.jsp").forward(request, response); //두 줄을 한줄로 통합시킴
}
}
[jsp1called.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1called</title>
</head>
<body>
서블릿에 의해 호출된 파일
<br>
<%
// redirect 방식
request.setCharacterEncoding("utf-8");
String data = request.getParameter("data");
//*out.println("자료는 " + data); /*http://localhost/web_pro4/jsp1called?data=tom*/
/* (지금은 String 객체 넘기는 거라 상관없지만 Colleciton 등 String 이외 객체면 호출 불가)*/
out.println("<br>");
// forward 방식
String data2 = (String)request.getAttribute("test"); //getAttribute: key를 부르는 것!이므로 data가 아닌 test!
out.println("자료는 " + data2); /* http://localhost/web_pro4/irum.go (주소가 다름!)*/
%>
</body>
</html>
'Programming Language > Servlet & JSP' 카테고리의 다른 글
[JSP] Session test (0) | 2020.08.26 |
---|---|
[JSP] Redirect / Forward test 2 (feat. WEB-INF) (0) | 2020.08.26 |
[JSP] 9개 내장객체 (0) | 2020.08.26 |
[JSP] 인클루드(Include) 지시어 (0) | 2020.08.26 |
[JSP] 페이지 지시어 / HTTP 코드 오류창 변경 (0) | 2020.08.25 |