컴퓨터는 잘못이 없다..

[JSP]서블릿1_서블릿 만들기(+경로 공부2) 본문

공부/JSP

[JSP]서블릿1_서블릿 만들기(+경로 공부2)

도토리까꿍v 2021. 1. 2. 20:13
Contents 접기

[예제코드 프로젝트 구조]

 

[예제코드 목표]

①다음의 뉴스탭 -> 뉴스를 들어가보았다. 

웹브라우저가 요청하고 있는 경로를 보자. 그 후 웹브라우저 -> 우클릭 -> 페이지 원본보기를 눌러보자!

 

② 경로를 보면 html파일을 요청하지도 않았는데 html을 response받은 것을 알 수 있다. 

 

③우리도 hello요청 링크를 클릭하였을 때 

④즉, 순수요청경로 hello를 요청했을 때 html format string을 java로 응답할 수 있도록 만들어보자!

⑤HelloServlet 클래스에서 /hello요청에 대해 어떤 내용을 응답할지에 대한 설계도를 작성해보자. 

 

[예제코드]

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/index.html</title>
<!-- bootstrap css로딩하기 -->
<link rel="stylesheet" href="css/bootstrap.css" />
</head>
<body>
<div class="container">
	<h1>인덱스 페이지 입니다.</h1>
	<ul>
		<li><a href="hello">hello요청</a></li>
		<li><a href="ya">ya요청</a></li>
	</ul>
</div>
</body>
</html>

 

HelloServlet.java

package test.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*

/hello 요청에 대해 응답을 할 서블릿 정의하기
1. HttpServlet 클래스를 상속 받는다.
2. service() 메소드 오버라이드 한다.
3. 어떤 요청을 처리할 지 어노테이션(@WebServlet)을 클래스 위에 작성한다. 


*/

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//클라이언트에게 문자열을 출력할 수 있는 객체의 참조값 얻어오기 
		PrintWriter pw=resp.getWriter();
		//클라리언트에게 문자열 출력하기 
		pw.print("hello~");
		pw.flush();
		pw.close();
		
	}
	
}

 

 

index.html실행결과

index.html에서 hello요청링크를 클릭했을 때 

[예제코드 설명]

 

01. HelloServlet.java 에서 /hello 요청에 대해 응답을 할 서블릿 정의하기
① HttpServlet 클래스를 상속 받는다. 

┌HelloServlet.java


② service() 메소드 오버라이드 한다.

┌HelloServlet.java

 

③ 어떤 요청을 처리할 지 어노테이션(@WebServlet)을 클래스 위에 작성한다. 

┌index.html과 HelloServlet.java

 

 

④resp.getWriter()로 클라이언트에게 문자열을 출력할 수 있는 객체의 참조값 얻어오기

--> 이때 resp.getWriter()의 리턴타입은 PrintWriter임!

┌HelloServlet.java

 

⑤클라이언트에게 문자열 출력하기 

┌HelloServlet.java

 

02. 톰캣이 HelloServlet클래스로 하는 일!

02_1. 우리는 이렇게 Servlet 부분 프로그래밍을 하고 나머지는 톰캣이 다해준다!

 

03. 주소창의 경로 확인하기!

/Step01/는 Context Path이고

/Step01/는 최상위 경로를 의미한다. 

 

┌경로 차이점 확인하기!!!!

 

 

[퀴즈]

YaServlet.java

package test.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/ya")
public class YaServlet extends HttpServlet{
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		PrintWriter pw=resp.getWriter();
		pw.print("ho~");
		pw.flush();
		pw.close();
	}
}

 

Comments