JAVA Servlet(서블릿)이란?? (feat. form을 활용하여 get방식으로 login해보기)
안녕하세요.
오늘은 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 입력 후 로그인 성공 & 실패 출력 화면
즉, Servlet을 이용하면 JAVA 기능을 활용하여 동적(Dynamic)으로 활용이 가능하다.
다만, GET방식을 활용하면 입력받은 데이터 값을 URL에 출력시켜 Login을 활용하는데는 옳지 않음
다음번에는 POST방식을 활용하여 Login을 하는 Form과 Class를 구성해 포스팅해보겠습니다.
감사합니다.