Developer/Spring eGov4.0 (Java11, Tomcat9)

Java Servlet을 활용한 간단한 로그인 구현

단님 2024. 11. 5. 11:01
728x90
로그인 기능은 웹 어플리케이션에서 자주 사용되는 핵심 기능중 하나이다.
Servlet 과 , MVC 패턴을 활용하여 간단한 로그인 구현을 알아보자.

 

HTML From 작성

사용자에게 sno 와 name 이라는 값을 받기 위한 폼을 작성한다.

actionmethod 속성에 유의하여 post 요청이 전송되도록 설정한다.

<form action="/web01/login" method="post">
   <table>
      <tr height="30"><td><label for="sno">SNO</label></td>
         <td><input type="text" id="sno" name="sno"></td>
      </tr>
      <tr height="30"><td><label for="name">Name</label></td>
         <td><input type="text" id="name" name="name"></td>
      </tr>
      <tr height="30"><td></td>
         <td><input type="submit" value="로그인">&nbsp;&nbsp;
            <input type="reset" value="취소">
         </td>
      </tr>
   </table>
</form>

 

Servlet 구현

action 경로인 /web01/login 을 처리하는 서블릿을 구현한다.

서블릿 처리
- post 요청에 대한 한글처리 인코딩
- 서비스 처리 : 학생 정보 조회
- 결과 처리( 조회 성공시 로그인 처리 , 실패시 재로그인 유도)
  • 한글처리 및 파라미터 처리
request.setCharacterEncoding("UTF-8");
HttpSession session = request.getSession(); // 세션 객체 생성
int sno = 0;
if (request.getParameter("sno") != null && request.getParameter("sno").length() > 0) {
    sno = Integer.parseInt(request.getParameter("sno"));
}
String name = request.getParameter("name");
String uri = "home.html";
  • 서비스 처리
StudentService service = new StudentService();
StudentDTO dto = service.selectOne(sno);
  • 결과 처리
if (dto != null && dto.getName().equals(name)) {
    System.out.println("sno와 name이 DB 내용과 일치.");
    System.out.println(dto);
    response.sendRedirect(uri);
} else {
    System.out.println("sno와 name이 DB 내용이 일치하지 않거나 잘못된 내용.");
    uri = "servletTestForm/flowEx04_LoginForm.jsp";
    request.setAttribute("message", "로그인 실패. 다시 시도하세요.");
    request.getRequestDispatcher(uri).forward(request, response);
}