Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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
more
Archives
Today
Total
관리 메뉴

개발 일기

Servlet(서블릿) POST방식으로 데이터 전달 받아 로그인 연습! 본문

Servlet & JSP

Servlet(서블릿) POST방식으로 데이터 전달 받아 로그인 연습!

개발 일기 2021. 8. 6. 00:04

안녕하세요!

 

어제 Form의 'GET'방식을 통한 로그인 관련 서블릿을 작성해보았는데요. (https://soonggi.tistory.com/61)

이번에는 Form의 'POST'방식으로 코딩하여 로그인 서블릿을 만들어 보겠습니다~

 

GET과 POST의 차이는 너무너무 잘 정리된 글이 있어 참고해주세요!!(https://mangkyu.tistory.com/17)

 

 

 

 

Servlet 코딩 연습!! (form을 활용하여 post방식으로 login해보기)


1. HTML의 Form 태그를 활용하여 ID와 PW를 입력받을 화면을 post 방식으로 생성

<!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>
<h1>로그인[POST]</h1>
<hr/>

<form action="post_login.do" method="post">
	ID:<input type="text" name="id"><br/>
	PW:<input type="password" name="pass"><br/><br/>
	
	<input type="submit" value="로그인">
	<input type="reset" value="취소">
</form>
</body>
</html>

 - form태그의 method="post"로 설정

 - POST방식데이타전송
     - form 에입력된데이타를 query string으로만든다.[id=guard&pass=1111]
     - 요청라인,헤더,바디전송시 query string(form data)을 전송한다.

 

 

-- 결과 브라우저 화면

겉에서 볼 땐 get 방식과 post 방식의 차이가 없다.

 

2. ID와 PW를 입력받고 유효성 검사를 진행 할 Servlet 클래스 코딩

package com.itwill.servlet;

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;

/**
 * Servlet implementation class GetLoginServlet
 */
@WebServlet("/post_login.do")
public class PostLoginServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		out.println("<h1>잘못된 요청 방법입니다.</h>");
		out.println("<a href='05-02.login_post.html'>다시로그인</a>");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		String id = request.getParameter("id");
		String pass = request.getParameter("pass");
		if (id == null || pass == null || id.equals("") || pass.equals("")) {
			out.println("<h1>아이디, 패스워드를 입력하세요[POST]</h1><hr>");
			out.println("<a href ='05-02.login_post.html'>로그인폼</a>");
			return;
		}
		
		boolean isMember1 = id.equals("xxx") && pass.equals("1111");
		boolean isMember2 = id.equals("yyy") && pass.equals("2222");
		
		out.println("<h1>POST로그인결과</h1><hr>");
		if (isMember1 || isMember2) {
			// 로그인 성공
			out.println("<h3>" + id + "님 로그인 성공</h3><hr>");
			out.println("<a href='index.html'>메인으로</a>");
		} else {
			// 로그인 실패
			out.println("<h3>" + id + "님 로그인 실패</h3>");
			out.println("<a href='05-02.login_post.html'>다시로그인</a>");
		}

	}

}

 - doGet 메소드를 재정의하여 get방식으로 요청이 들어오면 잘못된 요청 문구 리턴

 - doPost 메소드를 통해 post방식 요청 응답

 

 

*ID, PW 입력 후 로그인 성공 출력 화면

get 방식과 달리 url이 따라오지 않는다.

 

*브라우저 URL에 GET방식 form으로 값을 넣었을 때 재정의한 doGet메소드 출력 화면

url에 값을 직접 넣는 get방식으로 요청 시 doGet메소드가 실행된다.

 

 

POST방식을 활용한 로그인 코딩을 예시로 해보았습니다!

 

감사합니다.

Comments