Servlet 과 web.xml 파일 활용 및 서버 Tomcat 실행

Yeppi's 개발 일기·2022년 5월 25일
0

Servlet&JSP

목록 보기
3/13

1. Servlet 파일 만들기

1) 서블릿 위저드(마법사)

  • 서블릿 파일
  • 패키지명과 클래스명 입력
  • 서블릿 클래스 이름 규칙 → 뒷글자 Servlet은 지우고, 앞글자 소문자로
  • /login 더블클릭 후, 아래처럼 바꿔줌
  • 생성자 만드는 여부 체크박스
    - doPost, doGet


2) import 오류 😇

  • javax 에서 오류

아래방법으로 시도해보았지만,,,, 실패,,,

  • Build Path
  • 알고보니... 버전 문제 였다
    👉 톰캣 10 버전부터는 jakarta 로 변경되어 오류가 났던 것이다.
    👉 ctrl+shift+Ojavaxjakarta로 변경해주면 오류가 해결!

제일 최신 버전은 가급적 알 수 없는 오류가 많으니 피하자...ㅠ
그래서 다음 실습에서는 톰캣 9버전으로 새로 깔았다...!
설치 방법은 Servlet&JSP 시리즈 1번과 동일하니 참고하자



2. Servlet class 작성

서블릿 클래스는 서버가 자동으로 객체 생성

  • 원래 자바에서는 LoginServlet servlet = new LoginServlet(); 을 한 후애
    servlet.deGet(), servlet.dePost() 가 필요함
  • 근데 서버(여기선 톰캣)에서 자동으로 객체가 생성해줌
    👉 즉, 내가 객체를 생성하지 않아도 서버가 객체 생성하여 메서드를 호출 ~ !
  • 브라우저의 HTTP 요청에 의해 GET, POST 방식 메소드(doGet, doPost)이 호출됨
// 내가 객체를 생성하지 않아도 서버가 객체생성하여 메서드 호출
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
 	public LoginServlet() {
        System.out.println("===> LoginServlet 객체 생성");
  	}

 	// doGet, doPost 는 오버라이딩된 상태
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("===> doGet() 호출");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("===> doPost() 호출");   
	}


3. web.xml 작성

1) 서블릿 자동 등록

  • 서블릿 위저드를 이용하여 서블릿 클래스를 생성하면
    web.xml 파일에 해당 서블릿이 자동으로 등록된다
<servlet>
    <description></description>
    <display-name>login</display-name>
    
    <servlet-name>login</servlet-name>
    <servlet-class>com.ssamz.web.user.LoginServlet</servlet-class>
 </servlet>
 <servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/login.naver</url-pattern>
 </servlet-mapping>
  • /login.naver 라는 요청에 대해서
    이름이 login이라는 LoginServlet 클래스의 객체가 생성되고 동작함
  • 서블릿 잘못 작성한 경우?
    서블릿 클래스 삭제하고, web.xml에 등록된 서블릿 설정도 같이 삭제해야
    ‘동일한 이름의 서블릿을 다시 만들 수 있음’
  • web.xml 을 수정하면?
    무조건 서버를 껐다가 다시 켜야함


2) 서버 실행 시, 로그 정보

  • 톰캣 생성까지(Catalina) 아무 문제 없는 상태
  • 톰캣서버는 서버 엔진(=서블릿 컨테이너) 을 내부적으로 생성
  • web.xml을 내부적으로 읽어들임
  • web.xml을 읽어들인 톰캣서버 안의 서블릿 컨테이너가 LoginServlet 실행


3) 서버 다시 로드

  • reloading이 되어야 내가 수정한 코드가 반영되는 것
  • 다시 로드될때까지 시간이 빠를때도, 느릴때도 있음
  • 아무 새로고침하고 기다려도 브라우저에 반영이 안된다면?
    서버를 다시 껐다 키기
profile
imaginative and free developer. 백엔드 / UX / DATA / 기획에 관심있지만 고양이는 없는 예비 개발자👋

0개의 댓글