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
관리 메뉴

개발 일기

JAVA Servlet(서블릿)이란?? (feat. form을 활용하여 get방식으로 login해보기) 본문

Servlet & JSP

JAVA Servlet(서블릿)이란?? (feat. form을 활용하여 get방식으로 login해보기)

개발 일기 2021. 8. 4. 22:21

 

안녕하세요.

 

오늘은 JAVA의 서블릿(Servlet)에 대해 정리해보며 지난번에 포스팅한(https://soonggi.tistory.com/60)

html의 form<>태그를 활용하여 login서비스를 만들어 시연해보겠습니다.

 

1. Servlet(서블릿)이란??

 - 정적(static)리소스(=html)를 -> 동적(dynamic) 리소스로 활용하는 JAVA에서 제공하는 클래스

 - html만 가지고서는 정해진 모습만 보여줄 수 있다면 html의 껍데기 안에 java의 기술을 합쳐서

   클라이언트(=브라우져 사용자)의 요청에 대한 응답을 해줄 수 있는 기술

 - 즉, 서블릿은 자바를 활용해서 웹을 만들기 위해 필요한 기술

 

2. Servlet의 특징

 - 클라이언트의 요청(requset)에 동적(dynamic)으로 대응하는 웹 어플리케이션 컴포넌트

 - html(=정적리소스)를 활용하여 클라이언트의 요청에 응답

 - HttpServlet 클래스를 상속받아 활용한다.

 

 

 

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


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

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>

<body>
<h1>로그인[GET]</h1>
<hr/>

<form action="get_login.do" method="get">
	ID:<input type="text" name="id" placeholder="아이디"><br/>
	PW:<input type="password" name="pass" placeholder="패스워드"><br/><br/>
	<input type="submit" value="로그인">
	<input type="reset" value="폼데이타지우기">
</form>
</body>
</html>

 - form 태그를 해석하면 "submit" 버튼 [로그인]을 클릭 시 action="get_login.do"에 맞추어 상대경로 이동을 함

 - 즉 ID와 PW가 "get_login.do"에서 유효성 검사를 통과 할 시 로그인 성공 처리 하면 됨

 

-- 결과 브라우저 화면


 

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("/get_login.do")
public class GetLoginServlet extends HttpServlet {
	
	protected void doGet(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>아이디, 패스워드를 입력하세요[GET]</h1><hr>");
			out.println("<a href ='05-01.login_get.html'>로그인폼</a>");
			return;
		}
		
		boolean isMember1 = id.equals("xxx")&&pass.equals("1111");
		boolean isMember2 = id.equals("yyy")&&pass.equals("2222");
		
		out.println("<h1>GET로그인결과</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-01.login_get.html'>다시로그인</a>");
		}
	}
}

★Servlet을 실행하기위한 기본 3단계

  1. ~ extends HttpServlet -> HttpServlet 클래스를 상속받으면 

    HttpServletRequest request, HttpServletResponse response 객체를 사용 가능

 

  2. response.setContentType("text/html;charset=UTF-8");

   => response(응답객체)의 컨텐츠타입을 설정

 

  3. PrintWriter out = response.getWriter();

   => PrintWriter 클래스 상속받아 out 객체 사용하여 출력 시 활용

 


★ID, PW의 유효성 검사 코드 작성

  1. 요청 시 전송되는 파라메타 값 받음(request 객체 활용)

   => String id = request.getParameter("id");

    => form태그를 통해 넘어오는 id값을 String id에 담아서 활용

 

 

  2. 전송되는 파라메타 값이 없이 넘어오면 얼럿 문구 리턴

  => if(id==null || pass==null || id.equals("") || pass.equals("")) {
           out.println("<h1>아이디, 패스워드를 입력하세요[GET]</h1><hr>");
           out.println("<a href ='05-01.login_get.html'>로그인폼</a>");
           return;
       }

 

*ID, PW없이 넘어온 출력 화면

 

 

  3. id, pw값을 설정 후 일치하게 들어오면 성공 리턴, 아니면 실패 리턴

   => boolean isMember1 = id.equals("xxx")&&pass.equals("1111");

        boolean isMember2 = id.equals("yyy")&&pass.equals("2222");

   => 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-01.login_get.html'>다시로그인</a>");
        }

 

 

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

로그인 폼에 isMember1의 데이터 값 대입

로그인 성공 출력 화면

 

로그인 실패 출력 화면

 

 

즉, Servlet을 이용하면 JAVA 기능을 활용하여 동적(Dynamic)으로 활용이 가능하다.

 

다만, GET방식을 활용하면 입력받은 데이터 값을 URL에 출력시켜 Login을 활용하는데는 옳지 않음

다음번에는 POST방식을 활용하여 Login을 하는 Form과 Class를 구성해 포스팅해보겠습니다.

 

감사합니다.

Comments