본문 바로가기
개발/세상에서 가장 간단한 로그인

2-3. 클라이언트가 입력한 정보 Servlet에 불러오기

by 하모예 2020. 10. 22.

(이 글은 기본적으로 Eclipse, Sql Developer가 설치, 인코딩 처리, 서버 등록이 완료된 상태를 가정하고 작성되었습니다.)

  • 사용 기술 : Java, JSP, Oracle, Bootstrap, CSS, HTML
  • 오늘의 기술 : JAVA
  • 사용 툴 : Eclipse

안녕하세요 하모예입니다. 

지난 포스팅까지 JSP 파일을 만들고, 인코딩 처리, 단방향 암호화 처리까지 해줬습니다. 

이번 포스팅은 클라이언트가 입력한 정보를 Servlet에 불러오고, 이클립스 콘솔창에 띄워보는 것까지 해보겠습니다. 

먼저 아래와 같이 src에 login.controller, login.model.dao, login.model.service, login.model.vo 패키지를 만들어주세요.

지금은 아주 간단한 프로젝트이기 때문에 MVC에 맞춰서 로직을 구성할 필요는 없지만, 

프로젝트가 커지면 커질수록 패키지를 나눠서 상호간에 결합도를 낮추는 게 매우 중요합니다. 

login.controller 패키지에서 우클릭을 한 후 [New] - [Servlet]을 클릭해주세요. 

Class name은 LoginServlet으로 간단하게 작성해주시고 Next를 눌러주세요. 

Next를 누르면 URL mappings 를 입력할 수 있습니다. 

Servlet이름과 동일하게 디폴트로 입력되어 있는 /LoginServlet을 더블클릭하시거나, 

우측에 Edit 버튼을 눌러주신다음 Pattern을 JSP form태그에서 action값에 적었던 url을 입력해줍니다. 

우리의 경우는 /login이라고 적어주세요.

Servlet을 생성한 다음 doGet에 작성되어 있는 다음과 같은 코드를 지우고, 

String userId = request.getParameter("userId");

String userPw = request.getParameter("userPw");

System.out.println("아이디 : " + userId);

System.out.prinln("비밀번호 : " + userPw);

로 바꿔주세요. 

//아래 코드 삭제
response.getWriter().append("Served at: ").append(request.getContextPath());
//doGet 다음과 같이 변경
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String userId = request.getParameter("userId");
		String userPw = request.getParameter("userPw");
		System.out.println("아이디 : "+ userId);
		System.out.println("비밀번호 : "+userPw);
	}

서블릿을 만들어주고 난 다음에 작동 테스트를 할 때는 반드시 서버를 내렸다가 올려줘야 합니다. 

서버를 내렸다가 올려줬는데도 변경사항이 반영되지 않을 경우 서버를 다시 내린 다음

Servers에서 우클릭해서 Clean resources on the server를 해주고 서버를 다시 올려주세요.

아이디, 비밀번호 창에 각각 user01, 1234를 입력하고 Login 버튼을 눌러줍니다. 

그러면 마법처럼 콘솔 창에 내가 입력한 값이 찍힙니다. 

근데, 뭔가 이상하네요?

우리 분명히 비밀번호를 단방향 암호화 처리해준 것 같은데 반영이 되지 않았어요. 

Encryptor Listener에 servlet names를 어노테이션 처리해놓고

정작 반영되어야 할 Servlet에는 이름을 달아주지 않았기 때문이에요. 

다시 서블릿으로 가서 WebServlet 어노테이션을 다음과 같이 바꿔줍시다. 

@WebServlet(name="login", urlPatterns="/login")

여기서 주의하실 사항은 서블릿에서 수정사항이 있을 경우에는 서버를 다시 내렸다가 올릴 필요는 없지만,

컨텍스트 로드가 완료된 후에 새로고침을 해야 해당 변경사항이 반영이 됩니다. 

수정사항을 저장하고 바로 새로고침을 하면 반영되지 않은 채로 동작하니 주의하세요!!

비밀번호가 빌 게이츠 고조할아버지가 와도 풀 수 없는 이상한 글자로 바뀌었다면 성공입니다.

다음 포스팅에서는 JDBC 라이브러리를 반영하고, 회원정보 데이터에 접근할 객체인 Member를 만들어보겠습니다.

댓글