관리 메뉴

거니의 velog

231031_JSP 개론 4 본문

대덕인재개발원_웹기반 애플리케이션

231031_JSP 개론 4

Unlimited00 2023. 10. 31. 09:05

* 자바빈즈 = VO
   MemberVO
   BoardVO ...
* 이 안에 있는 클래스는 필수 3대 요소.
(1) 멤버 변수
(2) 생성자
     - default : 생략 가능
     - 매개변수를 포함하는 커스텀 생성자를 생성할 때는 기본 생성자도 만들어야 한다.
(3) 메서드(게터/세터)


* 이 VO는 대표적으로 2가지 역할을 한다.
(1) 데이터를 저장하는 공간
(2) 저장한 데이터를 request와 response의 두 내장 객체를 이용해 데이터를 주고 받는 역할로 활용한다.


* 페이지 이동 방식
(1) 리다이렉트 : response => 게시글 등록, 회원 가입 등
                           insert.do. 데이터가 여러 개 담겨서 서버 쪽으로 넘어감. 넘겨받은 데이터를 이용해 DB에 등록.
                           등록 완료 후 페이지 이동 방식을 선택할 때, 게시판 목록 페이지로 가야 한다.
                           게시글 등록은 한 번만 실행될 수 있는 요청. 이전 request를 필요로 하지 않는다.
                           게시판 목록 화면과 주소를 따로 출력해야 한다.
                           페이지 새로고침을 했는데 insert.do로 그대로 남아 있으면 안 된다. 무한 insert가 될 우려가 있음.
(2) 포워드 : request => 서버 내에 있는 리소스를 찾아서 결과물을 리턴.
                   req는 1개. 요청 시 req는 포워드를 만나서 그대로 원래 화면으로 나감. res도 1개
                   회원 가입 정보에서 회원정보 200-300를 입력했다가 리다이렉트도 사라지게 하면 안되는 원리.


  • PRG 패턴이란?
웹 요청을 처리하는 프로세스를 설명해 드리겠습니다. 일반적으로 HTTP 메서드인 POST, Redirect, GET을 사용합니다.

1. POST (전송)
   - 클라이언트는 웹 서버에 데이터를 보내기 위해 POST 요청을 사용합니다.
   - 클라이언트가 어떤 데이터를 서버에 보내려면, POST 요청을 통해 데이터를 서버에 전송합니다. 이 데이터는 주로 폼 데이터, 파일 업로드 등에 사용됩니다.

2. Redirect (리다이렉트)
   - 리다이렉트는 서버가 클라이언트에게 새로운 URL로 이동하라고 지시할 때 사용됩니다.
   - 서버는 클라이언트에게 HTTP 상태 코드 3xx (예: 301, 302)를 반환하여 리다이렉션을 알립니다.
   - 클라이언트는 새로운 URL로 이동하고 해당 리소스를 요청합니다.

3. GET (가져오기)
   - GET 요청은 클라이언트가 웹 서버로부터 정보를 가져오기 위해 사용됩니다.
   - 클라이언트가 GET 요청을 보내면, 서버는 요청한 리소스(웹 페이지, 이미지, 데이터 등)를 반환합니다.

요약하면, POST는 데이터를 서버에 전송하는 데 사용되고, Redirect는 클라이언트를 다른 URL로 이동시키는 데 사용되며, GET은 정보를 서버로부터 가져오는 데 사용됩니다. 이러한 메서드는 웹 응용 프로그램에서 데이터 교환과 페이지 이동을 관리하는 데 중요합니다.
POST, Redirect, GET을 사용하는 이러한 웹 요청 및 응답 프로세스는 주로 "POST-Redirect-GET (PRG) 패턴" 또는 "Post/Redirect/Get (PRG) 패턴"이라고 알려져 있습니다. 

이 패턴은 웹 응용 프로그램에서 사용자 경험을 개선하고 중복 데이터 제출 및 브라우저 새로 고침에 의한 중복 조작을 방지하는 데 도움이 됩니다. 간략하게 설명하면:

1. POST: 사용자가 양식을 제출하거나 데이터를 업로드하면 POST 요청을 사용하여 서버로 데이터를 전송합니다.

2. Redirect: 서버는 처리 후에 사용자를 다른 페이지로 리다이렉트합니다. 이것은 중복 제출을 방지하고 사용자를 안전한 상태로 보냅니다.

3. GET: 리다이렉트 후, 사용자는 GET 요청을 통해 새로운 페이지 또는 정보를 가져옵니다.

PRG 패턴은 웹 응용 프로그램에서 데이터를 안전하게 처리하고 사용자 경험을 향상시키는 데 도움이 되는 중요한 디자인 패턴 중 하나입니다.


(1) server to client : AcK (300대 Status)
(2) client to server : 요청(list.do, Method GET)
(3) server to client : 포워드 방식으로 페이지 구성 후 200 Status 상태 보냄 => list.do uri로 출력.
* 처음 request와 두 번째 request는 다를 수밖에 없는 이유


[저장 공간(scope)]
* 처음 가용한 request에 담긴 데이터는 리다이렉트를 만나면 담을 수 없고 사라짐. 리다이렉트는 세션이라는 영역에 데이터를 담아서 보내야 한다.
* URL 뒤에 쿼리 스트링을 구성하여 Key/Value의 형식으로 구성하면 Header에 설정되므로 데이터를 주고 받을 수 있게 되는 것.
* 리다이렉트는 포워드를 포함하고 있는 방식.


* 포워드 : 페이지만 요청할 때, 데이터를 가용하지 않는 상태. 목록 페이지, 상세 보기 페이지, 등록 페이지, 메인 페이지 등
* 리다이렉트 : 데이터를 가용했을 때. 등록, 삭제, 수정 그 외.
- 이외의 상황도 예외 처리를 고려해서 페이지 설계를 들어가야 한다.


04장 액션 태그 : 상품 목록 표시하기

	01. 자바빈즈
	
		JSP 페이지의 주요 기능 중 하나는 데이터를 보여주는 것이다. 하나의 JSP 페이지에 데이터를 보여주기 위한 자바 코드와 단순히 화면을
		출력하는 HTML 코드를 함께 작성하면 기능을 확장하거나 코드를 재사용하는데 어려움이 있다. 따라서 프로그램의 효율을 높이기 위해
		화면을 출력하는 부분과 데이터를 처리하는 로직 부분을 구분하여 작성하며, 로직 부분의 코드에 자바빈즈라는 클래스를 사용한다.
		
		자바빈즈는 동적 콘텐츠 개발을 위해 자바 코드를 사용하여 자바 클래스로 로직을 작성하는 방법이다.
		즉, JSP 페이지에서 화면을 표현하기 위한 계산식이나 자료의 처리를 담당하는 자바 코드를 따로 분리하여 작성하는 것이 자바빈즈이다.
		자바빈즈는 데이터 표현을 목적으로 하는 자바 클래스이므로 기존의 자바 클래스를 작성하는 방법과 동일하게 작성한다.
		
		- VO와 같은 데이터를 저장할 클래스 공간에 해당한다.
		- 추후 스프링에서 데이터를 바인딩할때 (데이터를 받아낼 때) VO, 즉 자바빈즈 클래스 객체 타입으로 데이터를 받아낼 수 있다.
		
	02. 페이지 이동방식
	
		1) forward(포워드)
		
			예를 들어 게시판 등록 페이지를 요청한다고 가정하자.
			요청 URL이 http://localhost/board/form.do 일 때, 서버로 넘어간 요청(request)에 해당하는 최종 목적지(servlet)
			가 있고 그 안에서 등록 폼에 해당하는 페이지를 요청하는 기능이 실행된다.
			요청 URL에 매핑되는 서버 내 리소스(/WEB-INF/views/board/form.jsp)는 보안 폴더에 해당하는 '/WEB-INF' 안에 있으므로
			서버 안에서 응답으로 나가야 할 페이지를 찾아서 결과물을 만들고 응답으로 브라우저 쪽으로 던져주는데, 이 과정에 페이지 이동방식인 포워드!
			
			포워드는 서버로 들어온 요청(request)과 요청에 의한 처리가 완료된 후 응답(response)으로 나가는 횟수가 각 1개씩 존재한다.
			만약에 서버로 들어올 때 데이터 1개 또는 2개 이상을 갖고 들어왔을 때 포워드는 새로운 요청이 만들어져 응답으로 나가는 형태가 아니므로
			같은 요청(request) 객체를 활용하여 데이터를 담아 응답으로 내보낼 수 있고 처음에 요청으로 들어온 데이터를 응답에서 또한 활용이 가능!
			
		2) redirect(리다이렉트)
		
			예를 들어 게시판 등록 기능을 요청한다고 가정하자.
			요청 URL이 http://localhost/board/insert.do일 때, 서버로 넘어간 요청(request)에 해당하는 최종 목적지(servlet)
			에 도착한다. 이 때, 등록 기능에 대한 데이터 처리 후 페이지 이동방식을 선택하여 응답으로 나가야 하는데, 응답으로 나갈 페이지가 데이터 처리
			후 목록 화면이라고 가정했을 때, 시스템이 알아서 브라우저로 300번대 Ack 신호로 "데이터 처리가 끝났고 목록 화면으로 넘어가려고 하는데
			진짜 목록 화면으로 넘어가면 됨?" 이라고 물어본다. 브라우저는 서버가 300번대로 준 신호에 "응! 나 목록 화면 가는거 맞고, 그러니까 
			내가 다시 목록 화면 요청 할거니까 목록 화면 응답으로 주삼" 이라고 하며 서버로 새로운 요청으로 http://localhost/board/list.do
			를 요청하여 목록 화면을 달라고 서버로 요청한다. 서버는 다시 들어온 새로운 요청(request)에 의해 목록 화면을 서버 안에서 찾아 결과의
			리소스를 만들어 응답으로 내보낸다. 이 때 최초 요청은 등록 기능을 가진 URL 이었지만 응답으로 나가는 건 목록을 요청할 때 사용하는 요청
			URL이 되고 응답 화면은 목록 화면이 나간다.
			
				*** 데이터 처리 후 포워딩을 하면?
				데이터 처리 후 리다이렉트 하지 않고 포워딩을 할 때 문제점은, 포워딩의 특징은 최초 요청 URL이 고정되고 선택된 응답 페이지가
				결과로 나가기 때문에 다시 새로 고침을 할 경우 최초의 요청했던 기능을 담고 있는 URI가 실행된다.
				그렇게 되면 반복적인 데이터 처리 요청이 서버로 날아가는 것이기 때문에 요청자가 끝내지 않는 한 무한반복으로 데이터 처리에 대한
				기능이 끝없이 요청될 수 있다. 그러므로 데이터 처리 후라면 페이지 이동방식은 포워딩이 아닌 리다이렉트 처리로 마무리한다!!!

[기본 객체 4가지 - scope]
(1) pageContext > request > session > application 순으로 범위가 커짐


[request01.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html class="no-js" lang="zxx">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge" />
    <title>쉽게 배우는 JSP 웹 프로그래밍</title>
    <meta name="description" content="" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <%@ include file="/pageModule/headPart.jsp" %>
</head>

<body>
    <%@ include file="/pageModule/header.jsp" %>

    <div class="breadcrumbs" style="padding-top:40px;">
        <div class="container">
            <div class="row align-items-center">
                <div class="col-lg-6 col-md-6 col-12">
                    <div class="breadcrumbs-content">
                        <h1 class="page-title">내장 객체</h1>
                    </div>
                </div>
                <div class="col-lg-6 col-md-6 col-12">
                    <ul class="breadcrumb-nav">
                        <li><a href="/">INDEX</a></li>
                        <li>CH05</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>

    <section class="about-us section">
        <div class="container">
            <div class="row align-items-center justify-content-center">
                <div class="col-lg-12 col-md-12 col-12">
                    <div class="content-left wow fadeInLeft" data-wow-delay=".3s">
						<form action="request01_process.jsp" method="post">
							<label for="id">아이디 : </label>
							<input type="text" name="id" id="id" />
							<br />
							<label for="pw">비밀번호 : </label>
							<input type="text" name="pw" id="pw" />
							<br />
							<button type="submit">전송</button>
						</form>		
                    </div>
                </div>
            </div>
        </div>
    </section>

    <%@ include file="/pageModule/footer.jsp" %>

    <%@ include file="/pageModule/footerPart.jsp" %>
</body>

</html>

[request01_process.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html class="no-js" lang="zxx">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge" />
    <title>쉽게 배우는 JSP 웹 프로그래밍</title>
    <meta name="description" content="" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <%@ include file="/pageModule/headPart.jsp" %>
</head>

<body>
    <%@ include file="/pageModule/header.jsp" %>

    <div class="breadcrumbs" style="padding-top:40px;">
        <div class="container">
            <div class="row align-items-center">
                <div class="col-lg-6 col-md-6 col-12">
                    <div class="breadcrumbs-content">
                        <h1 class="page-title">내장 객체</h1>
                    </div>
                </div>
                <div class="col-lg-6 col-md-6 col-12">
                    <ul class="breadcrumb-nav">
                        <li><a href="/">INDEX</a></li>
                        <li>CH05</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>

    <section class="about-us section">
        <div class="container">
            <div class="row align-items-center justify-content-center">
                <div class="col-lg-12 col-md-12 col-12">
                    <div class="content-left wow fadeInLeft" data-wow-delay=".3s">
						<% 
							// 폼에서 한글 입력을 정상적으로 처리할 때 필요함.
							// Spring 프레임워크에서는 web.xml에서 filter 태그로 처리하여 자동화할 예정
							// 폼 페이지에서 입력한 한글을 처리하도록 
							// request 내장 객체의 setCharacterEncoding() 메소드에
							// 문자 인코딩 유형을 utf-8로 작성함.
							request.setCharacterEncoding("utf-8");
							// 입력된 아이디와 비밀번호를 폼 태그로부터 전송받도록
							// request 내장 객체의 getParameter() 메소드를 작성함.
							String id = request.getParameter("id");
							String pw = request.getParameter("pw");
						%>
						<!-- 폼 태그로부터 전송받은 아이디와 비밀번호를 출력하도록 표현문 태그를 작성함. -->
						<p>아이디 : <%= id %></p>
						<p>비밀번호 : <%= pw %></p>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <%@ include file="/pageModule/footer.jsp" %>

    <%@ include file="/pageModule/footerPart.jsp" %>
</body>

</html>

- http://localhost/ch05/request01.jsp


- Header라는 정보란? 웹 자원 정보가 다 들어 있음. 유저 에이전트. 내가 어떤 기기, 웹 브라우저, 내가 사용하는 자원에 대한 값이 존재.
- Header라는 정보를 가용할 때? 주로 사용하는 사용자 층이 어떤 기기를 주로 사용하는지, 어떤 브라우저인지 데이터 셋을 구성하여 그래프로 도출 가능.

[request02.jsp]

<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html class="no-js" lang="zxx">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge" />
    <title>쉽게 배우는 JSP 웹 프로그래밍</title>
    <meta name="description" content="" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <%@ include file="/pageModule/headPart.jsp" %>
</head>

<body>
    <%@ include file="/pageModule/header.jsp" %>

    <div class="breadcrumbs" style="padding-top:40px;">
        <div class="container">
            <div class="row align-items-center">
                <div class="col-lg-6 col-md-6 col-12">
                    <div class="breadcrumbs-content">
                        <h1 class="page-title">내장 객체</h1>
                    </div>
                </div>
                <div class="col-lg-6 col-md-6 col-12">
                    <ul class="breadcrumb-nav">
                        <li><a href="/">INDEX</a></li>
                        <li>CH05</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>

    <section class="about-us section">
        <div class="container">
            <div class="row align-items-center justify-content-center">
                <div class="col-lg-12 col-md-12 col-12">
                    <div class="content-left wow fadeInLeft" data-wow-delay=".3s">
						<table class="table table-bordered">
							<% 
								// 모든 헤더 이름을 가져오도록 request 내장 객체의 getHeaderNames() 메소드를 작성하고
								// 이를 모두 저장하도록 Enumeration 객체 타입의 변수 en을 작성
								Enumeration en = request.getHeaderNames();
							
								// Enumeration 객체 타입의 변수 en의 hasMoreElements() 메소드를 통해
								// 저장된 헤더 이름이 있을 때까지 반복하도록 while 문을 작성
								while(en.hasMoreElements()) {
									// 현재 헤더 이름을 가져오도록 Enumeration 객체 타입의 변수 en의 nextElement() 메소드를 작성함.
									String headerName = (String) en.nextElement();
									// 설정된 헤더 이름의 값을 가져오도록 request 내장 객체의 getHeader() 메소드를 작성함.
									String headerValue = request.getHeader(headerName);
							%>
								<!-- 현재 헤더 이름과 값을 출력하도록 표현문 태그를 작성함. -->
								<tr>
									<td><%= headerName %></td>
									<td><%= headerValue %></td>
								</tr>
							<%
								}
							%>
						</table>	
                    </div>
                </div>
            </div>
        </div>
    </section>

    <%@ include file="/pageModule/footer.jsp" %>

    <%@ include file="/pageModule/footerPart.jsp" %>
</body>

</html>

- http://localhost/ch05/request02.jsp


[request03.jsp]

<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html class="no-js" lang="zxx">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge" />
    <title>쉽게 배우는 JSP 웹 프로그래밍</title>
    <meta name="description" content="" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <%@ include file="/pageModule/headPart.jsp" %>
</head>

<body>
    <%@ include file="/pageModule/header.jsp" %>

    <div class="breadcrumbs" style="padding-top:40px;">
        <div class="container">
            <div class="row align-items-center">
                <div class="col-lg-6 col-md-6 col-12">
                    <div class="breadcrumbs-content">
                        <h1 class="page-title">내장 객체</h1>
                    </div>
                </div>
                <div class="col-lg-6 col-md-6 col-12">
                    <ul class="breadcrumb-nav">
                        <li><a href="/">INDEX</a></li>
                        <li>CH05</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>

    <section class="about-us section">
        <div class="container">
            <div class="row align-items-center justify-content-center">
                <div class="col-lg-12 col-md-12 col-12">
                    <div class="content-left wow fadeInLeft" data-wow-delay=".3s">
						<table class="table table-bordered">
							<tr>
								<th width="20%"></th>
								<th width="20%">값</th>
								<th width="60%">설명</th>
							</tr>
							<tr>
								<td>클라이언트 IP</td>
								<td><%= request.getRemoteAddr() %></td>
								<td>웹 브라우저의 IP 주소를 가져옵니다.</td>
							</tr>
							<tr>
								<td>요청 정보 길이</td>
								<td><%= request.getContentLength() %></td>
								<td>웹 브라우저의 요청 파라미터 길이를 가져옵니다.</td>
							</tr>
							<tr>
								<td>요청 정보 인코딩</td>
								<td><%= request.getCharacterEncoding() %></td>
								<td>웹 브라우저의 문자 인코딩을 가져옵니다.</td>
							</tr>
							<tr>
								<td>요청 정보 콘텐츠 유형</td>
								<td><%= request.getContentType() %></td>
								<td>웹 브라우저의 콘텐츠 유형을 가져옵니다.</td>
							</tr>
							<tr>
								<td>요청 정보 프로토콜</td>
								<td><%= request.getProtocol() %></td>
								<td>웹 브라우저의 요청 프로토콜을 가져옵니다.</td>
							</tr>
							<tr>
								<td>요청 정보 전송방식</td>
								<td><%= request.getMethod() %></td>
								<td>웹 브라우저의 HTTP 요청 메소드(GET, POST)를 가져옵니다.</td>
							</tr>
							<tr>
								<td>요청 URI</td>
								<td><%= request.getRequestURI() %></td>
								<td>웹 브라우저가 요청한 URI 경로를 가져옵니다.</td>
							</tr>
							<tr>
								<td>컨텍스트 경로</td>
								<td><%= request.getContextPath() %></td>
								<td>현재 JSP 페이지의 웹 애플리케이션 컨텍스트 경로를 가져옵니다.</td>
							</tr>
							<tr>
								<td>서버 이름</td>
								<td><%= request.getServerName() %></td>
								<td>서버 이름을 가져옵니다.</td>
							</tr>
							<tr>
								<td>서버 포트</td>
								<td><%= request.getServerPort() %></td>
								<td>실행중인 서버 포트 번호를 가져옵니다.</td>
							</tr>
							<tr>
								<td>쿼리문(Query String)</td>
								<td><%= request.getQueryString() %></td>
								<td>웹 브라우저의 전체 요청 파라미터 문자열[물음표(?) 다음 URL에 할당된 문자열]을 가져옵니다.</td>
							</tr>
						</table>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <%@ include file="/pageModule/footer.jsp" %>

    <%@ include file="/pageModule/footerPart.jsp" %>
</body>

</html>

- http://localhost/ch05/request03.jsp


[response01.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html class="no-js" lang="zxx">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge" />
    <title>쉽게 배우는 JSP 웹 프로그래밍</title>
    <meta name="description" content="" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <%@ include file="/pageModule/headPart.jsp" %>
</head>

<body>
    <%@ include file="/pageModule/header.jsp" %>

    <div class="breadcrumbs" style="padding-top:40px;">
        <div class="container">
            <div class="row align-items-center">
                <div class="col-lg-6 col-md-6 col-12">
                    <div class="breadcrumbs-content">
                        <h1 class="page-title">내장 객체</h1>
                    </div>
                </div>
                <div class="col-lg-6 col-md-6 col-12">
                    <ul class="breadcrumb-nav">
                        <li><a href="/">INDEX</a></li>
                        <li>CH05</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>

    <section class="about-us section">
        <div class="container">
            <div class="row align-items-center justify-content-center">
                <div class="col-lg-12 col-md-12 col-12">
                    <div class="content-left wow fadeInLeft" data-wow-delay=".3s">
						<form action="response01_process.jsp" method="post">
							<label for="id">아이디 : </label>
							<input type="text" name="id" id="id" />
							<br />
							<label for="pw">비밀번호 : </label>
							<input type="text" name="pw" id="pw" />
							<br />
							<button type="submit">전송</button>
						</form>		
                    </div>
                </div>
            </div>
        </div>
    </section>

    <%@ include file="/pageModule/footer.jsp" %>

    <%@ include file="/pageModule/footerPart.jsp" %>
</body>

</html>

[response01_process.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html class="no-js" lang="zxx">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge" />
    <title>쉽게 배우는 JSP 웹 프로그래밍</title>
    <meta name="description" content="" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <%@ include file="/pageModule/headPart.jsp" %>
</head>

<body>
    <%@ include file="/pageModule/header.jsp" %>

    <div class="breadcrumbs" style="padding-top:40px;">
        <div class="container">
            <div class="row align-items-center">
                <div class="col-lg-6 col-md-6 col-12">
                    <div class="breadcrumbs-content">
                        <h1 class="page-title">내장 객체</h1>
                    </div>
                </div>
                <div class="col-lg-6 col-md-6 col-12">
                    <ul class="breadcrumb-nav">
                        <li><a href="/">INDEX</a></li>
                        <li>CH05</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>

    <section class="about-us section">
        <div class="container">
            <div class="row align-items-center justify-content-center">
                <div class="col-lg-12 col-md-12 col-12">
                    <div class="content-left wow fadeInLeft" data-wow-delay=".3s">
						<% 
							// 폼 페이지에서 입력한 한글을 처리하도록 request 내장 객체의 setCharacterEncoding() 메소드에
							// 문자 인코딩 유형을 utf-8 로 작성
							request.setCharacterEncoding("utf-8");
							// 입력된 아이디와 비밀번호를 폼 태그로부터 전송받도록
							// request 내장 객체의 getParameter() 메소드를 작성.
							String id = request.getParameter("id");
							String pw = request.getParameter("pw");
							
							// 폼 태그로부터 전송받은 아이디와 비밀번호가 일치하면 response01_success.jsp 페이지로 이동
							if(id.equals("admin") && pw.equals("1234")) {
								response.sendRedirect("response01_success.jsp");
							}else { // 일치하지 않으면 response01_failed.jsp 페이지로 이동
								response.sendRedirect("response01_failed.jsp");
							}
						%>	
                    </div>
                </div>
            </div>
        </div>
    </section>

    <%@ include file="/pageModule/footer.jsp" %>

    <%@ include file="/pageModule/footerPart.jsp" %>
</body>

</html>

[response01_success.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html class="no-js" lang="zxx">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge" />
    <title>쉽게 배우는 JSP 웹 프로그래밍</title>
    <meta name="description" content="" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <%@ include file="/pageModule/headPart.jsp" %>
</head>

<body>
    <%@ include file="/pageModule/header.jsp" %>

    <div class="breadcrumbs" style="padding-top:40px;">
        <div class="container">
            <div class="row align-items-center">
                <div class="col-lg-6 col-md-6 col-12">
                    <div class="breadcrumbs-content">
                        <h1 class="page-title">내장 객체</h1>
                    </div>
                </div>
                <div class="col-lg-6 col-md-6 col-12">
                    <ul class="breadcrumb-nav">
                        <li><a href="/">INDEX</a></li>
                        <li>CH05</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>

    <section class="about-us section">
        <div class="container">
            <div class="row align-items-center justify-content-center">
                <div class="col-lg-12 col-md-12 col-12">
                    <div class="content-left wow fadeInLeft" data-wow-delay=".3s">
						<h5>로그인을 성공했습니다!!!</h5>	
                    </div>
                </div>
            </div>
        </div>
    </section>

    <%@ include file="/pageModule/footer.jsp" %>

    <%@ include file="/pageModule/footerPart.jsp" %>
</body>

</html>

[response01_failed.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html class="no-js" lang="zxx">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge" />
    <title>쉽게 배우는 JSP 웹 프로그래밍</title>
    <meta name="description" content="" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <%@ include file="/pageModule/headPart.jsp" %>
</head>

<body>
    <%@ include file="/pageModule/header.jsp" %>

    <div class="breadcrumbs" style="padding-top:40px;">
        <div class="container">
            <div class="row align-items-center">
                <div class="col-lg-6 col-md-6 col-12">
                    <div class="breadcrumbs-content">
                        <h1 class="page-title">내장 객체</h1>
                    </div>
                </div>
                <div class="col-lg-6 col-md-6 col-12">
                    <ul class="breadcrumb-nav">
                        <li><a href="/">INDEX</a></li>
                        <li>CH05</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>

    <section class="about-us section">
        <div class="container">
            <div class="row align-items-center justify-content-center">
                <div class="col-lg-12 col-md-12 col-12">
                    <div class="content-left wow fadeInLeft" data-wow-delay=".3s">
						<h5>로그인을 실패했습니다!!!</h5>
						<a href="response01.jsp" class="btn btn-primary">로그인 페이지로 이동</a>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <%@ include file="/pageModule/footer.jsp" %>

    <%@ include file="/pageModule/footerPart.jsp" %>
</body>

</html>

- http://localhost/ch05/response01.jsp



[response02.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html class="no-js" lang="zxx">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge" />
    <title>쉽게 배우는 JSP 웹 프로그래밍</title>
    <meta name="description" content="" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <%@ include file="/pageModule/headPart.jsp" %>
</head>

<body>
    <%@ include file="/pageModule/header.jsp" %>

    <div class="breadcrumbs" style="padding-top:40px;">
        <div class="container">
            <div class="row align-items-center">
                <div class="col-lg-6 col-md-6 col-12">
                    <div class="breadcrumbs-content">
                        <h1 class="page-title">내장 객체</h1>
                    </div>
                </div>
                <div class="col-lg-6 col-md-6 col-12">
                    <ul class="breadcrumb-nav">
                        <li><a href="/">INDEX</a></li>
                        <li>CH05</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>

    <section class="about-us section">
        <div class="container">
            <div class="row align-items-center justify-content-center">
                <div class="col-lg-12 col-md-12 col-12">
                    <div class="content-left wow fadeInLeft" data-wow-delay=".3s">
						<% 
							// header 정보 중, Refresh 헤더를 이용해 5초마다 페이지를 새로고침한다.
							response.setIntHeader("Refresh", 5);
						%>
						<%= new java.util.Date() %>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <%@ include file="/pageModule/footer.jsp" %>

    <%@ include file="/pageModule/footerPart.jsp" %>
</body>

</html>

- http://localhost/ch05/response02.jsp


[response03.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html class="no-js" lang="zxx">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge" />
    <title>쉽게 배우는 JSP 웹 프로그래밍</title>
    <meta name="description" content="" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <%@ include file="/pageModule/headPart.jsp" %>
</head>

<body>
    <%@ include file="/pageModule/header.jsp" %>

    <div class="breadcrumbs" style="padding-top:40px;">
        <div class="container">
            <div class="row align-items-center">
                <div class="col-lg-6 col-md-6 col-12">
                    <div class="breadcrumbs-content">
                        <h1 class="page-title">내장 객체</h1>
                    </div>
                </div>
                <div class="col-lg-6 col-md-6 col-12">
                    <ul class="breadcrumb-nav">
                        <li><a href="/">INDEX</a></li>
                        <li>CH05</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>

    <section class="about-us section">
        <div class="container">
            <div class="row align-items-center justify-content-center">
                <div class="col-lg-12 col-md-12 col-12">
                    <div class="content-left wow fadeInLeft" data-wow-delay=".3s">
						<% 
							response.sendError(404, "요청 페이지를 찾아보니까 진짜 없더라?????");
						%>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <%@ include file="/pageModule/footer.jsp" %>

    <%@ include file="/pageModule/footerPart.jsp" %>
</body>

</html>

- http://localhost/ch05/response03.jsp


[response03.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html class="no-js" lang="zxx">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge" />
    <title>쉽게 배우는 JSP 웹 프로그래밍</title>
    <meta name="description" content="" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <%@ include file="/pageModule/headPart.jsp" %>
</head>

<body>
    <%@ include file="/pageModule/header.jsp" %>

    <div class="breadcrumbs" style="padding-top:40px;">
        <div class="container">
            <div class="row align-items-center">
                <div class="col-lg-6 col-md-6 col-12">
                    <div class="breadcrumbs-content">
                        <h1 class="page-title">내장 객체</h1>
                    </div>
                </div>
                <div class="col-lg-6 col-md-6 col-12">
                    <ul class="breadcrumb-nav">
                        <li><a href="/">INDEX</a></li>
                        <li>CH05</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>

    <section class="about-us section">
        <div class="container">
            <div class="row align-items-center justify-content-center">
                <div class="col-lg-12 col-md-12 col-12">
                    <div class="content-left wow fadeInLeft" data-wow-delay=".3s">
						<% 
							response.setCharacterEncoding("utf-8");
							response.setContentType("text/html; charset=utf-8");
						%>
							<p>문자 인코딩 : <%= response.getCharacterEncoding() %></p>
							<p>콘텐츠 유형 : <%= response.getContentType() %></p>
						<% 
							// 웹 브라우저에 응답할 오류로 404코드 및 오류 메시지를 출력하도록
							// response 내장 객체의 sendError() 메소드를 작성
							//response.sendError(404, "요청 페이지를 찾아보니까 진짜 없더라?????");
						%>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <%@ include file="/pageModule/footer.jsp" %>

    <%@ include file="/pageModule/footerPart.jsp" %>
</body>

</html>

 

'대덕인재개발원_웹기반 애플리케이션' 카테고리의 다른 글

231101_JSP 개론 5  (0) 2023.11.01
231031_JSP 과제 정리  (0) 2023.10.31
231030_JSP 과제 2  (0) 2023.10.30
231030_JSP 개론 3  (0) 2023.10.30
231027_JSP 과제 1  (0) 2023.10.27