개발자의 오르막

SW 심화과정 16일차 본문

교육과정 ( SW 개발자 심화과정 )/Java

SW 심화과정 16일차

계단 2019. 7. 30. 12:05

# Form

- <form method="POST" action="form_test2"></form>

- Form 태그를 통해 전송을 하면, URL에 /form_test2 라는 주소가 붙음

- web.xml 에 /form_test2 라는 url 패턴이 붙는 servlet-mapping 을 만든 후

  FormTestServlet 이라는 클래스를 만들어 연결함.

- response.sendRedirect 라는 함수를 통해 다음 페이지로 연결함

package study2;

import java.io.IOException;

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

public class FormTestServlet extends HttpServlet{

	@Override
	public void service(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException 
	{
		System.out.println("FormTestServlet");
		
		//  http://localhost:8081/study2/test_02.html
		//   /study2 는 콘텍스트의 경로,  그 다음 /는 파일경로
		response.sendRedirect("/study2/test_02.html");
	}
}

 

# 쓰레드의 개념

package study3;

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

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

/*
- 많은 사람들이 동시에 접속해도 동일한 문자열이 계속 찍힌다.
  동일한 인스턴스가 재사용되고 있다. (메모리 관리에 있어서 장점)
 */
public class LifeServlet extends HttpServlet {

	int i = 0;

	@Override
	protected void service(HttpServletRequest request, 
			HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println(this.toString());

		PrintWriter out = response.getWriter();
		out.println("<html><body>");

		synchronized (this) {
			i = i + 1;
			for (int i = 0; i < 50000; i++) {
				out.println(this.i);
			}
		}

		out.println("</body></html>");
		out.flush();
		out.close();
	}

}

- 서블릿을 동시에 여러 쓰레드가 공유할 수 있다는 걸 염두해야함.

  1. 로컬변수로 만들면, 공유 되는 것을 방지할 수 있음

      로컬변수는 함수 호출이 끝나면 자동 제거되기 때문

  2. syncrosized를 사용한 동기화를 통해 공유 되는 것을 방지할 수 있음

 

- 동시 요청시 여러개의 쓰레드가 하나의 서블릿 인스턴스를 사용할 수 있다.

- 모두 로컬변수로만 구현하든지 동기화를 잘 해 주어야 한다.

 

'교육과정 ( SW 개발자 심화과정 ) > Java' 카테고리의 다른 글

SW 심화과정 18일차  (0) 2019.08.02
SW 심화과정 17일차  (0) 2019.07.31
SW 심화교육 15일차  (0) 2019.07.29
SW 심화교육 12일차  (0) 2019.07.26
SW 심화교육 11일차  (0) 2019.07.25
Comments