티스토리 뷰
1. forward
특정 서블릿에 대한 요청을 다른 서블릿이나 JSP로 넘겨준다. (파라미터를 넘길 수 있다.)
상대방에게 페이지 주소를 숨길 때 사용 할 수 있므며, redirect 보다 성능이 좋다.
URL은 바뀌지않으며, 내부에서만 접근이 가능하다.
ex)
RequestDispatcher rd = request.getRequestDispatcher("/result.jsp");
rd.forward(request, response);
2. redirect
다른 페이지로 넘어가도록 한다. (직접 파라미터를 넘길 수 없다.)
요청받게되면 url을 클라이언트에게 전달하고, 클라이언트가(web) 새로운 url을 요청하고 그에 따른 응답을 한다.
URL값이 넘어가기 때문에 길이에 제한이 있다.
즉, 성격이 다른 페이지 서블릿이 그 길을 알려주고 브라우저가 값을 받아오게 하는 것이다.
ex)
response.sendredirect("URL");
실습1 - forward
AdditionResult2t.java
프로젝트의 src 에 생성
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 |
package com.ktds.jmj;
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;
/**
* Servlet implementation class AdditionResult2
*/
public class AdditionResult2 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public AdditionResult2() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String f = request.getParameter("f");
String s = request.getParameter("s");
int firstNumber = Integer.parseInt(f);
int secondNumber = Integer.parseInt(s);
int additionResult = firstNumber + secondNumber;
RequestDispatcher rd = request.getRequestDispatcher("/result.jsp");
request.setAttribute("f", firstNumber);
request.setAttribute("s", secondNumber);
request.setAttribute("addResult", additionResult);
rd.forward(request, response);
}
}
|
cs |
calc4.jsp
프로젝트의 WebContent에 생성
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 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>심플 계산기</title>
</head>
<body>
<!--
화면에서 사용자로부터 정보를 입력받아, 다른 페이지로 보내줄 수 있다.
사용자로부터 정보를 입력받기 위해서는 <form>이라는 태그가 필요하다.
<form>태그 안에는 사용자가 입력할 수 있는 "입력폼"을 만들어야한다.
일반적으로 많이 사용되는 것이 <input /> <textarea></textarea>가 있다.
-->
<form method="post" action = "/AC_HelloServlet/addition2"> <!--method에 아무것도 안적으면 get/ 무조건post로 -->
<!-- AdditionServlet 로 확장자를 가린다. 확장자를 숨김으로써 보안이 더 강화된다. -->
<input type="Text" name="f" placeholder="첫 번째 숫자를 입력하세요." />
<br />
<input type="Text" name="s" placeholder="두 번째 숫자를 입력하세요." />
<br />
<input type="submit" value="더하기!" />
</form>
</body>
</html> |
cs |
result.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
Result 페이지 입니다. <br/>
"${}"는 EL 문법입니다. <br/>
${ f } + ${ s } 의 결과는 ${ addResult } ( ${ f + s } )입니다.
</body>
</html> |
cs |
실습2 - redirect
AdditionResult3.java
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 |
package com.ktds.jmj;
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;
/**
* Servlet implementation class AdditionResult2
*/
public class AdditionResult3 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public AdditionResult3() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String f = request.getParameter("f");
String s = request.getParameter("s");
int firstNumber = Integer.parseInt(f);
int secondNumber = Integer.parseInt(s);
int additionResult = firstNumber + secondNumber;
response.sendRedirect("/AC_HelloServlet/result.jsp);
}
}
|
cs |
calc4.jsp
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 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>심플 계산기</title>
</head>
<body>
<!--
화면에서 사용자로부터 정보를 입력받아, 다른 페이지로 보내줄 수 있다.
사용자로부터 정보를 입력받기 위해서는 <form>이라는 태그가 필요하다.
<form>태그 안에는 사용자가 입력할 수 있는 "입력폼"을 만들어야한다.
일반적으로 많이 사용되는 것이 <input /> <textarea></textarea>가 있다.
-->
<form method="post" action = "/AC_HelloServlet/addition3"> <!--method에 아무것도 안적으면 get/ 무조건post로 -->
<!-- AdditionServlet 로 확장자를 가린다. 확장자를 숨김으로써 보안이 더 강화된다. -->
<input type="Text" name="f" placeholder="첫 번째 숫자를 입력하세요." />
<br />
<input type="Text" name="s" placeholder="두 번째 숫자를 입력하세요." />
<br />
<input type="submit" value="더하기!" />
</form>
</body>
</html> |
cs |
result.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
Result 페이지 입니다. <br/>
"${}"는 EL 문법입니다. <br/>
${ f } + ${ s } 의 결과는 ${ addResult } ( ${ f + s } )입니다.
</body>
</html> |
cs |
실습3 - forward + redirect
AdditionResult3.java
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 |
package com.ktds.jmj;
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;
/**
* Servlet implementation class AdditionResult2
*/
public class AdditionResult3 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public AdditionResult3() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String f = request.getParameter("f");
String s = request.getParameter("s");
response.sendRedirect("/AC_HelloServlet/list?f="+ f + "&s=" + s); // /list는 web.xml의 url pattern
//response.sendRedirect("/AC_HelloServlet/result.jsp");
}
}
|
cs |
AdditionResult4.java
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 |
package com.ktds.jmj;
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;
/**
* Servlet implementation class AdditionResult2
*/
public class AdditionResult4 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public AdditionResult4() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String f = request.getParameter("f");
String s = request.getParameter("s");
int firstNumber = Integer.parseInt(f);
int secondNumber = Integer.parseInt(s);
int additionResult = firstNumber + secondNumber;
RequestDispatcher rd = request.getRequestDispatcher("/list.jsp");
request.setAttribute("f", firstNumber);
request.setAttribute("s", secondNumber);
request.setAttribute("addResult", additionResult);
rd.forward(request, response);
}
}
|
cs |
calc4.jsp
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 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>심플 계산기</title>
</head>
<body>
<!--
화면에서 사용자로부터 정보를 입력받아, 다른 페이지로 보내줄 수 있다.
사용자로부터 정보를 입력받기 위해서는 <form>이라는 태그가 필요하다.
<form>태그 안에는 사용자가 입력할 수 있는 "입력폼"을 만들어야한다.
일반적으로 많이 사용되는 것이 <input /> <textarea></textarea>가 있다.
-->
<form method="post" action = "/AC_HelloServlet/addition3"> <!--method에 아무것도 안적으면 get/ 무조건post로 -->
<!-- AdditionServlet 로 확장자를 가린다. 확장자를 숨김으로써 보안이 더 강화된다. -->
<input type="Text" name="f" placeholder="첫 번째 숫자를 입력하세요." />
<br />
<input type="Text" name="s" placeholder="두 번째 숫자를 입력하세요." />
<br />
<input type="submit" value="더하기!" />
</form>
</body>
</html> |
cs |
list.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
list 페이지 입니다. <br/>
"${}"는 EL 문법입니다. <br/>
${ f } + ${ s } 의 결과는 ${ addResult } ( ${ f + s } )입니다.
</body>
</html> |
cs |
공통 - web.xml
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 |
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>AC_HelloServlet</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>AdditionServlet</servlet-name>
<servlet-class>com.ktds.jmj.AdditionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AdditionServlet</servlet-name>
<url-pattern>/addition</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>AdditionResult2</servlet-name>
<servlet-class>com.ktds.jmj.AdditionResult2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AdditionResult2</servlet-name>
<url-pattern>/addition2</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>AdditionResult3</servlet-name>
<servlet-class>com.ktds.jmj.AdditionResult3</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AdditionResult3</servlet-name>
<url-pattern>/addition3</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>AdditionResult4</servlet-name>
<servlet-class>com.ktds.jmj.AdditionResult4</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AdditionResult4</servlet-name>
<url-pattern>/list</url-pattern>
</servlet-mapping>
</web-app> |
cs |
'BackEnd > JSP' 카테고리의 다른 글
[JSP] JSTL, taglib (0) | 2016.02.05 |
---|---|
[JSP] JSTL 설치 (0) | 2016.02.05 |
[JSP] list를 이용해서 table 만들기 , import (0) | 2016.02.02 |
[JSP] table, input, javascript를 이용한 계산기만들기 (2) | 2016.02.02 |
[JSP] 기본적인 JSP 사용법 (3) | 2016.02.01 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- restfb
- order by
- DP
- controller
- table
- sort
- AlertDialog.Builder
- 자바
- algorithm
- 안드로이드 스튜디오
- Baekjoon Online Judege
- jsp
- indexOf
- INSERT
- list
- DFS
- servlet
- BFS
- onPostExecute
- Spring
- java
- mybatis
- REDIRECT
- onBackPressed
- maven
- 이클립스
- boj
- 예외처리
- 안드로이드 비콘
- RequestMapping
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함