Dev log - 58, Java #12, Servlet #2

박강산·2022년 6월 28일
0
post-thumbnail

Java Web

웹 사이트와 URL

  • URL 구성: protocol://host:port/path/file
  1. http://www.season.com:80/spring/april.html
  2. http://www.season.com/spring/april.html (port는 생략이 가능)
  3. http://www.season.com

HTTP 메소드

  • 요청 방식에 따라 크게 GET/POST 구분

  • GET 요청 방식

  1. 단순히 서버에게 자원(HTML, 이미지, 문서 등)을 URL을 통해 요청하는 방식, 필요한 데이터를 URL 뒤에 덧붙여 전송
  2. 데이터 크기 제약이 있으며 북마킹을 허용(지원)
  3. 브라우저 캐싱에 의한 보안 문제가 야기될 수 있음
  • POST 요청 방식
  1. 주로 폼에서 사용되는 방식으로, 웹 컨텐츠의 내용을 변경하기 위해 사용
  2. 필요한 데이터를 HTTP 요청의 메시지 바디를 통해 전송
  3. 데이터의 양이 많거나 URL에 노출되지 말아야할 때 사용

웹 애플리케이션

  • 웹 브라우저에서 유저와 상호작용을 하며 서비스를 이용할 수 있게 해주는 응용 소프트웨어

  • 웹 사이트 + Dynamic Working Service (CGI Processing)

  • CGI (Common Gateway Interface)

  1. 웹 서버에 존재하는 프로그램을 호출할 수 있는 기술
  2. Perl, C 등 다양한 언어로 작성
  3. Process Loading 방식
  • ASP.NET, Servlet/JSP

웹 서버 (Web Server)

  • 클라이언트가 요청한 정적인 콘텐츠를 HTTP 프로토콜을 통하여 제공해주는 서버

웹 컨테이너

  • 동적인 데이터들을 처리하여 정적인 페이지로 생성해주는 소프트웨어 모듈

  • 웹 컴포넌트(Servlet/JSP 등) 실행 관리를 위한 프레임워크
    ex) 톰캣, 레진, Glassfish 등

  • Servlet 컨테이너는 웹 컨테이너의 종류

  1. Servlet과 웹 서버간의 커뮤니케이션 지원
  2. Servlet 라이프사이클 관리
  3. 요청에 대한 멀티 스레딩 지원
  4. 보안 및 오류에 대한 처리 지원
  • 웹 서버에서 JSP를 요청하면 톰캣에서는 JSP 파일을 서블릿으로 변환하여 컴파일을 수행하고, 서블릿 수행결과를 웹서버에게 전달

WAS (Web Application Server)

  • 웹 서버로부터 오는 동적인 요청을 처리하는 서버, 웹 서버와 컨테이너를 붙여놓은 서버

Java Servlet

  • Maven Web으로 만든 프로젝트의 자바 폴더에서 새로운 프로젝트 작성 후,
    extends HttpServlet 입력

Servlet 실습 (구구단)

public class ForTest extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String pageTitle = "ForTest";
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("<head><title>" + pageTitle + "</title></head>");
		out.println("<body>");
		for (int i = 1; i < 10; i++) {
			for (int j = 1; j < 10; j++) {
				out.println("<div>" + i + "x" + j + "=" + i * j + "</div>");
			}
		}
		out.println("</body></html>");
		out.close();
	}
}
  • web.xml
<?xml version="1.0" encoding="utf-8" ?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/MXLSchema-instance"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	version="3.1">
	<display-name>Archetype Created Web Application</display-name>
	<servlet>
		<servlet-name>ForTest</servlet-name>
		<servlet-class>com.varxyz.jv300.mod002.ForTest</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>ForTest</servlet-name>
		<url-pattern>/fortest.view</url-pattern>
	</servlet-mapping>
</web-app>

profile
안녕하세요. 맡은 업무를 확실하게 수행하는 웹 개발자가 되기 위하여 끊임없이 학습에 정진하겠습니다.

0개의 댓글

관련 채용 정보