톰캣으로 서블릿 연결 방법
1) 서블릿 기반의 웹 어플리케이션인 웹프로젝트 생성
File - New - Dynamic Web Project
2) 톰캣의 servlet-api.jar 클래스 패스를 설정
우클릭 → Bulid Path -> Configure Build Path -> Libraries Tab -> Add External JARs..
Tomcat 폴더 -> lib/servlet-api.jar
서블릿 API는 tomcat 의 servlet-api.jar 라이브러리로 제공 되므로, 클래스 패스를 설정해야 사용할 수 있습니다. 톰캣의 서블릿 api 경로를 라이브러리에 지정 해줍니다.
연결 준비가 끝났다면 서블릿을 생성합니다. 서블릿의 생성 과정을 간단하게 순서로 정리하면 아래와 같습니다.
< 서블릿의 생성과정 >
1. 사용자 정의 클래스 생성
2. 서블릿 메서드 구현
3. 서블릿 맵핑 작업
4. 웹 브라우저에서 서블릿 맵핑 이름으로 요청
1) 사용자 정의 서블릿 클래스를 생성
Java Resources → New → Servlet 패키지와 함께 클래스 생성
2) 서블릿 메서드 구현하기
- HttpsServlet : GenericServlet 을 상속 받아 HTTP 프로토콜을 사용하는 웹 브라우저에서 서블릿 기능을 수행합니다.
- 초기화 : init() 서블릿 요청시 한번만 호출
- 작업수행 : doGet() , doPost() 는 둘 중 하나는 필수로 있어야 하며, 서블릿 요청시 매번 호출됩니다. 실제로 클라이언트가 요청하는 작업을 수행
- 종료 : destrory() 서블릿 기능을 수행하고 메모리에서 소멸될 때 수행
3) 서블릿 맵핑 작업
프로젝트 우클릭 Java EE Tools -> Generate Deployment Descriptor Stub
webapp - WEB-INF 폴더 안에 web.xml 의 파일이 생성된걸 볼 수 있습니다.
맵핑 작업은 하단에 위치한 Source 에서 코드를 입력할 수 있습니다.
4) 웹 브라우저에서 서블릿 맵핑 이름으로 요청
여기서 Java Resources 에 있는 클래스와 webapp의 html 파일을 서블릿을 통하여 서버 연결을 해주는 코드를 입력합니다.
<!-- 2) 브라우저에서 요청하는 맵핑 이름에 대해서 실제로 기능을 수행하는 서블릿 클래스를 설정한다 -->
<servlet>
<servlet-name>param</servlet-name> <!-- (response 응답) -->
<servlet-class>ex03.ParamServlet</servlet-class> <!-- 패키지명.클래스명 -->
</servlet>
<!-- 1) 런타임시 요청이 들어오면 컨테이너는 <servlet-mapping> 항목을 검색 -->
<servlet-mapping>
<servlet-name>param</servlet-name><!-- (request 요청) -->
<url-pattern>/paramServlet</url-pattern><!-- /웹 브라우저에서 요청하는 이름-->
</servlet-mapping>
맵핑 작업에서는 <servlet> <servlet-mapping> 태그를 연결 시켜주기 위해서
servlet-mapping 의 servlet-name과 servlet의 servlet-name 태그와 값이 동일해야합니다.
<servlet-mapping>
<servlet-name> : 요청하는 임의의 클래스명
<url-pattern> : 웹 브라우저에서 링크란에 보여지는 이름
<servlet>
<servlet-name> : 요청받은 클래스 명
<servlet-class> : 응답할 패키지명.클래스명
- Java Resources 의 패키지와 .java
- webapp의 .html
- webapp - WEB-INF - web.xml
// method=get , doGet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 웹 브라우저에서 전송된 데이터 인코딩 설정
request.setCharacterEncoding("UTF-8"); //정보 request 객체로
// 전송 데이터
// - getParameter() 메서드를 사용해서 <input> 태그의 name 속성값으로 전송된 value 를 가져온다.
String name = request.getParameter("userName");
String stnAge = request.getParameter("userAge");
int age = Integer.parseInt(stnAge);
// 응답
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
.java의 코드는 다음과 같습니다.
- doGet : form 태그의 메서드 ‘get’의 형태로 입력된 정보를 받습니다.
- request (요청) request.setCharacterEncoding("UTF-8") : request 객체로 받은 데이터 인코딩 설정
- request.getParameter() : form 태그안의 input태그의 name의 속성값의 value를 받습니다.
.html 의 <form method="get" action="Servlet url"></form>
// 값이 여러개일 때는 배열로 처리합니다. String[] arr = request.getParameterValues("");
- Integer.parseInt() : java와 js 언어를 둘 다 사용할 수 있습니다. (정수 타입으로 형변환)
- response (응답) response.setContentType() : html 의 타입과 인코딩을 거쳐줍니다.
- PrintWriter out = response.getWriter(); : 입력된 데이터를 출력합니다. 아래에 응답 형태의 <html> 코드를 작성합니다.
별도의 맵핑 과정없이 코드 한줄로 처리할 수도 있습니다.
* annotation
- 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공한다.
- 실행시(런타임시) 특정 기능을 실행하도록 정보를 제공한다.
// annotation 을 이용해서 서블릿 등록
@WebServlet("/memberServlet") //서버의 맵핑 처리를 한 줄로 입력할 수도 있다.
이상 서블릿의 생성과 과정에 대하여 알아보았습니다.
'Java' 카테고리의 다른 글
[JSP] JSP 란? jdk 버전 변경하는 방법 (0) | 2023.03.27 |
---|---|
조건문 (if, else if, switch) 정리하기 (0) | 2023.01.08 |
자바 접근제한자,상속이란? 상속받는 법 extends, super() (0) | 2023.01.07 |
break; continue; (0) | 2023.01.05 |
[Java] 이클립스 인코딩하는 방법 한글 깨짐 현상 (0) | 2022.12.21 |