Servlet - 2
- 한글처리를 하자.
- 서버가 reload가 가능하도록 하자. 개발할 때만 이렇게 한다. --> 수정하면 바로바로 적용되도록 한다.
- context.xml을 수정하면 tomcat의 모든 application에 반영된다.
- http://127.0.0.1:8080/servlet/net.cjedu.hello.HelloServlet 이렇게 실제로 url에 경로를 노출시키는 것은 위험한 짓이다. 별칭을 지어서 이용하자.
- D:\tomcat5.5\webapps\ROOT\WEB-INF\web.xml 추가한다.
- 접속해 보자
- XML 기본 설명
- eXtensible Markup Language
- 구성요소 : element
- 내용이 없다면
- XML 문서의 유형
- Parsing, Parser
- Well-Formed 규칙
- 반드시 하나 이상의 element를 가져야 한다.
- 반드시 root element는 하나이어야 한다.
- 모든 태그는 시작 태크와 종료 태그로 이루어져야 한다.(빈 태그 가능)
- 속성은 시작 태그에만 올 수 있다.
- 속성은 이름="값" or '값' 형태이어야 한다.
- not overLap
- XML 선언부는 문서의 제일 첫번째 와야 한다.
- case sensitive
- HTTP 프로토콜
- HTTP 메소드 (실행할 액션)
- 접근하고자 하는 URL
- 폼 파라미터 (메소드의 매개변수와 비슷함)
- 상태코드 ( 요청 처리에 대한 성공여부)
- 컨텐츠 타입 (텍스트, 그림, HTML 등)
- 컨텐츠 (HTML 코드, 이미지 등)
- Servlet API
- servlet 을 만들 때는 HttpServlet 을 상속받아 만들고 생성자 대신 init()메소드를 사용한다.
- 서블릿 라이프 사이클 >> 중요 메소드
- 컨테이너 에서 서블릿 객체를 생성한 다음에 호출한다. service() 이전에 실행
- 서블릿을 초기화
- 초기화할 내용(DB 접속 등)이 있는 경우 재정의
- 클라이언트의 요청 후 컨테이너에서 쓰레드를 이용하여 호출
- 요청의 HTTP 메소드(GET, POST등)를 참조하여 해당 메소드(doGet(), doPost() 등) 호출 판단
- 거의 재정의 하지 않음
- service() 메소드에서 HTTP 메소드(GET, POST)를 참조하여 호출
- 비즈니스 로직을 구현 또는 호출
- 두 메소드 중 하나는 반드시 재정의하여 구현해야 한다.
- 구구단 출력
mime type 에 charset=euc-kr 추가를 한다.
resp.setContentType("text/html; charset=euc-kr");
D:\tomcat5.5\conf\context.xml 을 편집하자.
<Context reloadable="true">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
</Context>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>net.cjedu.hello.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello.view</url-pattern>
</servlet-mapping>
http://127.0.0.1:8080/hello.view
http://127.0.0.1:8080/servlet/net.cjedu.hello.HelloServlet 이렇게 접속하지 않아도 된다.
<tag이름 속성이름="값" 속성이름2="값2">
내용
</tag이름>
<tag이름 속성이름="값" 속성이름2="값2" />
|
DTD/Schema |
DTD/Schema |
형식을 잘 지킨 경우 |
well formed document, validation |
well formed document, no validation |
형식을 잘 지키지 |
not well formed document, validation |
not well formed document, no validation |
■ HTTP 프로토콜 : TCP/IP 를 기반으로 하여 웹에서 사용하는 프로토콜로서 요청(Request) 과 응답(Response) 데이터를 전송하는 방식
■ HTTP 요청(Request) 주요 구성요소
■ HTTP 응답(Response) 주요 구성요소
■ GET 메소드 : 단순한 자원(HTML 문서, 이미지 등) 요청. 간단한 파라미터 정도만 HTTP 요청 시 사용
■ POST 메소드 : 사용자의 입력값을 HTTP 요청 시 서버에 전달. 복잡한 파라미터 사용 가능
■ init()
■ service()
■ doGet() 또는 doPost()
테이블 형태이로 별칭은 gugu.view
package net.cjedu.hello;
import java.io.*;
import java.util.*;
import javax.servlet.http.*;
import javax.servlet.*;
public class Gugu extends HttpServlet{
public void init() throws ServletException{
System.out.println("HelloServlet's init..................");
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException{
resp.setContentType("text/html; charset=euc-kr");
PrintWriter out = resp.getWriter();
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>");
out.println("구구단");
out.println("</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("<h1>구구단</h1>");
out.println("<table border='1'>");
for(int j = 1; j < 10; j++){
out.println("<tr>");
for (int i = 1; i < 10; i++ ){
out.print("<td>" + i + " * " + j + " = " + i*j + "</td>");
}
out.println("</tr>");
}
out.println("</table>");
out.println("</BODY>");
out.println("</HTML>");
out.close();
}
}
===
D:\tomcat5.5\webapps\ROOT\WEB-INF\web.xml 추가
<servlet>
<servlet-name>Gugu</servlet-name>
<servlet-class>net.cjedu.hello.Gugu</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Gugu</servlet-name>
<url-pattern>/gugu.view</url-pattern>
</servlet-mapping>
===================================================================