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 = 요청 url
?뒤 = 서버로 보낼 데이터
URL이란 ?
<서버에서 요청을 받을 준비>
서블릿 = 자바 객체 → 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
'🔴 JSP웹개발' 카테고리의 다른 글
JSP(1) - JSP 스크립트 요소 (0) | 2019.11.08 |
---|---|
Servlet(5) - Servlet vs JSP (0) | 2019.11.05 |
Servlet(4) - 서블릿의 생명주기 + 예제 (0) | 2019.11.04 |
Servlet(3) - Dynamic web module version 2.5 vs 3.1 (0) | 2019.11.04 |
Servlet(1) - 웹서비스 구조, 개발환경 구축 (0) | 2019.11.03 |