프로필사진
Servlet(2) - 예제를 통해 서블릿이해하기, 웹 어플리케이션의 구성요소

2019. 11. 3. 18:53🔴 JSP웹개발

300x250

이 흐름을 기억하면서 예제 만들어보기!


<hello.html>

<script>
function my_send() {
location.href="../hello?name="+$("#name").val();
/* ? -> 필요한 파일을 위해서 보내는 요청 정보*/
}
</script>
</head>
<body>
<input id="name" placeholder="이름을 적어 주세요">
<input type="button" value="전송" onclick="my_send()">
</body>

상대경로: ../ → hello.html에서 WebContent(=project의 root경로임)로 올라오게됨


<동적 요청>

http://localhost:9090/Chapter_servlet_v2.5/ : 웹 프로그램의 기본경로

hello?name=강다은 :

hello = 요청 url

?뒤 = 서버로 보낼 데이터

 

 

URL이란 ? 

 

URL 구성

URL : Uniform Resource Locator = 정형화 되어있는 . 데이터 . 위치 프로토콜) 전송 규약 - 데이터를 전송할때 지켜야하는 약속, 모든 서버가 표준을 지키도록! 컴퓨터의 IP주소) 해당 컴퓨터 식별 = 집주소 포..

kkangdda.tistory.com


<서버에서 요청을 받을 준비>

서블릿 = 자바 객체 → Java Resources의 src에서 만들어야 함

 

<HelloServlet.java>

package servlet;
mport java.io.IOException;
mport javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
//서블릿 기능을 하기 위해서는 HttpServlet을 상속받아야함
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	//service메소드 오버라이딩 해줘야함 (명목상만 메소드, 사실은 빈털털이!)
	
	//Hello.html의 name 값을 담아주기
	//client에서 보낸 데이터 -> servlet에서 사용하기
	String name = request.getParameter("name");
	
	//response=응답하는데에 활용하는 객체, setContentType=내용 설정하는 메소드
	//문서의 종류는 text, 확장자는  html
	//text를 utf-8로 디코딩 해라
	response.setContentType("text/html; charset=utf-8");
	
	//getWriter()리턴값 = printwriter
	//print()->응답할 데이터 집어넣음
	response.getWriter().print(name+"님 안녕하세요?");
	
	//***서버가 요청을 받으면, 데이터를 활용하여 html를 동적으로 생산함
	}
}

<중간 역할! web.xml>

/hello.html & HelloServlet.java 연결연결

name값 → 요청 → HelloServelet에게 일을 시키는 중간 일꾼

"hello로 요청을 받겠다!"

web.xml = Chapter_servlet_v2.5의 설정 정보를 담는 곳

  • display name = 이름이자 설명
  • welcome-file-list = WebContent으로 요청으로 하면, welcome-file-list에서 파일을 찾음 → 파일이 있으면 응답해줌

<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_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Chapter_servlet_v2.5</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>

***내가 추가해야 할 내용들***

<!--중간 일꾼에게 받을 내용의 정보를 공개하기! 요청처리할 객체에대한 정보-->
<servlet>
<description>개발자가 이 서블릿에 대한 설명을 적는 곳</description>
<display-name>개발자가 이 서블릿의 별명을 적어놓는 곳</display-name>
<!--이름 -->
<servlet-name>HelloServlet</servlet-name>
<!--전체 경로 -->
<servlet-class>servlet.HelloServlet</servlet-class>
</servlet>

<servlet-mapping>
<!--이 두개 매우 중요! 요청정보&요청처리할객체-->
<servlet-name>HelloServlet</servlet-name> (위의 servlet-name과 동일해야함!!)
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>

<다시 서버에 요청 보내기>

Tomcat이 web.xml을 통해서 감지함

 

흐름 중요중요!

/hello 라는 경로로 요청이 들어옴 → 처리할 객체 HelloServlet → <servlet>안에 있는 객체의 정보 → 실체 처리하는 객체는 <servlet-class>의 servlet.HelloServlet에 있음 (경로)

⇒ Tomcat은 HelloServlet.java의 클래스를 참조 → HelloServlet의 객체를 만들고 service()메소드를 자동으로 호출 → 응답객체 (setContentType), 데이터를 print로 만들어서 html으로 만들어서 브라우저에게 전송

⇒ 사용자에게 뿌려줌

300x250