국비 50-1

냐아암·2023년 6월 30일
0

국비

목록 보기
64/114

회원가입, 절대경로, 상대경로

signUpServlet.java

package edu.kh.jsp.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
// Tomcat(WAS == Servlet Container)에서 제공
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// Servlet : 웹 서비스(요청, 응답)를 위한 자바 클래스

// @WebServlet("요청주소") : Servlet 클래스 등록 + 요청 주소 매핑
@WebServlet("/signUp")
public class SignUpServlet extends HttpServlet {
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		// *** POST 방식의 한글 깨짐 문제 ***
		
		// - 데이터 전달 방식 차이점
		
		// GET : 주소(URL)를 통해서 데이터 전달
		//		 이때, 문자 인코딩은 제출된 HTML 파일의 문자 인코딩(charset)을 따름
		
		// POST : HTTP Body를 통해서 데이터 전달
		//		  이때, 문자 인코딩은 서버의 기본 문자 인코딩을 따름
		//		  우리 서버(Tomcat) -> ISO-8859-1이 기본 문자 인코딩
		
		// * 해결 방법 *
		// - POST 방식으로 전달 받은 데이터의 문자 인코딩을 변경
		
		req.setCharacterEncoding("UTF-8");
		// -> 문자 인코딩을 UTF-8로 변경
		// -> 한글이 깨지지 않음
		
		String memberId = req.getParameter("memberId");
		
		String message = memberId + "님의 가입을 환영합니다!";
		
		// 클라이언트와 연결된 출력 스트림을 이용해서 응답 화면을 출력
		/*
		 * PrintWriter out = resp.getWriter();
		 * 
		 * out.println("<!DOCTYPE html>"); out.println("<html>"); // ...
		 * out.println("</html>");
		 */
		
		// Servlet으로 응답 화면 만들기 번거로움
		// -> 응답 화면 만드는 부분의 표기법만 HTML로 변경하자 (== JSP)
		//    (눈에 보이는 코드는 HTML, 해석은 Java)
		
		// Servlet -> RequestDispatcher -> forward(req, resp) -> JSP 
		//				(요청 발송자)				(전송)
																
		RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/signUpResult.jsp");
										// JSP 경로 작성 시 webapp 폴더를 기준으로 작성
		
		// HttpServletRequest 객체에 message 변수 값 추가
		req.setAttribute("msg", message); // forward 전에 작성하기!!!
		
		dispatcher.forward(req, resp);
		
		
	}

}

signUpResult.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	// 추가된 값
	String m = (String)request.getAttribute("msg");

	// 전달받은 값(파라미터)
	String memberId = request.getParameter("memberId");	
	String memberPw = request.getParameter("memberPw");	
	String memberName = request.getParameter("memberName");	
	String intro = request.getParameter("intro");	
%>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><%=memberName %>님 가입 결과</title>
</head>
<body>

	<ul>
		<li>아이디 : <%=memberId %></li>
		<li>비밀번호 : <%=memberPw %></li>
		<li>이름 : <%=memberName %></li>
		<li>자기소개 : <%=intro %></li>
	</ul>
	
	<h1><%=m %></h1>

</body>
</html>
profile
개발 일지

0개의 댓글