Project Explorer에서 우클릭 후 Dynamic Web Project 클릭
project name 설정 후 next 2번 누르고 Generate web.xml deployment descriptor 체크 후 finish를 눌러주어 생성한다.
웹 서버 프로그램
가고자하는 위치 : 롯데타워
실제 위치 : 서울특별시 송파구 잠실6로 올림픽로 300
찾고자 하는 사이트 주소 : naver.com
실제 주소 : 125.209.222.142
프로토콜 도메인 포트번호 폴더, 파일명
http:// localhost 8080 jsp/Hello.jsp
facebook.com 80 news/index.html
WAS서버는 동적인 자료를 처리하는 서버이다.
sever를 더블 클릭하면 Overview를 볼 수 있다.
기본 포트는 오라클 리스너 포트와 동일하기 때문에 포트 충돌이 난다.
포트 변경 후에 server에서 우클릭한 다음에 restart를 누른다.
server startup이라는 문구가 console창에 뜨면 서버가 start가 된 것이다.
modules를 선택한다.
server를 선택하고 edit를 누른다.
처음 기본 값은 '/프로젝트명'으로 되어 있을 것이다.
이것을 경로 요청 시, 간단하게 하기 위하여 '/' 로 변경해준다.
✔ servlet 역할을 하는 라이브러리 가져오기
✔ 서블릿 클래스 만들기 & 서블릿 등록하기
MyServlet.java
package com.koreait.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// 프론트 단(웹)에서 자바영역으로 myservlet 클래스를 호출한다.
// -> service 메서드에서 그 요청을 받기로 약속이 되어있음
// -> 약속되어있는 라이브러리를 임포트해서 사용
public class MyServlet extends HttpServlet { // Servlet의 역할을 하기위해서는 HttpServlet 추상 클래스를 상속받는다.
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
// HttpServletRequest 요청 객체, HttpServletResponse 응답 객체
// 사용자가 요청보낸 데이터는 request에 담기고 사용자에게 응답보낼 데이터는 response에 담긴다.
// 사용자가 보낸 데이터를 꺼낼 때는 request에서 꺼내고 사용자에게 보여주고 싶은 데이터를 response에 담기만 하면
// 라이브러리 안에서 알아서 사용자에게 전달한다.
throws ServletException, IOException {
// 설계된 약속에 맞춰 service 메서드 안에 작업하고 싶은 내용을 작업하면 된다.
PrintWriter out = response.getWriter();
// 문자열 출력 -> java io에 있는 printwriter 클래스를 가지고 객체 생성
// response안의 getWriter메서드를 호출하여 out 객체에 할당
out.println("Hello Servlet");
}
} // -> servlet 클래스로 사용 가능
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>day01</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!--
welcom file은 디폴트 되어있는 값
그래서 index.html을 요청보낼 때는 index.html을 쓰지 않아도 요청 가능
-->
<!-- 서블릿 등록 -->
<servlet>
<servlet-name>mServlet</servlet-name>
<servlet-class>com.koreait.web.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>mServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<!--
사용자 url 요청 : http://localhost:9090/hello
url 패턴의 /hello로 요청이 들어오고,
servlet의 mServlet으로 요청이 가고,
com.koreait.web.serbvlet.MyServlet 이 경로에 있는 클래스가 호출된다.
-->
</web-app>
결론
url 패턴의 /hello로 요청이 들어옴 -> servlet-mapping 태그의 url-pattern의 /hello를 캐치 -> mServlet이라는 servlet-name을 찾아감 -> servlet 태그의 mServlet으로 감 -> MyServlet 클래스로 요청이 넘어감 -> HttpServletRequest 객체에서 받아오고 HttpServletResponse 객체에 "Hello Servlet"이라는 문자열을 담아 응답을 넘겨줌