본문 바로가기
코드/JDBC

[TOMCAT] step01.controller

by B1RAC12 2022. 2. 8.

LoginValidate.java

package step01.controller;

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

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// http://localhost/step01_basic/playdata
@WebServlet("/playdata")
public class LoginValidate extends HttpServlet {

	public LoginValidate() {
		System.out.println("-------생성자는 한번만 생성-------");
	}

	// get 요청 방식만 처리하는 메소드
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("LoginValidate doGet()");
		process(request, response);
	}

	// post 요청 방식만 처리하는 메소드
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("LoginValidate doPost()");
		process(request, response);
	}

	// doGet doPost 공통 로직
	/*
	 * id /pw 값 획들 -> 검증 -> 한글 데이터 화면에 출력
	 * 고려사항
	 * 1. 입력 데이터 한글 인코딩 무시 - request
	 * 2. 출력시에는 한글 인코딩 처리 고려 - response
	 */
	
	protected void process2(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// client 데이터 획득
//		<input type="text" name="id" value="tester">
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");

//		 출력 인코딩 설정
		response.setContentType("text/html;charset=UTF-8");
//		2byte의 데이터를 브라우저에 출력
		PrintWriter out = response.getWriter();
		if (id != null && id.equals("tester")) {
			out.println("안녕안녕");
		} else {
			out.println("무효한 id임");
		}
	}
	
	// step02 - web page 이동 기술
	/*
	 * id / pw 뽑아서 검증 -> 조건에 맞는 niew 전담 servlet 지정
	 */
		protected void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
			String id = request.getParameter("id"); // tester
			String pw = request.getParameter("pw");
			
			if (id != null && id.equals("tester")) {
				System.out.println("tester 맞음");
//				forward 방식으로 success라는 url mapping된 servlet으로 web page 이동
				// playdata url로 요청시 web server는 해당 client만을 위한 request객체와 response객체 생성
				// doGet()doPost()호출하면서 parameter로 대입
				// success의 doGet()/doPost() 호출시 request객체와 response객체 새로 생성이 아닌 공유
				// success의 request.getParameter("id") 반환값은? tester
				
				// 요청 객체에 새롭게 새로운 데이터 추가 저장도 가능
				// 저장 구조 - 데이터 구분이 필수 따라서 key와 value 구조로 저장
				// id가 tester인 사람 이름 김이름 추가
				request.setAttribute("name", "김이름"); // request.getAttribute("name")
				
				//http://ip:port/project명/playdata -> http://ip:port/project명/success
				request.getRequestDispatcher("success").forward(request, response);
			} else {
//				redirect 방식으로 fail이라는 url mapping된 servlet으로 web page 이동
				request.setAttribute("name", "김이름"); //의미 없음 fail 실행시 새로운 요청 객체 생성 및 활용되니까
				//http://ip:port/step01_basic/fail 의미 및 실행
				//client에게 fail 정보 제공하면서 응답으로 마무리
				//client가 사용하는 브라우저가 url을 재구성해서 client가 인식 못하는 빠른 속도로 재요청
				// 각각의 servlet이 요청, 응답 수행 따라서 fail은 새로운 요청이기 때문에 요청객체, 응답객체 새로 생성
				response.sendRedirect("fail");
			}
		}

}

'코드 > JDBC' 카테고리의 다른 글

[TOMCAT] step01.view  (0) 2022.02.08
[TOMCAT] step01/index.html &nd login.html  (0) 2022.02.08